本文介绍: Pandas 和 Numpy数据挖掘数据科学中广泛使用工具,但有时人们会对 None 和 NaN 感到困惑,它们非常相似但略有不同数据类型。在这里我们通过一些示例彻底把问题弄清楚。

Pandas 和 Numpy数据挖掘数据科学中广泛使用工具,但有时人们会对 None 和 NaN 感到困惑,它们非常相似但略有不同数据类型。 在这里我们通过一些示例彻底把问题弄清楚。

主要区别

Pandas 中 None 和 NaN 的区别可以总结为:

  1. None 表示信息确实,但其类型不是数字。 因此,任何包含 None 值的列(比如 Pandas Series)肯定不是数字类型例如 intfloat
  2. NaN 代表数字,是数字类型。 这意味着可以intfloat 类型的数值列中找到 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进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注