1. 程式人生 > >資料分析時None和NaN區別

資料分析時None和NaN區別

None vs NaN區別

  1. 在pandas中, 如果其他的資料都是數值型別, pandas會把None自動替換成NaN, 甚至能將s[s.isnull()]= None,和s.replace(NaN, None)操作的效果無效化。 這時需要用where函式才能進行替換。
  2. None能夠直接被匯入資料庫作為空值處理, 包含NaN的資料匯入時會報錯。
  3. numpy和pandas的很多函式能處理NaN,但是如果遇到None就會報錯。
  4. None和NaN都不能被pandas的groupby函式處理,包含None或者NaN的組都會被忽略。

等值性比較的總結:(True表示被判定為相等)

None對NoneNaN對NaNNone對NaN
單值TrueFalseFalse
tuple(整體)TrueTrueFalse
np.array(逐個)TrueFalseFalse
Series(逐個)FalseFalseFalse
assert_equalsTrueTrueFalse
Series.equalsTrueTrueTrue
mergeTrueTrueTrue

由於等值性比較方面,None和NaN在各場景下表現不太一致,相對來說None表現的更穩定。

為了不給自己惹不必要的麻煩和額外的記憶負擔。 實踐中,建議遵循以下三個原則即可

  • 在用pandas和numpy處理資料階段將None,NaN統一處理成NaN,以便支援更多的函式。
  • 如果要判斷Series,numpy.array整體的等值性,用專門的Series.equals,numpy.array函式去處理,不要自己用==
    判斷 *
  • 如果要將資料匯入資料庫,將NaN替換成None