logo

한 변수의 분포 시각화

Python 데이터 시각화

  • 데이터 시각화: 데이터를 그래프나 차트 등 시각적 형태로 표현하는 과정.
  • matplotlib: Python의 대표적인 표준 시각화 라이브러리. 다양한 정적/동적 시각화 가능. 디테일한 수정에 유리.
  • seaborn: matplotlib을 기반으로 하며, 더 아름답고 통계적으로 의미 있는 고급 시각화를 간편하게 제공.
  • 임포트:
import matplotlib.pyplot as plt # matplotlib의 pyplot 모듈
import seaborn as sns # seaborn 라이브러리

히스토그램 (Histogram)

  • 데이터를 구간(bin)별로 나눠, 각 구간의 빈도수를 막대그래프로 표현.
  • sns.histplot(x='열이름', data=데이터프레임)
# 'price' 열의 히스토그램
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') # 모델별 가격 분포
Previous
탐색적 데이터 분석 (EDA)