numpy.NaN
- Python pandas를 이용해 MySQL에 데이터를 삽입하다 에러가 발생함
ProgrammingError: naa can not be used with MySQL
- 이는 MySQL에서 python의 nan을 이해할 수 없기 때문에 발생한 에러
- NaN이란?
- Not a Number의 약어. 표현 불가능한 수치형 결과
- 엑셀 파일을 DataFrame 형태로 받아올 때 비어있는 위치에 NaN이 할당됨
NaN과 None의 차이
import numpy as np
print(np.NaN == np.NaN)
print(np.NaN == None)
print(np.NaN is None)
print(None == None)
print(None is None)
- None과 None이 서로 비교 가능한 것과 달리, NaN과 NaN은 서로 비교 불가능
- NaN은 어떠한 값과도 다르다는 결과를 내놓기 때문에 단순 등호 operator로 NaN 값 테스트 불가능
- NaN 값 비교를 위해 numpy와 math library에서
isnan()
이라는 method 지원
import numpy as np
import math
print(np.isnan(np.NaN))
print(math.isnan(np.NaN))
- pandas library의
isna()
method도 동일 기능 지원
import pandas as pd
print(pd.isna(np.NaN))
DataFrame에서 NaN을 None으로 변환하기
df1 = df.where(pd.notnull(df), None)
df = df.replace({np.nan: None})