[Python]NaN vs None

Jae Gyeong Lee·2022년 11월 19일
0

NaN vs None

1.NaN(Not A Number)

  • 표현되지 않는 부동소수점 값.
  • data type: float.
  • 수치 계산에 사용 가능.
a = np.nan
b = a + 10
print(b)

=> nan

2.None

  • Python에서 존재하지 않는 값(NULL)을 의미함(즉, 빈값).
    - 빈 list, dict, set, string, 0, False가 해당됨.
  • data type: NoneType
  • 수치 계산에 사용 불가능.
a = None
b = a + 10
print(b)

=> TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

3. Pandas에서의 처리 방식.

Pandas에서는 결측치를 다룰 때, NaN과 None을 동일하게 처리함.

c = pd.DataFrame([np.nan, None, 1, '가'], columns = ['칼럼']); c

	칼럼
0	NaN
1	None
2	1
3	가
c.fillna('결측치')

	칼럼
0	결측치
1	결측치
2	1
3	가

Pandas를 통한 결측치 제거는 아래 링크 참고.
https://velog.io/@worudjk/PythonPandas#5-data-type-%EB%B3%80%EA%B2%BD

4. None -> Nan 강제 변환.

a = pd.DataFrame([1, np.nan, '2', None], columns = ['칼럼'] )
print(a)

	칼럼
0     1
1   NaN
2     2
3  None
a.replace({None : np.nan}, inplace = True); a

	칼럼
0	1
1	NaN
2	2
3	NaN

5. 참고

print(np.nan is None)  # False, nan과 None는 다름. 
print(np.nan == None)  # False

print(np.nan == np.nan)  # False
print(np.nan is np.nan)  # True

print(None == None)  # True
print(None is None)  # True

== : '값'이 같은지 그렇지 않은지만을 확인.
is : '참조'가 같은지 그렇지 않은지 확인. # 참조가 같다면, 값도 같음.

  • 여기서 참조가 같다는 것은 변수가 동일한 객체를 향하고 있다는 것.

예) 값과 참조에 대한 예시.

1) 값과 참조가 모두 같은 경우

a = [1, 2, 3]; b = a

print(a is b) #True
print(a == b) #True

2) 값은 같으나 참조가 다른 경우

a = [1, 2, 3]; b = [1, 2, 3]

print(a is b) #False
print(a == b) #True

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

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

profile
안녕하세요 반갑습니다. 공부한 내용들을 기록하고 있습니다.

0개의 댓글