seaborn plot 정리
Nov. 8, 2022, 7:07 p.m.
머신러닝에서 데이터 EDA를 진행할 때 가장 유용하게 쓰는 seaborn 라이브러리, 그 중에서도 가장 간단한 plotting method 들에 대해서 알아보도록 하자.
먼저 seaborn에서 내부적으로 제공하는 titanic 데이터를 불러온다.
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import seaborn as sns
titanic = sns.load_dataset('titanic')
.
1. histplot()
먼저 히스토그램이다. 특정 column을 골라서 해당 컬럼의 수 분포를 히스토그램으로 나타내준다. bins는 구간의 개수를 의미한다.
sns.histplot(titanic, x='age', bins=10)
.
여기에 hue='alive' 을 넣으면 alive의 값에 따라서 색을 다르게 보여준다. 또한 multiple='stack' 까지 추가하면 색 별로 곂치지 않고 쌓아서 보여준다.
sns.histplot(titanic, x='age', hue='alive', multiple='stack')
.
2. displot()
두번째는 분포도이다. 히스토그램이랑 사실 다를 바가 없다. 다만 추가적인 기능을 제공한다.
sns.displot(titanic, x='age', kde=True)
kde=True 옵션을 넣어서 커널밀도추정 함수(히스토그램을 부드럽게 만든 함수라고 생각하면 된다.) 도 그리게 했다.
.
3. barplot()
이놈은 범주형 데이터를 시각화하는데 유용하게 쓰이는 플롯이다. x에 범주형 데이터를 넣고 y에 각 범주별 분포를 보고싶은 수치를 넣는다. 막대의 높이는 평균, 검은색 세로줄은 신뢰 구간을 나타낸다.
sns.barplot(x='class', y='fare', data=titanic)
.
4. pointplot()
pointplot은 barplot과 동일한 정보를 표시하지만 간단하게 선과 점으로만 구성된다. 얘네는 선으로 계속 이어지므로 연속된 추세를 보고 싶을 때 사용할 수 있다.
sns.pointplot(x='class', y='fare', data=titanic)
.
5. boxplot()
개인적으로 EDA 할 때 수치 분포를 한번에 보기 제일 편한 plot이라고 생각한다. 4분위 수를 통한 하위 25%부터 상위 25%까지의 값 분포를 상자로 보여주고 일정한 최대 최소값 범위, 그리고 이것을 벗어나는 이상치 까지 점으로 보여준다.
sns.boxplot(x='class', y='age', data=titanic)
.
6. violinplot()
얘는 boxplot이랑 비슷한데 세로를 커널밀도함수로 만들어서 분포를 더 잘 볼 수 있는 장점이 있다.
sns.violinplot(x='class', y='age', data=titanic)
.
7. countplot()
얘는 boxplot이랑 똑같이 생겼는데 다른 점이라면 범주형 데이터 별 특정 데이터의 분포를 보는 것이 아니라 그냥 범주형 데이터의 클래스 별 개수를 표시한다.
sns.countplot(y='class', data=titanic)
.
8. heatmap()
히트맵도 굉장히 많이 사용하는 플롯인데, 보통은 공분산 행렬을 구해가지고 변수 별 상관관계를 볼 때 많이 사용했던 것 같습니다.
df = sns.load_dataset('car_crashes')
sns.heatmap(np.corrcoef(df.iloc[:, :-1].values.T))
.
9. lineplot()
두 수치 사이의 선형 관계를 나타내는 plot이다. 기본적으로 추정이 가능할 경우 95% 신뢰구간 범위도 같이 알려준다. 아래 그래프는 그냥 선만 플롯되었다.
sns.lineplot(x='alcohol', y='total', data=df)
.
10. scatterplot()
산점도를 표시해주는 scatterplot이다. 각 축을 지정해주면 점으로 표시해준다. 또한 hue로 범주별 색을 나눌 수 도 있다.
tips = sns.load_dataset('tips')
sns.scatterplot(x='total_bill', y='tip', hue='time', data=tips)
.
11. regplot()
scatterplot이랑 똑같은데 선형 회귀 라인을 동시에 그려주는 함수이다. 상관관계를 더 알 수 있다.
sns.regplot(x='total_bill', y='tip', data=tips)