Dev/python

[pandas] 데이터프레임에서 NaN을 None으로 치환하기, replace(), np.nan 활용

bskyvision.com 2023. 9. 24. 15:50

오늘은 파이썬 판다스 데이터프레임에서 NaN을 None으로 치환하는 방법에 대해 살펴보겠습니다.

 

우선 NaN은 Not a Number의 약자입니다. NaN의 타입은 float입니다.

반면 None은 존재하지 않음을 나타내며 타입은 None입니다. 

 

import numpy as np


print(type(np.nan))  # <class 'float'>
print(type(None))  # <class 'NoneType'>

 

파이썬에서 NaN은 보통 numpy.nan을 많이 사용합니다.  

 

자, 그러면 이제 데이터프레임 내에 있는 NaN을 None으로 치환하는 방법에 대해 살펴보도록 하겠습니다. 

 

데이터프레임 내 Nan -> None으로 치환하기

데이터프레임에서 어떤 값을 다른 값으로 치환할 때는 보통 replace() 메서드를 많이 사용합니다. 

 

import pandas as pd
import numpy as np


print(type(np.nan))  # <class 'float'>
print(type(None))  # <class 'NoneType'>

df1 = pd.DataFrame(
    [[90, 85, 80], [77, np.nan, 79], [86, 89, np.nan]],
    columns=["수학", "영어", "과학"],
    index=["영수", "철수", "광수"])

print(df1)
#     수학    영어    과학
# 영수  90  85.0  80.0
# 철수  77   NaN  79.0
# 광수  86  89.0   NaN

df2 = df1.replace({np.nan: None})

print(df2)
#     수학    영어    과학
# 영수  90  85.0  80.0
# 철수  77  None  79.0
# 광수  86  89.0  None

 

NaN이 None으로 잘 변환된 것을 확인할 수 있습니다. 

 

관련 글

- [pandas] 누락된 데이터가 - 등의 기호로 표현되어 있을 때 NaN으로 변경하는 방법, replace() 메소드

 

참고자료

[1] https://velog.io/@inhwa1025/Python-numpy-NaN%EC%9D%84-None%EC%9C%BC%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0  

[2] https://potato-potahto.tistory.com/entry/PythonNaNNone-%EC%B0%A8%EC%9D%B4feat-PandasNA