Python/Data Visualization
[Plotly] Kaggle Survey Data 시각화 기초
ISLA!
2023. 8. 10. 15:16
Kaggle Survey Data 시각화
0. 데이터 가져오기
import pandas as pd
df = pd.read_csv('./data/kaggle/kaggle_survey_2021/kaggle_survey_2021_responses.csv')
df.head()
1. 원하는 데이터 추출
#질문데이터 한 줄만 따로 뽑기
questions = df.iloc[0, :].T
#나머지 데이터(인덱스 1번 이후)정리
df = df.iloc[1:, :].reset_index(drop=True)
#1번 설문문항의 답을 따로 시리즈로 뽑아내기
q1_df = df['Q1'].value_counts()
#1번 질문이 뭐였는지 간단히 확인
questions.Q1
>>'What is your age (# years)?'
2. 그래프 시각화
fig = go.Figure()
fig.add_trace(go.Bar(name = "Age", x = q1_df.index, y = q1_df.values))
fig.show()
👉 아래와 같이 그래프가 내림차순으로 나타난다.
➡ 이를 x값의 오름차순 기준으로 보고싶다면?
#기본 그래프
fig = go.Figure()
fig.add_trace(go.Bar(name = "Age", x = q1_df.index, y = q1_df.values))
print(fig.show('json'))
#styling update
CATEGORY_ORDER = ["18-21", "22-24", "25-29", "30-34", "35-39", "40-44", "45-49", "50-54", "55-59", "60-69", "70+"]
fig.update_layout(plot_bgcolor = 'white', font = dict(color = "#333333"),
title = dict(text = "Title"),
xaxis = dict(title = "your X-AXIS TITLE", linecolor = "#21DBAA", categoryorder = "array", categoryarray = CATEGORY_ORDER),
yaxis = dict(title = "your Y-AXIS TITLE", linecolor = "#DB9021")
)
#print(fig.show('json'))
fig.show()
🔰 추가 예제 : 성별/연령별 사람수 시각화
- 전체 데이터에서 원하는 부분 추출
- 특정 컬럼의 값들을 변경(replace함수 사용)
- Q1, Q2 를 기준으로 groupby 하여, 각 그룹의 개수를 size() 로 확인, 컬럼명은 "Count"로 수정
q1_q2_df = df.loc[:, ["Q1", "Q2"]].replace({'Prefer not to say':'etc', 'Nonbinary':"etc", "Prefer to self-describe": "etc"})
q1_q2_df = q1_q2_df.groupby(['Q2','Q1']).size().reset_index().rename(columns = {0:"Count"})
q1_q2_df.head()
#그래프 시각화(반복문 사용)
fig = go.Figure()
for gender, group in q1_q2_df.groupby('Q2'):
fig.add_trace(go.Bar(x = group['Q1'], y = group['Count'], name = gender))
fig.update_layout(barmode='group', plot_bgcolor = 'white')
fig.show()
728x90