Visualization - Seaborn
2022. 3. 18. 09:29ㆍPython
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")