[Python] numpy NaN을 None으로 변환하기

hwwwa·2022년 1월 6일
1

🐼 Python

목록 보기
6/18
post-custom-banner

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)  # False
print(np.NaN == None)  # False
print(np.NaN is None)  # False
print(None == None)  # True
print(None is None)  # True
  • None과 None이 서로 비교 가능한 것과 달리, NaN과 NaN은 서로 비교 불가능
  • NaN은 어떠한 값과도 다르다는 결과를 내놓기 때문에 단순 등호 operator로 NaN 값 테스트 불가능
  • NaN 값 비교를 위해 numpy와 math library에서 isnan()이라는 method 지원
import numpy as np
import math

print(np.isnan(np.NaN))  # True
print(math.isnan(np.NaN))  # True
  • pandas library의 isna() method도 동일 기능 지원
import pandas as pd

print(pd.isna(np.NaN))  # True

DataFrame에서 NaN을 None으로 변환하기

  • where() 사용
df1 = df.where(pd.notnull(df), None)
  • replace() 사용
df = df.replace({np.nan: None})
post-custom-banner

0개의 댓글