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
本文详细对比了None与NaN在pandas中的使用差异,包括数据处理、等值性比较及数据库导入等方面的不同表现,并提出了实践中的建议。

1万+

被折叠的 条评论
为什么被折叠?



