None vs NaN要点总结

5 篇文章 0 订阅
5 篇文章 0 订阅
  1. 在pandas中, 如果其他的数据都是数值类型, pandas会把None自动替换成NaN, 甚至能将s[s.isnull()]= None,和s.replace(NaN, None)操作的效果无效化。 这时需要用where函数才能进行替换s.where(s.notnull(), None)。
  2. None能够直接被导入数据库作为空值处理, 包含NaN的数据导入时会报错。
  3. numpy和pandas的很多函数能处理NaN,但是如果遇到None就会报错。
  4. None和NaN都不能被pandas的groupby函数处理,包含None或者NaN的组都会被忽略。
  5. np.nan是一个float类型的数据, None是一个NoneType类型

等值性比较的总结:(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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值