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

Python Pandas – Seaborn에서 수평 바이올린 플롯 그리기: order 매개변수로 범주 순서 지정하기

Seaborn의 바이올린 플롯(Violin Plot)은 박스플롯(boxplot)과 커널 밀도 추정(Kernel Density Estimate)을 하나의 그래프로 결합하여 데이터 분포를 직관적으로 보여주는 시각화 기법입니다. 이를 구현하려면 seaborn.violinplot() 함수를 사용합니다.

이 글에서는 order 매개변수를 활용해 범주의 표시 순서를 명시적으로 지정하는 방법과, inner 매개변수를 통해 실제 관측값(observation)을 함께 표시하는 방법을 알아보겠습니다.

데이터 준비

이 예제에서는 크리켓 선수 정보가 담긴 CSV 파일인 Cricketers.csv를 데이터셋으로 사용합니다.

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

가장 먼저 시각화와 데이터 처리에 필요한 라이브러리들을 가져옵니다.

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. 수평 바이올린 플롯 그리기

Role(역할) 열과 Age(나이) 열을 사용해 수평 바이올린 플롯을 생성합니다. 이때 order 매개변수에 원하는 순서의 리스트를 전달하여 범주 배치 순서를 지정하고, inner="stick" 옵션으로 개별 관측값을 막대 형태로 표시합니다.

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

order 매개변수를 사용하지 않으면 Seaborn이 범주를 자체적으로 정렬하지만, 위와 같이 명시적으로 지정하면 "Batsman"(타자) 다음에 "Bowler"(투수)가 오도록 순서를 고정할 수 있습니다.

전체 예제 코드

지금까지의 내용을 모두 포함한 완성된 코드는 다음과 같습니다.

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 매개변수로 범주 순서 지정, inner 매개변수로 관측값 표시
sb.violinplot(x = 'Age', y = "Role", order=["Batsman", "Bowler"], data = dataFrame, inner="stick")

# 그래프 출력
plt.show()

실행 결과

위 코드를 실행하면 y축에 "Batsman", "Bowler" 순서로 배치된 수평 바이올린 플롯이 출력되며, 각 바이올린 내부에 inner="stick" 옵션에 따라 개별 관측값이 막대 형태로 함께 표시됩니다.