빅데이터분석👨‍💻/Study

수치형 변수의 시각화 - Barplot()

xoghks_h 2023. 12. 27. 18:17

 seaborn은 matplotlib로 바로 그린 그래프보다 가독성이 좋고, 폭 넓은 커스터마이징이 가능해서 애용하는 시각화 라이브러리다. set_theme()를 통해 배경, 폰트와 같은 기본 설정을 할 수 있고, set_palette()를 통해 그래프 컬러 조합을 선택할 수 있다.

seaborn palette 예시

 

Choosing color palettes — seaborn 0.13.0 documentation

Choosing color palettes Seaborn makes it easy to use colors that are well-suited to the characteristics of your data and your visualization goals. This chapter discusses both the general principles that should guide your choices and the tools in seaborn th

seaborn.pydata.org

 

# 시각화 환경 세팅
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme(style='whitegrid', font_scale=1.5)
sns.set_palette('Set2', n_colors=10)
plt.rc('font', family='malgun gothic')
plt.rc('axes', unicode_minus=False)
df = pd.read_pickle('data/03_seoul_accident_full.pkl')
df.head()
        사고번호      사고년도 사고월  사고일  사고시각   사고요일    시군구_대범주   시군구_소범주  사고내용  사망자수   ...   피해운전자차종   피해운전자남성여부   피해운전자연령   피해운전자상해정도      주말여부  대형사고여부  고속국도사고여부  음주사고여부  무면허사고여부  뺑소니사고여부
0   A2019010100100001   2019     1       1     0.000000      1          강서구      강서구 방화동   경상사고     0      ...      보행자             True                40                경상           False       0.0             0.0             0.0          0.0              0.0
1   A2019010100100002   2019     1       1     0.000000      1          구로구      구로구 고척동   경상사고     0      ...       승용              True                71                경상           False       0.0             0.0             0.0          0.0              0.0
2   A2019010100100003   2019     1       1     0.000000      1          서초구      서초구 서초동   경상사고     0      ...       화물              True                51                경상           False       0.0             0.0             0.0          0.0              0.0
3   A2019010100100019   2019     1       1     0.041667      1          중구        중구 회현동2가  경상사고     0      ...       승용              True                62                경상           False       0.0             0.0             0.0          0.0              0.0
4   A2019010100100020   2019     1       1     0.041667      1          성동구      성동구 행당동   경상사고     0      ...      보행자             True                32                경상           False       0.0             0.0             0.0          0.0              0.0

 

Barplot()

 

 barplot()은 기본적으로 bar 그래프의 형태를 띄고 있으며, x축에 범주형 변수를 선언하고 y축에 수치형 변수를 선언해 해당 x축 범주 별 평균 y축 수치를 나타낸다. 그래프의 상단 가운데 위치한 굵은 실선은 error line으로, 오차범위를 나타낸다. 데이터의 양이 많을수록 짧게 표시되며 신뢰할 수 있는 그래프라는 의미를 지닌다. 반대로 표본이 적어 신뢰도가 떨어지는 경우 실선의 길이가 길어진다. 표시하고싶지 않다면 errwidth=0으로 설정하면 된다.

plt.figure(figsize=(10,10))
sns.barplot(y='중상자수', data=df);

 

plt.figure(figsize=(15,10))
sns.barplot(x='사고유형_대범주', y='중상자수', data=df);

 

plt.figure(figsize=(15,10))
sns.barplot(x='사고유형_대범주', y='중상자수', hue='가해운전자남성여부', data=df);

 

plt.figure(figsize=(15,10))
plt.xticks(rotation=90)
sns.barplot(x='가해운전자차종', y='음주사고여부', data=df);