Seaborn 박스 플롯(Box Plot)이란?
박스 플롯은 데이터의 분포를 카테고리별로 비교하고 시각화할 때 유용한 그래프입니다. 중앙값, 사분위수 범위(IQR), 이상치(outlier)를 한눈에 파악할 수 있어 탐색적 데이터 분석(EDA)에서 널리 활용됩니다. Python의 Seaborn 라이브러리에서는 seaborn.boxplot() 함수 하나로 손쉽게 그릴 수 있습니다.
이번 글에서는 크리켓 선수 정보가 담긴 CSV 파일(Cricketers.csv)을 예제 데이터로 사용해, 박스 플롯을 그리는 과정을 단계별로 살펴보겠습니다.
1단계. 필요한 라이브러리 임포트하기
먼저 시각화를 담당하는 Seaborn, 데이터 처리를 담당하는 Pandas, 그래프 표시를 담당하는 Matplotlib 세 가지 라이브러리를 임포트합니다.
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\\Cricketers.csv")
예제 1. 나이(Age)별 키(Height) 분포 시각화
두 개의 변수를 조합해 박스 플롯을 그리면, 나이 구간별로 키가 어떻게 분포하는지 쉽게 비교할 수 있습니다. 여기서는 y축에 키 단위 레이블도 함께 추가했습니다.
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")
# 나이(Age)와 키(Height)로 박스 플롯 그리기
sb.boxplot(dataFrame['Age'], dataFrame['Height'])
# y축 레이블 설정 (키)
plt.ylabel("Height (inches)")
# 그래프 화면에 표시
plt.show()
실행 결과
코드를 실행하면 나이 구간별 키 분포가 박스 형태로 시각화된 그래프가 출력됩니다.

예제 2. 단일 변수 박스 플롯
비교 대상이 되는 두 번째 변수 없이, 하나의 변수만으로도 박스 플롯을 그릴 수 있습니다. 아래 예제는 나이(Age) 데이터의 분포를 확인하는 코드입니다.
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")
# 나이(Age) 변수로 박스 플롯 그리기
sb.boxplot(dataFrame['Age'])
plt.show()
실행 결과
실행하면 나이 데이터의 중앙값, 사분위 범위, 이상치가 함께 표시된 박스 플롯이 나타납니다.

박스 플롯 읽는 법
- 상자의 아래 경계: 제1사분위수(Q1), 즉 하위 25% 지점
- 상자 안의 가운데 선: 중앙값(Median)
- 상자의 위 경계: 제3사분위수(Q3), 즉 상위 25% 지점
- 상자 바깥의 점: 일반적인 범위를 벗어난 이상치(Outlier)
참고. 최신 Seaborn 버전에서의 권장 문법
Seaborn 0.12 이상 버전에서는 위치 기반 인자 전달 방식이 지원되지 않습니다. 다음과 같이 x, y 매개변수를 명시적으로 지정하는 방식을 사용하는 것이 좋습니다.
# 두 변수 비교 sb.boxplot(x=dataFrame['Age'], y=dataFrame['Height']) # 단일 변수 sb.boxplot(x=dataFrame['Age'])