資料分析時None和NaN區別
阿新 • • 發佈:2019-01-24
None vs NaN區別
- 在pandas中, 如果其他的資料都是數值型別, pandas會把None自動替換成NaN, 甚至能將
s[s.isnull()]= None
,和s.replace(NaN, None)
操作的效果無效化。 這時需要用where函式才能進行替換。 - None能夠直接被匯入資料庫作為空值處理, 包含NaN的資料匯入時會報錯。
- numpy和pandas的很多函式能處理NaN,但是如果遇到None就會報錯。
- None和NaN都不能被pandas的groupby函式處理,包含None或者NaN的組都會被忽略。
等值性比較的總結:(True表示被判定為相等)
None對None | NaN對NaN | None對NaN | |
---|---|---|---|
單值 | True | False | False |
tuple(整體) | True | True | False |
np.array(逐個) | True | False | False |
Series(逐個) | False | False | False |
assert_equals | True | True | False |
Series.equals | True | True | True |
merge | True | True | True |
由於等值性比較方面,None和NaN在各場景下表現不太一致,相對來說None表現的更穩定。
為了不給自己惹不必要的麻煩和額外的記憶負擔。 實踐中,建議遵循以下三個原則即可
- 在用pandas和numpy處理資料階段將None,NaN統一處理成NaN,以便支援更多的函式。
- 如果要判斷Series,numpy.array整體的等值性,用專門的Series.equals,numpy.array函式去處理,不要自己用
==
- 如果要將資料匯入資料庫,將NaN替換成None