Python의 Pandas 데이터프레임을 활용해 95% 신뢰 구간(confidence interval) 오차 막대(errorbar)를 Matplotlib으로 시각화하는 방법을 단계별로 알아보겠습니다.
구현 단계
- 그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
- 2차원이면서 크기 변경이 가능하고, 이질적인(heterogeneous) 표 형태 데이터를 담을 수 있는 데이터프레임 인스턴스를 생성합니다.
- category와 number 두 개의 열(column)을 가진 데이터프레임을 만듭니다.
- category별로 number 값의 평균(mean)과 표준편차(std)를 계산합니다.
errorbar()메서드를 사용해 y값 대 x값을 선 및 마커로 플롯하고, 오차 막대를 함께 표시합니다.- 마지막으로
show()메서드를 호출해 그림을 화면에 출력합니다.
예제 코드
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
df = pd.DataFrame()
df['category'] = np.random.choice(np.arange(10), 1000, replace=True)
df['number'] = np.random.normal(df['category'], 1)
mean = df.groupby('category')['number'].mean()
std = df.groupby('category')['number'].std()
plt.errorbar(mean.index, mean, xerr=0.5, yerr=2*std,
linestyle='--', c='red')
plt.show()코드 설명
np.random.choice(np.arange(10), 1000, replace=True): 0부터 9까지의 정수 중에서 중복을 허용해 1,000개의 카테고리 값을 무작위로 생성합니다.np.random.normal(df['category'], 1): 각 카테고리 값을 평균으로 하고 표준편차가 1인 정규분포 난수를 생성하여 number 열에 저장합니다.groupby('category'): 카테고리별로 데이터를 묶어 평균과 표준편차를 각각 계산합니다.yerr=2*std: 표준편차의 2배를 오차 범위로 사용하면, 정규분포를 따르는 데이터에서 약 95% 신뢰 구간에 해당하는 오차 막대를 얻을 수 있습니다.
출력 결과

실행하면 빨간색 점선으로 연결된 평균값 곡선과 함께, 각 카테고리 지점마다 위아래로 뻗은 오차 막대가 표시된 그래프를 확인할 수 있습니다. 이러한 방식은 실험 데이터나 통계 분석 결과에서 데이터의 변동성과 신뢰도를 한눈에 보여줄 때 유용하게 활용됩니다.