본문 바로가기
Python/Data Visualization

[Plotly] Kaggle Survey Data 시각화 기초

by ISLA! 2023. 8. 10.

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