Python 데이터 시각화
- 데이터 시각화: 데이터를 그래프나 차트 등 시각적 형태로 표현하는 과정.
- matplotlib: Python의 대표적인 표준 시각화 라이브러리. 다양한 정적/동적 시각화 가능. 디테일한 수정에 유리.
- seaborn: matplotlib을 기반으로 하며, 더 아름답고 통계적으로 의미 있는 고급 시각화를 간편하게 제공.
- 임포트:
import matplotlib.pyplot as plt
import seaborn as sns
히스토그램 (Histogram)
- 데이터를 구간(bin)별로 나눠, 각 구간의 빈도수를 막대그래프로 표현.
sns.histplot(x='열이름', data=데이터프레임)
sns.histplot(x='price', data=df)
커널 밀도 추정 (Kernel Density Estimation)
- 데이터의 분포를 부드러운 곡선으로 추정하여 시각화.
sns.kdeplot(x='열이름', data=데이터프레임)
sns.kdeplot(x='price', data=df)
데이터 포인트와 함께 표시 (Rug Plot)
- 데이터의 실제 위치를 축 위에 작은 선(rug)으로 표시.
- 밀도 그래프와 함께 사용하면 분포를 더 정확히 이해할 수 있음.
sns.kdeplot(x='price', data=df)
sns.rugplot(x='price', data=df)
히스토그램 + 커널 밀도 추정
- 히스토그램과 밀도 추정 곡선을 함께 표시.
kde=True 옵션 사용.
sns.histplot(x='price', data=df, kde=True)
ECDF (Empirical Cumulative Distribution Function)
- 경험적 누적 분포 함수.
- 구간 설정(bin)이 필요 없고, 데이터의 분위수를 파악하기 쉬움.
sns.ecdfplot(data=df, x="price")
모델별 비교 (hue 옵션)
hue 인자에 범주형 변수를 지정하여 그룹별로 색상을 다르게 표현.
sns.kdeplot(data=df, x="price", hue="model")
sns.ecdfplot(data=df, x="price", hue="model")
상자-수염 그림 (Box Plot)
- 데이터의 요약 통계량(사분위수, 중앙값, 이상치)을 시각화.
- 범주별 데이터 분포 비교에 매우 유용.
- 구조:
- 상자: 제1사분위수(25%) ~ 제3사분위수(75%). 높이는 IQR(Interquartile Range).
- 가로선: 중앙값(50%).
- 수염(Whisker): IQR의 1.5배 범위 내의 최솟값과 최댓값.
- 점: 수염을 벗어난 이상치(Outlier).
sns.boxplot(data=df, y='price')
sns.boxplot(data=df, x='model', y='price')