None 和 NaN分不清? pandas 难点彻底搞懂

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球