이번 포스팅에서는 .csv 파일을 Pandas를 이용해서 불러온 데이터에 대해서 Boxplot , ViolinPlot을 그리는 방법에 대해서 정리하도록 하겠습니다.
먼저 데이터를 불러오겠습니다.
먼저 Seaborn을 이용하기 이전에 matplotlib을 이용해서 seaborn을 그려보도록 하겠습니다.
데이터의 시각화는 성별에 따라서 보험비용의 청구 비용을 비교하기 위한 것으로 정해보겠습니다.
따라서 먼저 성별별로 데이터를 분류해보겠습니다.
male_Flag = [sex == 'male' for sex in insurance['sex']]
male_DF = insurance.loc[insurance[male_Flag].index]
male_DF = male_DF.reset_index(drop=True)
female_DF = insurance.drop(insurance[male_Flag].index)
female_DF = female_DF.reset_index(drop=True)
여기서 각 데이터에 대해서 charge 데이터를 대상으로 boxplot을 그려보겠습니다.
fig , axes = plt.subplots(1,2 , figsize=(16, 6))
axes[0].set_title('Male Charges' , fontsize=15)
axes[0].set_ylabel('Charges' , fontsize=12)
male_DF['charges'].plot.box(ax = axes[0])
axes[1].set_title('Female Charges' , fontsize=15)
axes[1].set_ylabel('Charges' , fontsize=12)
female_DF['charges'].plot.box(ax = axes[1])
plt.show()
하지만 이는 속성의 남성 혹은 여성 뿐이므로 이러한 과정이 쉬었지만 혹시 속성의 종류가 많게 된다면 이러한 방법으로는 시각화 하기가 어렵습니다.
이 때 Seaborn을 이용하면 쉽게 바로바로 시각화할 수 있습니다.
fig , axes = plt.subplots(1 , 2, figsize = (16 , 6))
axes[0].set_title('Boxplot' , fontsize = 15)
sns.boxplot(x = 'sex' , y = 'charges' , data = insurance , ax = axes[0])
axes[1].set_title('Violinplot' , fontsize = 15)
sns.violinplot(x = 'sex' , y = 'charges' , data = insurance , ax = axes[1])
plt.show()
위에서의 핵심 코드는 아래와 같습니다.
sns.boxplot(x = 'sex' , y = 'charges' , data = insurance , ax = axes[0])
x 로는 성별에 해당되는 이산적인 속성을 넣어주고
y로는 저희가 구분하고자 하는 보험 청구 비용의 속성을 넣어줍니다.
그리고 data는 처음 불러왔던 pandas dataframe을 넣어줍니다.
또한 boxplot 뿐만 아니라 violinplot 또한 아래와 같이 약간의 수정으로 그려볼 수 있습니다.
sns.violinplot(x = 'sex' , y = 'charges' , data = insurance , ax = axes[1])
위에서 그린 Boxplot으로 성별간의 보험 청구 비용을 구분해본다면 남성의 경우 보험 청구 비용이 여성의 경우보다 더 많다라는 것을 확인할 수 있습니다.
'Python' 카테고리의 다른 글
Python - Matplotlib을 이용해서 데이터 시각화 하는 방법 (0) | 2020.11.05 |
---|---|
Python - 기존 그래프의 확대 부분 같이 그리기 (1) | 2020.11.01 |
Python - 상관행렬을 이용한 각 속성간의 연관성 파악하기 (0) | 2020.11.01 |
Python - Opencv 를 이용한 얼굴 검출하기 (0) | 2020.11.01 |
Python - 데이터프레임에서 바로 그래프 그리기 (0) | 2020.11.01 |