Milky's note

[K-Digital] Seaborn 본문

Python/요약 정리

[K-Digital] Seaborn

밀뿌 2022. 5. 18. 15:37

Seaborn이란?

  • matplotlib을 기본으로 다양한 시각화 기법을 제공하는 라이브러리.
  • pandas DataFrame과 매우 호환성이 높음
  • e.g. sns.xxxplot(data=df) <--- 기본세팅!
# 라이브러리와 데이터를 불러오고, 시각화를 위한 세팅
import seaborn as sns
import matplotlib.pyplot as plt

sns.set_theme(style='whitegrid')
penguins = sns.load_dataset("penguins")
# seaborn에서 기본으로 제공하는 데이터셋
penguins

 

  species island bill_length_mm bill_depth_mm flipper_length_mm bpdy_mass_g sex
0 Adelie Torgersen 39.1 18.7 181.0 3750.0 Male
1 Adelie Torgersen 39.5 17.4 186.0 3800.0 Female
2 Adelie Torgersen 40.3 18.0 195.0 3250.0 Female
3 Adelie Torgersen NaN NaN NaN NaN NaN
4 Adelie Torgersen 36.7 19.3 193.0 3450.0 Female
  ... ... ... ... ... ... ...
339 Gentoo Biscoe NaN NaN NaN NaN NaN
340 Gentoo Biscoe 46.8 14.3 215.0 4850.0 Female
341 Gentoo Biscoe 50.4 15.7 222.0 5750.0 Male
342 Gentoo Biscoe 45.2 14.8 212.0 5200.0 Female
343 Gentoo Biscoe 49.9 16.1 213.0 5400.0 Male

344 rows × 7 columns

Histplot

  • 가장 기본적으로 사용되는 히스토그램을 출력하는 plot.
  • 전체 데이터를 특정 구간별 정보를 확인할 때 사용
# penguin 데이터에 histplot을 출력
sns.histplot(data=penguins, x="flipper_length_mm",hue="species", multiple="stack")
 
 

Displot

  • distribution들을 여러 subplot들로 나눠서 출력해주는 plot.
  • displot에 kind를 변경하는 것으로, histplot, kdeplot, ecdfplot 모두 출력이 가능. e.g. displot(kind="hist")
# penguin 데이터에 displot을 출력
sns.displot(data=penguins, x="flipper_length_mm",hue="species", col="species")
# 위에있는 hisplot와 다른 점은 col을 사용해서 각각 나누어서 출력을 할 수 있다.
 
 

Barplot

  • 어떤 데이터에 대한 값의 크기를 막대로 보여주는 plot. (a.k.a. 막대그래프)
  • 가로 / 세로 두 가지로 모두 출력 가능
# penguin 데이터에 barplot을 출력합니다.
# sns.barplot(data=penguins, x="flipper_length_mm", y="species", hue="species")
# sns.barplot(data=penguins, y="flipper_length_mm", x="species", hue="species")
sns.barplot(data=penguins, y="body_mass_g", x="species", hue="species")
 

Countplot

  • 범주형 속성을 가지는 데이터들의 histogram을 보여주는 plot.
  • 종류별 count를 보여주는 방법
# penguin 데이터에 countplot을 출력합니다.
sns.countplot(data=penguins, x="sex", hue="species")
 

Boxplot

  • 데이터의 각 종류별로 사분위 수(quantile)를 표시하는 plot.
  • 특정 데이터의 전체적인 분포를 확인하기 좋은 시각화 기법
  • box와 전체 range의 그림을 통해 outlier를 찾기 쉬움 (IQR : Inter-Quantile Range)
# penguin 데이터에 boxplot을 출력합니다.
# sns.boxplot(data=penguins, x="flipper_length_mm", y="species", hue="species")
# sns.boxplot(data=penguins, x="body_mass_g", y="species", hue="species")
sns.boxplot(data=penguins, x="flipper_length_mm", y="species", hue="sex")
 
 

Violinplot

  • 데이터에 대한 분포 자체를 보여주는 plot.
  • boxplot과 비슷하지만, 전체 분포에 대한 그림을 보여준다는 점에서 boxplot과 다름
  • 보통 boxplot과 함께 표시하면, 평균 근처에 데이터가 얼마나 있는지(boxplot) 전체적으로 어떻게 퍼져있는지(violinplot) 모두 확인가능
# penguin 데이터에 violinplot을 출력합니다.
sns.violinplot(data=penguins, y="flipper_length_mm", x="species", hue="species")
 

Lineplot

  • 특정 데이터를 x, y로 표시하여 관계를 확인할 수 있는 plot. (선 그래프)
  • 수치형 지표들 간의 경향을 파악할 때 많이 사용
# penguin 데이터에 lineplot을 출력합니다.
sns.lineplot(data=penguins, x="flipper_length_mm", y="body_mass_g", hue="species")
 
 

Pointplot

  • 특정 수치 데이터를 error bar와 함께 출력해주는 plot.
  • 수치 데이터를 다양한 각도에서 한 번에 바라보고 싶을 때 사용
  • 데이터와 error bar를 한 번에 찍어주기 때문에, 살펴보고 싶은 특정 지표들만 사용하는 것이 좋음
# penguin 데이터에 pointplot을 출력합니다.
sns.pointplot(data=penguins, y="flipper_length_mm", x="sex", hue="species")
 
 

Scatterplot

  • lineplot과 비슷하게 x, y에 대한 전체적인 분포를 확인하는 plot.
  • lineplot은 경향성에 초점을 둔다면, scatterplot은 데이터 그 자체가 퍼져있는 모양에 중점을 둠
# penguin 데이터에 scatterplot을 출력합니다.
sns.scatterplot(data=penguins, x="body_mass_g", y="flipper_length_mm", hue="species")
sns.scatterplot(data=penguins, x="bill_length_mm", y="bill_depth_mm", hue="sex")
 

Pairplot

  • 주어진 데이터의 각 feature들 사이의 관계를 표시하는 Plot.
  • scatterplot, FacetGrid, kdeplot을 이용하여 feature간의 관계를 잘 보여줌
  • 각 feature에 대해 계산된 모든 결과를 보여주기 때문에, feature가 많은 경우 사용하기 적합하지 않음
# penguin 데이터에 pairplot을 출력합니다.
#sns.pairplot(data=penguins, hue="species")
sns.pairplot(data=penguins, hue="sex")
 

Heatmap

  • 정사각형 그림에 데이터에 대한 정도 차이를 색 차이로 보여주는 plot.
  • 말 그대로 heatmap이기 때문에, 열화상카메라로 사물을 찍은 것처럼 정보의 차이를 보여줌
  • pairplot과 비슷하게 feature간 관계를 시각화할 때 많이 사용

 

# 각 feature간 상관관계를 파악하기 위해 Correlation matrix를 만듭니다.
import pandas as pd
corr = penguins.corr()
# 상관관계 지수 구해주는 함수  corr()
 
# penguin 데이터에 heatmap을 출력합니다.
sns.heatmap(corr)
 
 
 
Comments