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

Python Matplotlib 상자 그림(Boxplot)에서 NaN 값 처리하는 방법

Python의 Matplotlib 라이브러리로 상자 그림(boxplot)을 그릴 때 데이터에 NaN(Not a Number) 값이 포함되어 있으면 오류가 발생하거나 그래프가 올바르게 표시되지 않을 수 있습니다. 이 문제를 해결하려면 시각화 전에 NaN 값을 제거한 필터링된 데이터를 사용해야 합니다.

처리 단계

  • 그림 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.

  • 데이터 샘플 수와 범위를 위한 변수 N을 초기화합니다.

  • 무작위 분포(spread), 중심 데이터(center), 위쪽 이상치(flier high), 아래쪽 이상치(flier low)를 생성한 후, 이들을 하나로 연결(concatenate)하고 NaN이 제거된 필터링된 데이터를 만듭니다.

  • boxplot() 메서드를 사용하여 상자 그림을 생성합니다.

  • show() 메서드를 사용하여 그림을 화면에 표시합니다.

예제 코드

import matplotlib.pyplot as plt
import numpy as np

# 그림 크기 설정
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# 데이터 샘플 수
N = 10

# 무작위 분포 데이터
spread = np.random.rand(N)

# 중심 데이터
center = np.ones(N)

# 위쪽/아래쪽 이상치 데이터
fh = np.random.rand(N)+N
fl = np.random.rand(N)-N

# 데이터 연결
data = np.concatenate((spread, center, fh, fl), 0)
data[5] = np.NaN

# NaN 값이 제거된 필터링 데이터
filtered_data = data[~np.isnan(data)]

# 상자 그림 그리기
plt.boxplot(filtered_data)

plt.show()

핵심 포인트

위 코드에서 가장 중요한 부분은 다음 한 줄입니다:

filtered_data = data[~np.isnan(data)]

np.isnan(data)는 배열에서 NaN인 요소를 찾아내고, 물결표(~) 연산자로 이를 반전시켜 NaN이 아닌 값만 선택합니다. 이렇게 필터링된 데이터를 boxplot()에 전달하면 NaN 값으로 인한 오류 없이 깔끔한 상자 그림을 얻을 수 있습니다.

실행 결과

위 코드를 실행하면 NaN 값이 제거된 데이터를 기반으로 한 상자 그림이 출력됩니다.

Python Matplotlib 상자 그림(Boxplot)에서 NaN 값 처리하는 방법