Python/numpy

numpy ValueError: Input contains NaN, infinity or a value too large for dtype('float64'). 오류 해결하기

PySun 2024. 10. 17. 21:08
반응형

소개

Python에서 데이터 분석을 할 때, 종종 'ValueError: Input contains NaN, infinity or a value too large for dtype('float64').'라는 오류를 만날 수 있습니다. 이 오류는 주로 NumPy 또는 Pandas와 같은 라이브러리를 사용하여 수치 연산을 수행할 때 발생합니다. 이 글에서는 이 오류의 원인과 해결 방법을 살펴보겠습니다.

에러 발생 예시 코드

먼저, 이 오류가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

import numpy as np

# NaN 값을 포함한 배열 생성
data = np.array([1, 2, np.nan, 4, 5])

# 평균 계산 시도
mean = np.mean(data)
print("Mean:", mean)

에러 해결 방법

1. NaN 값 또는 무한대 값 처리

에러의 첫 번째 원인은 배열에 NaN 또는 무한대 값이 포함된 경우입니다. 이를 처리하기 위해서는 다음과 같이 NaN 값을 제거하거나 제어할 수 있습니다.

import numpy as np

# NaN 값을 포함한 배열 생성
data = np.array([1, 2, np.nan, 4, 5])

# NaN을 제거한 평균 계산
mean = np.nanmean(data)
print("Mean without NaN:", mean)

2. 큰 값 처리

입력 데이터에 너무 큰 값이 포함되어 있는 경우에도 오류가 발생할 수 있습니다. 조건문을 사용하여 이러한 값들을 체크하고 적절한 처리를 해줄 수 있습니다.

import numpy as np

# 큰 값이 포함된 배열 생성
data = np.array([1, 2, 3, 4, 1e308, 5]) # 1e308: 매우 큰 값

# 큰 값 체크
if np.any(np.abs(data) > np.finfo(np.float64).max):
    print("입력 배열에 너무 큰 값이 포함되어 있습니다.")
else:
    mean = np.mean(data)
    print("Mean:", mean)

마무리

이 글에서는 'ValueError: Input contains NaN, infinity or a value too large for dtype('float64').' 오류를 다루는 방법을 살펴보았습니다. NaN 값을 처리하거나 큰 값들을 체크하여 이러한 오류를 해결할 수 있습니다. 데이터 전처리는 항상 신중하게 해야 하며, 이러한 문제를 사전에 예방하기 위해서는 입력 데이터의 품질을 점검하는 것이 중요합니다. 데이터 분석 과정에서 발생할 수 있는 다양한 오류를 극복하며, 한 단계 성장하는 기회를 만들 수 있기를 바랍니다!

반응형