-
[판다스&Seaborn] 데이터 시각화 (line, bar, relplot, catplot, violinplot, boxplot)데이터 분석 2021. 9. 12. 18:48
선 그래프와 막대 그래프
판다스를 이용하여 그래프를 그리고자 한다. 데이터는 앞서 사용한 전국 아파트 분양 가격을 이용한다.
# 지역명으로 분양 가격의 평균을 구하고 선 그래프로 시각화 한다. g = df_last.groupby(["지역명"])["평당분양가격"].mean().sort_values(ascending=False) g.plot()
# 지역명으로 분양 가격의 평균을 구하고 막대 그래프로 시각화 한다. g.plot.bar(rot=0, figsize=(10, 3))
# 전용면적으로 분양가격의 평균을 구하고 막대그래프로 시각화 한다. df_last.groupby(["전용면적"])["평당분양가격"].mean().plot.bar()
# 연도별 분양가격의 평균을 구하고 막대그래프(bar)로 시각화 합니다. df_last.groupby(["연도"])["평당분양가격"].mean().plot.bar()
box-and-whisker plot
5가지 요약 수치를 그린다.
- 최솟값
- 제 1사분위수
- 제 2사분위수( ), 즉 중앙값
- 제 3 사분위 수( )
- 최댓값
df_last.pivot_table(index="월", columns="연도", values="평당분양가격").plot.box()
Seaborn으로 시각화 하기
- pandas로 할 때와 seaborn으로 할 때, 데이터의 형태가 달라야 시각화가 잘 된다.
- pandas는 멀티 인덱스 값을 unstack 해서 그려야 잘 나온다.
- pandas는 인덱스에 있는 값을 알아서 x축으로 보여준다.
- seaborn은 unstack 상태일때 그래프가 잘 나온다.
- seaborn으로 그릴 때는 melt를 해서 컬럼의 값들이 행으로 오도록 녹인다.
- seaborn에서도 멀티인덱스일 때, 인덱스 값으로 x, y 축 값을 지정 할 수 있다. (melt가 되어있으면 수월)
# seaborn을 import 하기 import seaborn as sns
# barplot으로 지역별 평당분양가격을 그려봅니다. plt.figure(figsize=(10, 3)) # 막대 위에 검은 색은 ci(confidence interval) 값을 뜻한다. # ci의 기본값은 95%이며 cd="sd"는 표준편차 값을 보여준다. # ci는 추정치를 사용하므로 계산이 오래 걸릴 수 있다. sns.barplot(data=df_last, x="지역명", y="평당분양가격", ci="sd")
# barplot으로 연도별 평당분양가격을 그린다. sns.barplot(data=df_last, x="연도", y="평당분양가격")
Put legend out of the figure
# lineplot으로 연도별 평당분양가격을 그린다. # hue 옵션을 통해 지역별로 다르게 표시한다. plt.figure(figsize=(10, 5)) sns.lineplot(data=df_last, x="연도", y="평당분양가격", hue="지역명") plt.legend(bbox_to_anchor=(1.02, 1), loc=2, borderaxespad=0.)
sns.relplot(data=df_last, x="연도", y="평당분양가격", hue="지역명", kind="line", col="지역명", col_wrap=4, ci=None)
catplot으로 구현하기
sns.catplot(data=df_last, x="연도", y="평당분양가격", kind="bar", col="지역명", col_wrap=4)
relplot과 catplot의 차이점
catplot과 relplot이 서브플롯을 생성할 때, FacetGrid를 그려주는 역할을 한다. catplot은 범주형 변수에 대한 서브플롯을 그리고, relplot은 수치형 변수에 대한 서브플롯을 그려준다.
boxplot과 violinplot
# hue옵션을 주어 전용면적별로 다르게 표시해 봅니다. plt.figure(figsize=(15, 5)) sns.boxplot(data=df_last, x="연도", y="평당분양가격", hue="전용면적")
# 연도별 평당분양가격을 violinplot으로 그려봅니다. # violinplot은 밀도 추정 그래프를 세로로 세워놓은 모양이다. sns.violinplot(data=df_last, x="연도", y="평당분양가격")
GitHub - DAWUNHAN/DataAnalysisInPython
Contribute to DAWUNHAN/DataAnalysisInPython development by creating an account on GitHub.
github.com
'데이터 분석' 카테고리의 다른 글
[상권 정보 분석] 전처리 과정 (0) 2021.09.13 [데이터 시각화] 히트맵 및 swarmplot (0) 2021.09.12 [데이터전처리] 컬럼이 다른 데이터셋 병합하기 (0) 2021.09.12 [판다스] pivot table로 데이터 집계하기 (0) 2021.09.12 [판다스] 아파트 분양 가격 데이터 분석 (0) 2021.09.10