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

Matplotlib로 Pandas 데이터프레임의 95% 신뢰 구간 오차 막대 그리는 방법

Python의 Pandas 데이터프레임을 활용해 95% 신뢰 구간(confidence interval) 오차 막대(errorbar)를 Matplotlib으로 시각화하는 방법을 단계별로 알아보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
  • 2차원이면서 크기 변경이 가능하고, 이질적인(heterogeneous) 표 형태 데이터를 담을 수 있는 데이터프레임 인스턴스를 생성합니다.
  • categorynumber 두 개의 열(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% 신뢰 구간에 해당하는 오차 막대를 얻을 수 있습니다.

출력 결과

Matplotlib로 Pandas 데이터프레임의 95% 신뢰 구간 오차 막대 그리는 방법

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