상자 그림이란?
상자 그림은 최소값, 1사분위수(Q1), 중앙값(Q2), 3사분위수(Q3), 최대값을 사용해 데이터를 시각적으로 표현한다. 상자 그림은 그룹 간의 데이터 분포를 비교하거나, 이상치를 찾아내는 데 유용하다.
상자 그림 그려보기 (python)
python을 사용해 3가지 정규분포를 따르는 난수를 만들고, 상자 그림을 그려보았다. 그래프를 통해 각 정규분포별로 다른 형태를 보이는 것을 확인할 수 있으며, 카테고리 별로 이상치 여부를 쉽게 확인할 수 있다.
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
# 예제 데이터 생성
np.random.seed(10)
category_a = np.random.normal(0, 1, 100)
category_b = np.random.normal(1, 1.5, 100)
category_c = np.random.normal(-1, 0.5, 100)
# 데이터 프레임 생성
data = pd.DataFrame({
'Category': ['A'] * 100 + ['B'] * 100 + ['C'] * 100,
'Value': np.concatenate([category_a, category_b, category_c])
})
# 상자 그림 그리기
plt.figure(figsize=(10, 6))
sns.boxplot(x='Category', y='Value', data=data)
plt.title('Box Plot of Three Categories')
plt.xlabel('Category')
plt.ylabel('Value')
plt.grid(True)
plt.show()
상자 그림의 해석
앞서 언급한 것처럼 상자 그림은 최소값, 1사분위수(Q1), 중앙값(Q2), 3사분위수(Q3), 최대값을 사용해 시각화한다. 각 지표를 어떻게 사용해 시각화하는지 알아야 해석할 수 있다.
- 사분위수 (Q1, Q3): 상자의 상단과 하단 경계
- 중앙값 (Q2): 상자의 가운데 선
- IQR (Interquartile Range): 상자의 높이(Q3 - Q1), 데이터의 중간 50%가 이 범위 내 포함됨.
- 수염 (Whiskers): 상자 위아래로 뻗은 선들, 일반적으로 최소값과 최대값으로 표현됨.
- 이상치 (Outliers): 수염 밖의 점들, 일반적으로 Q1(Q3) ± 1.5IQR 범위 밖의 값을 이상치로 간주함.
상자 그림의 장점
- 데이터 비교: 카테고리별 분포를 비교하는 데 유용함.
- 이상치 탐지: 이상치를 쉽게 확인할 수 있음.
상자 그림 사용에 주의할 점
- 연속형 데이터: 연속적인 데이터에 사용해야 함.
- 데이터 크기: 데이터의 크기가 너무 작거나 클 경우, 상자 그림의 해석이 어려워질 수 있음.
- 개별 데이터 분석 취약: 구간별로 데이터를 집계하기 때문에 개별 데이터에 대한 분석이 추가로 필요함.