a = np.nan
b = a + 10
print(b)
=> nan
a = None
b = a + 10
print(b)
=> TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
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
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
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