Project/p1. Streamlit application

모바일어플리케이션 사용여부 예측 - 스트림릿 웹페이지 구현 ①

하니__ 2024. 12. 5. 14:48

 

 

 

 

모바일어플리케이션 사용여부 예측 - 데이터 전 처리 & 머신러닝 모델 학습

스트림릿을 이용하여 웹페이지를 개발하고 AWS EC2를 이용하여 배포해보자   우선 데이터셋은 https://www.bigdata-culture.kr/bigdata/user/data_market/detail.do?id=9f027c94-92fd-4eeb-bf1c-7532f9c8375e 문화빅데이터

hani08.tistory.com

 

 

 

 

 

이전 글을 참고하여 다음으로 넘어가자

 

 

 

 

일단 여러가지 하기에 앞서

 

각 어플리케이션의 사용인원과 사용률이 어떻게 되는지 보여주고 싶다

 

df_numeric = df.iloc[:, :17+1].apply(lambda col: col.str.count('Y'))
sum_result = df_numeric.sum()
usage_rate = (sum_result / 64024 * 100).round(2)
sum_result = sum_result.to_frame(name='사용인원')
sum_result['사용률'] = usage_rate.apply(lambda x: f"{x:.1f}%")

st.dataframe(sum_result)

 

각 컬럼별 Y갯수를 카운트해주고

카운트한 것들을 모두 더하여 사용인원을 체크해준다
앞서 구한 사용인원을 데이터갯수로 나누고 100을 곱하여 사용률 계산을 해준뒤(소수점 2째자리에서 반올림하자)


넷째 줄에서 둘째줄에서 구한 사용인원수를 데이터프레임으로 변환
다섯째 줄에서 셋째 줄에서 구한 사용률 데이터프레임에 추가해주자

 

 

그러면 아래와같이 확인이 가능하다

 

 

 

 

그리고 이번엔

 

각 카테고리를 선택하면 그 카테고리에 속한 데이터그룹별로

 

각 어떤 어플리케이션을 사용하는지에 대한 데이터프레임,

 

그룹별 인원수, bar차트, pie차트를 구현해보자

 

 

 

categories = ['성별', '나이', '결혼', '월_소득', '거주지역']
selected_category = st.selectbox('카테고리 선택', categories)

 

 

를 통해서

 

카테고리를 선택 할 수 있도록 만들어주자

 

 

 

 

앞서 선택한 그룹의 데이터를 보여주기 위해

 

 

grouped_data = df.groupby(selected_category)

 

그룹바이로 묶어준 뒤에

 

 

 

 

 

 

for group_name, group_data in grouped_data:
    st.subheader(f'{selected_category}: {group_name} 의 데이터프레임')
    st.write(group_data)
    num_rows = group_data.shape[0]
    st.info(f'{selected_category}: {group_name} 그룹의 인원 수 : {num_rows: ,} 명')

    for col in binary_columns:
        df[col] = df[col].map({'Y': 1, 'N': 0})

    selected_df = group_data[binary_columns].apply(lambda x: x.map({'Y': 1, 'N': 0}))


    bar_data = selected_df.sum().sort_values(ascending=False)
    fig_bar = px.bar(x=bar_data.index, y=bar_data.values, title=f'{selected_category}: {group_name} 의 어플 사용인원수')
    fig_bar.update_xaxes(tickangle=320)
    st.plotly_chart(fig_bar)

    fig_pie = px.pie(values=bar_data.values, names=bar_data.index, title=f'{selected_category}: {group_name} 의 어플 사용 비율', hole = 0.2)
    st.plotly_chart(fig_pie)

 

for문을 사용하여 각자의 데이터를 보여주도록 하자

 

각 컬럼의 값들이 0과 1로 바꾸어져있기 때문에

1과 0을  Y와 N으로 다시 바꿔주는 작업을 하고

 

데이터 프레임을 보여주도록 하자

 

 

그리고 각각의 bar차트와 pie차트도 보여주도록 하자

 

 

 

 

 

그러면 위에서 한번 카테고리로 선택한 그룹별로 보는것이 가능하다