Pandas 和 Numpy 是数据挖掘和数据科学中广泛使用的工具,但有时人们会对 None 和 NaN 感到困惑,它们非常相似但略有不同的数据类型。 在这里,我们通过一些示例彻底把问题弄清楚。
主要区别
- None 表示信息确实,但其类型不是数字。 因此,任何包含 None 值的列(比如 Pandas Series)肯定不是数字类型,例如 int 或 float。
- NaN 代表非数字,是数字类型。 这意味着可以在 int 或 float 类型的数值列中找到 NaN。
动手测试
在下面的测试中,None 值会自动转换为 NaN 值,因为该list中的其他数值是数字, Pandas 自动将 None 转换为 NaN。NaN类型对于很多算术操作来更简单,因此被优先考虑。
import pandas as pd
pd.Series([1,None])
0 1.0
1 NaN
dtype: float64
在下面的测试中,该list系列中的另一个值是一个字符串,因此 None 值保持为 None 值。 这使得整个系列对象类型。
import pandas as pd
pd.Series(["1",None])
0 1
1 None
dtype: object
None 类型会导致更多的数值操作错误
为什么我们说,使用 NaN 类型对于许多常用操作会更有利?
因为NaN对许多算术运算来说是合法的。 例如,下面涉及None的操作会报错:
None + 1
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-8-3fd8740bf8ab> in <module>
----> 1 None + 1
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
但如果是NaN类型,就不会报错。
import numpy as np
np.nan + 1
nan
怎么查看dataframe中的数值是None或者NaN
有几种不同的方法可以检查数据类型是 None 还是 NaN 值;
首先可以使用 numpy,函数 np.isnan() 可以检查一个值是否为 NaN 值,但它不适用于 None 值。
np.isnan(np.nan)
True
零一方法,在 Pandas 中,有 isnull() 和 isna() 两个函数,它们实际上是同样的函数。 isnull() 只是 isna() 方法的别名; 基本上 isnull() 可以用来检测缺失值,因此 nan 或 None 都将为 True。
pd.isnull(np.nan)
True
pd.isnull(None)
True
AI好书推荐
北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理
人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典
原文地址:https://blog.csdn.net/robot_learner/article/details/126535158
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_44396.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!