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

Python Pandas – Seaborn으로 바이올린 플롯 위에 관찰값 스웜 플롯 그리기

Seaborn의 스웜 플롯(Swarm Plot)은 점들이 서로 겹치지 않도록 배치된 범주형 산점도를 그리는 데 사용됩니다. 이를 위해 seaborn.swarmplot() 함수를 활용하며, violinplot()과 함께 사용하면 바이올린 플롯 위에 개별 관찰값들의 떼(swarm)를 표현할 수 있습니다.

바이올린 플롯은 데이터의 분포를 부드러운 곡선 형태로 보여주지만, 실제 데이터 포인트가 어떻게 분포되어 있는지는 확인하기 어렵습니다. 여기에 스웜 플롯을 겹쳐 그리면 전체적인 분포와 개별 데이터의 위치를 동시에 파악할 수 있어 시각화의 완성도가 크게 향상됩니다.

이번 예제에서는 다음과 같은 CSV 파일(Cricketers2.csv)을 데이터셋으로 사용한다고 가정합니다. 이 파일에는 크리켓 선수들의 역할(Role)과 경기 수(Matches) 정보가 담겨 있습니다.

1. 필요한 라이브러리 가져오기

먼저 시각화와 데이터 처리에 필요한 라이브러리들을 임포트합니다.

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

2. CSV 파일에서 데이터 불러오기

pd.read_csv()를 사용해 CSV 파일의 데이터를 Pandas DataFrame으로 불러옵니다.

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

3. 바이올린 플롯 위에 스웜 플롯 그리기

sb.violinplot()으로 분포를 먼저 그린 뒤, 같은 축 위에 sb.swarmplot()을 호출하여 개별 관찰값을 흰색 점으로 표시합니다.

sb.violinplot(x = dataFrame["Role"], y = dataFrame["Matches"])
sb.swarmplot(x = dataFrame["Role"], y = dataFrame["Matches"], color="white")

전체 예제 코드

다음은 지금까지 설명한 내용을 모두 포함한 완성된 코드입니다.

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

# CSV 파일에서 데이터를 Pandas DataFrame으로 불러오기
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\Cricketers2.csv")

sb.set_theme(style="whitegrid")

# 바이올린 플롯 위에 관찰값의 스웜 그리기
sb.violinplot(x = dataFrame["Role"], y = dataFrame["Matches"])
sb.swarmplot(x = dataFrame["Role"], y = dataFrame["Matches"], color="white")

# 화면에 출력
plt.show()

실행 결과

위 코드를 실행하면 다음과 같은 그래프가 출력됩니다. 바이올린 형태의 분포 곡선 위에 각 선수의 경기 수가 흰색 점으로 표시되어, 역할별 데이터 분포와 개별 관찰값을 한눈에 비교할 수 있습니다.

Python Pandas – Seaborn으로 바이올린 플롯 위에 관찰값 스웜 플롯 그리기