Visualization - Seaborn

2022. 3. 18. 09:29Python

Seaborn이란?

  • matplotlib을 기본으로 다양한 시각화 기법을 제공하는 라이브러리
  • pandas DataFrame과 매우 호환이 잘 됨
  • matplotlib에서 지원하지 않는 다양한 형태의 시각화도구를 제공
  • 예시 : histplot, kdeplot, jointplot, Facetgrid, ...

 

 

# 패키지 설치
!pip install seaborn
# 패키지 import
import seaborn as sns

sns.set_theme(style='whitegrid')
  • penguins 데이터 불러오기
penguins = sns.load_dataset("penguins")
penguins

 

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 모두 출력이 가능
# penguin 데이터에 displot을 출력합니다.
sns.displot(data=penguins, x="flipper_length_mm", hue="species", col="species")

sns.distplot(df['loan_amnt'])


Barplot

  • 어떤 데이터에 대한 값의 크기를 막대로 보여주는 plot (a.k.a. 막대그래프)
  • 가로 / 세로 두 가지로 모두 출력 가능
  • 히스토그램과 구별
sns.barplot(data=penguins, y="body_mass_g", x="species", hue='species')

sns.barplot(df['sub_grade'].value_counts().sort_index().index,df['sub_grade'].value_counts().sort_index().values)

Countplot

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

sns.countplot(df['grade'])

Boxplot

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

Scatterplot

sns.scatterplot(df['loan_amnt'],df['installment'],hue=df['grade'])
# hue : 데이터 범례표시해주는 옵션

jointplot

  • loan_amnt, int_rate의 scatter plot + hist plot의 결합형태인 joint plot
sns.jointplot(df['loan_amnt'],df['int_rate'],kind='hex')

#kind : kde, hist, hex, leg

pairplot

  • 각 변수간 상관관계를 확인하는 scatterplot의 확장버전
  • 데이터프레임의 모든 변수에 대한 상관관계를 그리드 형태의 scatter로 표현
sns.pairplot(df)

heatmap

  • 각 변수간 상관관계를 모두 확인하고자 하는 목적은 pairplot과 같으나, scatterplot 형태가 아닌 상관계수를 계산하여 열지도로 표현
  • 각 변수간 관계를 한눈에 보기 좋은 형태
sns.heatmap(df.corr())

Violinplot

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

 

'Python' 카테고리의 다른 글

Visualization - Matplotlib  (0) 2022.03.23
Class  (0) 2022.03.21
Pandas  (0) 2022.03.18
Numpy  (0) 2022.03.18
Function  (0) 2022.03.18