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