Seaborn 튜토리얼 공부(1)
by Holly Yoon이번주엔 데이터 시각화를 중심으로 matplotlib, seaborn, plotly등을 배웠다. 강사님이 seaborn튜토리얼을 쭉 읽어보면서 공부해보면, 어떤 라이브러리를 쓰더라도 가장 중심이 되는 뼈대를 이해할 수 있다라고 추천해주셨다. 그래서 시작해본다!
Introduction to seaborn
- Seaborn은 파이썬에서 사용할 수 있는 통계 그래픽 라이브러리. matplotlib 기반으로 만들어졌다.
- Seaborn 사용법
# seaborn 불러오기
import seaborn as sns
# 기본 테마를 세팅
sns.set_theme()
# 예제 데이터 불러오기
tips = sns.load_dataset("tips")
# 시각화 만들기
sns.relplot(
data=tips,
x="total_bill", y="tip", col="time",
hue="smoker", style="smoker", size="size",
)
- Seaborn 테마는 이 문서를 참고하여 바꿔볼 수 있다
Statistical Estimation
sns.lmplot(data=tips, x="total_bill", y="tip", col="time", hue="smoker")
- lmplot()을 사용하면 선형회귀 모델을 활용하여 산점도(scatterplot)을 보강할 수 있다
Distributional Representations
- 변수의 분포를 시각화할 수 있다. 히스토그램, KDE같은 계산법 기술도 지원한다.
sns.displot(data=tips, x="total_bill", col="time", kde=True)
- KDE에 대한 자세한 설명은 이 블로그를 참고했다
- 밀도추정이란 관측된 데이터의 분포로부터 원래 변수의 분포 특성을 추정하고자 하는 것
- 통계에서 밀도는 일반적으로 확률밀도를 의미하며, 밀도를 추정한다는 것은 어떤 변수의 확률밀도함수를 추정한다는 것이다.
- 확률밀도함수를 구한다면, 그 변수가 가질 수 있는 값의 범위 및 확률분포, 특성을 모두 알 수 있다.
- 대부분의 현실세계에서는 분포 모델을 미리 알 수 없기에, 순수하게 관측된 데이터만으로 확률밀도를 추정하게 되는데, non-parametric밀도 추정의 가장 간단한 방법은 히스토그램이다.
- 관측된 데이터로부터 히스토그램을 구해서 히스토그램을 정규화해서 확률밀도함수로 사용한다.
- 히스토그램은 경계의 불연속, bin크기 및 시작위치의 오차, 고차원 데이터에서는 메모리 문제로 인해 여러 painpoint가 있다.
- KDE는 커널함수를 활용하여 히스토그램의 문제점을 해결한다.
- 관측 데이터 값을 중심으로 커널 함수를 생성 -> 이렇게 생성된 함수를 더해 전체 갯수를 나누는 형태
- KDE를 통해 얻은 확률밀도함수는 히스토그램 확률밀도함수를 스무딩한 것으로 볼 수 있다.
Plots for categorical data
- 범주형 축을 두고 분포를 보여준다. 다양한 수준의 세분화를 제공한다
sns.catplot(data=tips, kind="swarm", x="day", y="total_bill", hue="smoker")
Multivariate views on complex datasets
- 정보요약을 제공하는 다양한 차트의 도표를 결합해서 보여줄 수 있다.
- jointplot : 각 변수의 분포를 보여준다.
- pairplot : 더 넓은 뷰를 보여주는데, 각 쌍에 대한 분포를 보여준다.
Opinionated defauls and flexible customaization
- Seabron은 한번의 함수 호출에 완전한 그래프를 그려주는데, 입력된 label에 따라 자동적으로 그래프의 디자인을 적용하기도 한다. (ex, 범주형 변수의 hue는 다양한 색상이지만, 수치형 변수가 들어오면 gradient로 적용됨)
sns.set_theme(style="ticks", font_scale=1.25)
g = sns.relplot(
data=penguins,
x="bill_length_mm", y="bill_depth_mm", hue="body_mass_g",
palette="crest", marker="x", s=100,
)
g.set_axis_labels("Bill length (mm)", "Bill depth (mm)", labelpad=10)
g.legend.set_title("Body mass (g)")
g.figure.set_size_inches(6.5, 4.5)
g.ax.margins(.15)
g.despine(trim=True)
sns.relplot(
data=penguins,
x="bill_length_mm", y="bill_depth_mm", hue="body_mass_g"
)
Relationship to matplotlib
- matplotlib과 연동을 지원하기 때문에, matplotlib의 개념과 API에 대한 사전지식이 있다면, 커스터마이징이 가능하다.
'Python' 카테고리의 다른 글
데이터 시각화 교과서 요약 (0) | 2023.02.09 |
---|---|
[TIL] 230131 파이썬 데이터시각화(1) (1) | 2023.02.01 |
(8) 프로그래머스 코딩테스트 Lv1 - 파이썬 (0) | 2023.01.17 |
파이썬 복습 - Unpack/예외처리 (0) | 2023.01.08 |
(7) 프로그래머스 코딩테스트 Lv1 - 파이썬 (0) | 2023.01.08 |
블로그의 정보
Study Log by Holly
Holly Yoon