Pandas 和 Numpy 是数据挖掘和数据科学中广泛使用的工具,但有时人们会对 None 和 NaN 感到困惑,它们非常相似但略有不同的数据类型。 在这里,我们通过一些示例彻底把问题弄清楚。
主要区别
Pandas 中 None 和 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: unsupported operand type(s) for +: 'NoneType' and 'int'
</module></ipython-input-8-3fd8740bf8ab>
但如果是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
Original: https://blog.csdn.net/robot_learner/article/details/126535158
Author: robot_learner
Title: None 和 NaN分不清? pandas 难点彻底搞懂
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/752636/
转载文章受原作者版权保护。转载请注明原作者出处!