본문 바로가기

개발/Python

[Pandas, Numpy] NaN, nan 을 대처하는 법

이렇게 데이터를 봤을 때 NaN인 데이터를 확인하고 싶었다

 

이렇게 찍어봤을 때는 nan이 나왔다 그래서

 

if data[i].iloc[j,14]==nan

이런 식으로 확인하고 싶었는데 잘 되지 않아서 몇 가지 실험을 했다.

 

print(type(data[0].iloc[23,14]))
print(data[0].iloc[23,14] == np.nan)
print(data[0].iloc[23,14] == np.NaN)
print(data[0].iloc[23,14] == None)
print(data[0].iloc[23,14] == 0.0)
print(data[0].iloc[23,14] == float("nan"))
print(data[0].iloc[23,14] == float("NaN"))
# print(data[0].iloc[23,14] == [nan])
print(np.isnan(data[0].iloc[23,14]))
print(pd.isna(data[0].iloc[23,14]))

>> <class 'numpy.float64'>
False
False
False
False
False
False
True
True
  • type은 float인데 0 은 아니고 그렇다고 float('nan')이 먹히지도 않았다
  • nan은 변수처럼 읽혀서 에러가 나서 주석처리 했다
  • 결국은 == 으로 판단할 수 없다고 결론났다

★np.isnan() 이나 pd.isna() 를 사용하자!!★