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

Python Pandas – Seaborn으로 바이올린 플롯 그리기: inner='quartile'로 사분위수 수평선 표시하기

Seaborn의 바이올린 플롯(Violin Plot)은 박스플롯(boxplot)과 커널 밀도 추정(kernel density estimate)을 하나의 그래프로 결합한 시각화 기법입니다. 데이터의 분포 모양을 직관적으로 파악할 수 있어 통계 분석에서 널리 활용됩니다.

바이올린 플롯을 그릴 때는 seaborn.violinplot() 함수를 사용하며, inner 매개변수에 "quartile" 값을 지정하면 제1사분위수(Q1), 중앙값(Q2), 제3사분위수(Q3)가 점선 형태의 수평선으로 함께 표시되어 분포의 핵심 지표를 한눈에 확인할 수 있습니다.

데이터 준비

이번 예제에서는 다음과 같은 CSV 파일(Cricketers.csv)을 데이터셋으로 사용합니다.

1. 필요한 라이브러리 임포트

import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt

2. CSV 파일을 Pandas DataFrame으로 불러오기

dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers.csv")

3. 바이올린 플롯 그리기

x축에는 Role(역할), y축에는 Age(나이)를 지정하여 바이올린 플롯을 그립니다. order 매개변수에 명시적인 순서를 전달하면 박스의 표시 순서를 "Role" 기준으로 직접 제어할 수 있으며, inner="quartile" 옵션을 통해 사분위수를 수평선으로 나타냅니다.

sb.violinplot(x = 'Role', y = "Age", order=["Batsman", "Bowler"], data = dataFrame, inner="quartile")

전체 예제 코드

import seaborn as sb
import pandas as pd
import matplotlib.pyplot as plt

# CSV 파일을 Pandas DataFrame으로 불러오기
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers.csv")

# Role과 Age를 기준으로 바이올린 플롯 그리기
# order 매개변수로 박스 순서를 명시적으로 지정 ("Role" 기준)
# inner="quartile"로 사분위수를 수평선 형태로 표시
sb.violinplot(x = 'Role', y = "Age", order=["Batsman", "Bowler"], data = dataFrame, inner="quartile")

# 그래프 출력
plt.show()

실행 결과

위 코드를 실행하면 Batsman(타자)과 Bowler(투수) 각각의 나이 분포가 바이올린 형태로 시각화되고, 내부에 사분위수 구간이 점선으로 표시된 그래프가 출력됩니다. 이를 통해 두 집단 간 나이 분포의 중심 경향과 산포도를 쉽게 비교할 수 있습니다.