Seaborn
Matplotlib 기반 통계 시각화 라이브러리
쉬운 문법과 깔끔한 디자인
시각화 목적과 방법에 따라 API를 분류하여 제공
- Categorical, Distribution, Relational, Regression, Matrix…
기초 실습
공통 parameter
countplot
Categorical API에서 범주를 이산적으로 세서 막대 그래프로 그려줌
x & y
sns.countplot(x='race/ethnicity', data=student)
sns.countplot(y='race/ethnicity',data=student)
sns.countplot(x='race/ethnicity',data=student, order=sorted(student['race/ethnicity'].unique()))
- order를 이용해 막대의 순서를 정렬할 수 있음
hue
색상을 의미
hue=’gender’
을 추가해 그룹 내에서 성별로 나눠 색으로 구분
- countplot에 pallete를 이용해 색상 변경 가능
color를 통해 단일 색상으로 표현 가능
- 앞 예시와 다르게 x가 gender, hue가 race
이 때, hue_order을 통해 순서 지정 가능
- matplotlib 처럼 ax를 지정해 그래프 show 가능
- countplot에 ax를 지정
Categorical API
기본적인 데이터 통계량
pandas의 describe()
- count, mean, std, min
- 25% (lower quartile), 50% (median), 75% (upper qualtile)
- max
Box Plot
sns.boxplot
- box 내부의 선이 중앙값을 의미
- box의 왼쪽 변이 25%, 오른쪽 변이 75%
- IQR (interquartile range) : 파란 박스 전체 범위
- whisker : 박스 외부의 범위를 나타내는 선, IQR 양 옆 1.5%
- 왜 box 양 옆으로 길이가 다른가?
- min : -IQR * 1.5 보다 크거나 같은 값들 중 최솟값
- max : +IQR * 1.5 보다 작거나 같은 값들 중 최댓값
- outlier : whisker에서 벗어난 값
- hue를 이용해 비교 가능
- width(box 너비), linewidth(선 두께), fliersize(outlier 크기)를 이용해 custom 가능
Violin Plot
box plot은 대표값은 잘 보여주지만 분포 확인은 어려움
sns.violinplot
- 가운데 흰 점이 median, 굵은 선이 25% ~ 75%, 얇은 선이 whisker
- histogram 형태
- 연속적 표현에서 없는 데이터가 있는 것처럼 표현될 수 있음
- bw(band width) : 분포 표현을 얼마나 자세히 할 것인가
º 0.2가 default
º 현재 그래프는 0.1
- cut : 끝 부분을 얼마나 자를 것인가
- default는 0
- cut=10이면 -10부터 110까지 표현
- inner : 내부를 어떻게 표현할 것인가
- 위 그래프는
inner=’quartile’
- “box”, “quartile”, “point”, “stick”, None 으로 표현 가능
- scale
- area, width, count로 plot 조정 가능
violinplot 외에도
- sns.boxenplot : box 형태로 나타냄 (histogram 느낌)
- swarmplot : scatter 형태로 나타냄
- stripplot : 직선 막대에 scatter를 뿌려놓은 형태
Distributional API
1) Univariate Distribute
한 개의 feature에 대한 distribution (단일 확률 분포)
histplot
기본적인 막대 histogram
sns.histplot
- bins는 막대 개수로 조정
- binwidth는 막대 사이 간격으로 조정
kdeplot (Kernel Density Estimate)
sns.kdeplot
- violinplot의 절반과 같은 모양
fill=True
로 내부를 칠할 수 있음
by_method=0.05
로 분포를 더 자세히 표현 가능 , 내부 값은 유저가 조정
- histplot과 동일하게 multiple을 조정해 여러 kdeplot을 비교 가능
cumulative=True
를 이용해 데이터를 쌓은 형태를 볼 수 있음
- 초록색 그래프의 경우 수학점수 50에서 밀도가 급증하는 것을 확인
ecdfplot
누적되는 데이터의 양을 표현
바로 위 cumulative와 비슷한 형태
nugplot
조밀한 정도를 통해 밀도를 나타냄
2) Bivariate Distribution
다변수 분포
histplot
- 구간을 나눠 확인 가능
bins=(10, 20)
으로 가로축, 세로축을 지정한 수로 분할할 수 있음
kdeplot
bw_method=0.1
로 분포 표현 정도 조정 가능
Relation & Regression API
Scatter Plot
style, hue, size로 조정 가능
Line Plot
- 12달에 대한 데이터를 한 번에 넣어주면 알아서 나눠서 보여줌
- hue, style, makrer, dash 로 조정 가능
Regplot
회귀선을 추가한 scatter plot
sns.regplot
x_estimator=np.mean
으로 평균을 이용한 추세선을 그림
- 보여지는 점들의 개수를
bins
로 조정 가능
order=2
2차원 회귀선, logx=True
로그 회귀선
Matrix Plots
Heatmap
주로 상관관계 시각화에 많이 사용
sns.heatmap
- correlation matrix를 data로 input
- corr 값은 -1 ~ 1이므로
vmin=-1
, vmax=1
center=0
을 통해 중간 값을 지정 가능
- 색의 명확한 차이를 보여주기 위해
cmap=’coolwarm’
을 이용해 쿨웜 컬러맵 사용
annot=True
, fmt=’ .2f’
를 이용해 각 값을 annotation할 수 있으며, format도 지정
mask를 이용해 대칭행렬에서 하삼각행렬만 나타낼 수 있음
※ 모든 이미지 및 코드 출처는 네이버 커넥트재단 부스트캠프 AI Tech 5기입니다. ※