ABOUT ME

-

  • [판다스&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

     

    댓글