[python] NumPy에서 NaN 값을 다른 값으로 대체하는 방법은 무엇인가요?
import numpy as np
arr = np.array([1, 2, np.nan, 4, np.inf, -np.inf])
arr_replaced = np.nan_to_num(arr)
print(arr_replaced)
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
[ 1. 2. 0. 4. 10. -10.]
또 다른 방법은 numpy.isnan()
함수와 논리 연산을 사용하여 NaN 값을 필터링하고, 필터링된 값을 다른 값으로 대체하는 것입니다.
import numpy as np
arr = np.array([1, 2, np.nan, 4, np.inf, -np.inf])
arr_filtered = np.isnan(arr)
arr[arr_filtered] = 0
print(arr)
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
[ 1. 2. 0. 4. inf -inf]
이러한 방법 외에도 Pandas 라이브러리를 사용하여 NaN 값을 대체할 수도 있습니다. Pandas의 fillna()
메서드를 사용하여 NaN 값을 원하는 값으로 대체할 수 있습니다.
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3, np.nan, 5]})
df_filled = df.fillna(0)
print(df_filled)
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
A
0 1.0
1 2.0
2 3.0
3 0.0
4 5.0
이러한 방법들을 사용하여 NumPy에서 NaN 값을 다른 값으로 대체할 수 있습니다.
참고문서:
- NumPy
nan_to_num
: https://numpy.org/doc/stable/reference/generated/numpy.nan_to_num.html - NumPy
isnan
: https://numpy.org/doc/stable/reference/generated/numpy.isnan.html - Pandas
fillna
: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html