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

Python Pandas - Seaborn으로 범주형 변수 기준 그룹화된 수직 바이올린 플롯 그리기

바이올린 플롯(Violin Plot)이란?

Seaborn의 바이올린 플롯은 박스플롯(Boxplot)커널 밀도 추정(Kernel Density Estimate)을 하나의 그래프로 결합한 시각화 기법입니다. 단순히 중앙값과 사분위수만 보여주는 박스플롯과 달리, 데이터가 어떤 구간에 밀집되어 있는지 전체적인 분포 형태를 부드러운 곡선으로 확인할 수 있다는 것이 큰 장점입니다.

이 글에서는 seaborn.violinplot() 함수를 사용하여, 범주형 변수를 기준으로 그룹화된 열들의 수직 바이올린 플롯을 그리는 방법을 단계별로 살펴보겠습니다.

데이터셋 소개

실습에 사용할 데이터는 CSV 파일 형태의 크리켓 선수 정보 데이터셋(Cricketers.csv)입니다. 이 데이터에는 선수의 역할(Role)과 나이(Age) 등의 정보가 포함되어 있습니다.

1단계: 필요한 라이브러리 임포트하기

먼저 Seaborn, Pandas, Matplotlib 라이브러리를 임포트합니다.

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

2단계: CSV 파일에서 데이터 불러오기

Pandas의 read_csv() 함수를 사용해 CSV 파일을 DataFrame으로 불러옵니다.

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

3단계: 바이올린 플롯 그리기

x축에는 범주형 변수인 'Role'(역할)을, y축에는 수치형 변수인 "Age"(나이)를 지정하여 바이올린 플롯을 생성합니다. 이렇게 하면 역할 그룹별 나이 분포가 개별적인 바이올린 모양으로 나란히 비교됩니다.

sb.violinplot(x = 'Role', y = "Age", data = dataFrame)

전체 코드 예제

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'를 사용한 바이올린 플롯
# (범주형 변수 Role 기준으로 그룹화)
sb.violinplot(x = 'Role', y = "Age", data = dataFrame)

# 그래프 화면에 표시
plt.show()

실행 결과

위 코드를 실행하면 역할(Role)별로 구분된 나이(Age) 분포가 담긴 수직 바이올린 플롯이 출력됩니다.

Python Pandas - Seaborn으로 범주형 변수 기준 그룹화된 수직 바이올린 플롯 그리기

결과 그래프를 해석하는 방법은 다음과 같습니다.

- 바이올린의 넓은 부분: 해당 나이 구간에 데이터가 많이 분포함을 의미합니다.
- 바이올린의 좁은 부분: 해당 구간에 속하는 데이터가 적음을 의미합니다.
- 내부의 박스플롯 요소: 사분위수와 중앙값을 함께 확인할 수 있어 통계적 요약 정보를 제공합니다.

이처럼 seaborn.violinplot()을 활용하면 범주형 변수에 따른 수치형 변수의 분포 차이를 직관적으로 비교할 수 있습니다.