Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Seaborn으로 바이올린 플롯 그리기: 데이터 분포 시각화 완벽 가이드

박스 플롯과 바이올린 플롯의 이해

카테고리별로 존재하는 데이터를 서로 비교하고 싶을 때는 박스 플롯(box plot)이 유용하게 사용됩니다. 박스 플롯은 사분위수(quartile)를 기반으로 데이터셋의 분포를 파악할 수 있는 시각화 기법입니다. 상자에서 위아래로 뻗어 나오는 수직선이 있는데, 이 선들을 '수염(whisker)'이라고 부릅니다. 수염은 상위·하위 사분위수 범위 밖에서 데이터가 어떻게 분포하는지 보여주기 때문에, 박스 플롯은 '수염 그림(whisker plot)'이라고도 불립니다. 한편, 데이터의 이상치(outlier)는 개별 점으로 표시됩니다.

바이올린 플롯(violin plot)은 박스 플롯에 커널 밀도 추정(KDE, Kernel Density Estimation)을 결합한 형태입니다. 덕분에 데이터가 어떤 방식으로 분포되어 있는지 훨씬 직관적으로 분석하고 이해할 수 있습니다. 바이올린의 넓은 부분은 해당 구간의 데이터 밀도가 높다는 것을 의미하며, 반대로 좁은 부분은 데이터 밀도가 낮음을 나타냅니다.

특히 흥미로운 점은 모든 카테고리에서 박스 플롯의 사분위 범위(IQR)와 데이터 밀도가 높은 영역이 동일한 구간에 위치한다는 사실입니다.

violinplot 함수 문법

seaborn.violinplot(x, y, data, ...)

그럼 실제 예제를 통해 바이올린 플롯으로 데이터를 시각화하는 방법을 단계별로 살펴보겠습니다.

예제 코드

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
my_df = sb.load_dataset('tips')
sb.violinplot(x = "day", y = "total_bill", data=my_df)
plt.show()

실행 결과

Python Seaborn으로 바이올린 플롯 그리기: 데이터 분포 시각화 완벽 가이드

코드 설명

  • pandas, seaborn, matplotlib 등 필요한 패키지를 임포트합니다.
  • seaborn 라이브러리의 load_dataset 함수를 사용하여 'tips' 데이터셋을 불러옵니다.
  • 불러온 데이터는 데이터프레임 my_df에 저장됩니다.
  • violinplot 함수를 호출하여 데이터를 시각화합니다.
  • x축에는 요일을 나타내는 'day', y축에는 총 지출액을 의미하는 'total_bill'을 지정합니다.
  • 마지막으로 plt.show()를 통해 완성된 차트를 화면에 출력합니다.