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

Python Pandas - Seaborn으로 상자 그림(Box Plot) 위에 스웜 플롯 겹쳐 그리기

Seaborn의 스웜 플롯(Swarm Plot)은 데이터 포인트가 서로 겹치지 않도록 배치되는 범주형 산점도(categorical scatterplot)를 그리는 데 사용되는 시각화 기법입니다. 이때 seaborn.swarmplot() 함수가 활용되며, seaborn.boxplot()으로 생성한 상자 그림 위에 관찰값들의 분포를 함께 표시하면 각 카테고리 내 개별 데이터의 위치까지 한눈에 파악할 수 있습니다.

이번 글에서는 CSV 파일로 저장된 크리켓 선수 데이터셋(Cricketers2.csv)을 예시로 사용하여, 상자 그림 위에 스웜 플롯을 겹쳐 그리는 방법을 단계별로 살펴보겠습니다.

1. 필수 라이브러리 임포트

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

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

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

CSV 파일의 데이터를 읽어 Pandas DataFrame에 저장합니다.

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

3. 상자 그림 위에 스웜 플롯 그리기

boxplot()으로 기본 분포를 그린 후, 같은 축(x = "Matches", y = "Role")에 swarmplot()을 겹쳐 그립니다.

sb.boxplot(x = "Matches", y = "Role", data= dataFrame, whis=np.inf)
sb.swarmplot(x = "Matches", y = "Role", data= dataFrame, color=".3")

여기서 몇 가지 중요한 매개변수를 짚어보면 다음과 같습니다.

  • whis=np.inf: 수염(whisker)의 길이를 무한대로 설정하여 이상치를 별도의 점으로 표시하지 않고, 모든 데이터 범위를 수염이 감싸도록 합니다. 이렇게 하면 스웜 플롯의 점들과 시각적으로 자연스럽게 어우러집니다.
  • color=".3": 스웜 플롯의 점 색상을 회색조(0~1 사이 값)로 지정합니다. 0.3은 비교적 진한 회색으로, 상자 그림 위에서도 점들이 잘 구분됩니다.

전체 예제 코드

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

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

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

# 테마 설정
sb.set_theme(style="whitegrid")

# 상자 그림 위에 관찰값들의 스웜을 겹쳐 그리기
sb.boxplot(x = "Matches", y = "Role", data= dataFrame, whis=np.inf)
sb.swarmplot(x = "Matches", y = "Role", data= dataFrame, color=".3")

# 화면에 출력
plt.show()

실행 결과

위 코드를 실행하면 역할(Role)별 경기 수(Matches) 분포를 나타내는 상자 그림 위에, 개별 선수 데이터가 회색 점으로 겹치지 않게 배치된 스웜 플롯이 함께 표시됩니다. 이를 통해 요약 통계와 개별 관찰값을 동시에 확인할 수 있어 데이터의 실제 분포를 더욱 직관적으로 이해할 수 있습니다.

Python Pandas - Seaborn으로 상자 그림(Box Plot) 위에 스웜 플롯 겹쳐 그리기