如何在 Python 中检查 NaN?

2024 年 8 月 29 日 | 4 分钟阅读

在 Python 中,“NaN” 代表 “Not a Number”,它是一个用于表示缺失或未定义数值数据的特殊值。它是 IEEE(电气和电子工程师协会) 浮点运算标准定义的特殊值。它经常用于表示数据集中缺失或未定义的数据。检查 NaN 值是 数据预处理数据清洗 的重要步骤,因为这些值可能导致下游计算出现错误或意外行为。

Python 有多种检查 NaN 值 的方法,但最常见的方法是使用内置的 math .isnan() 函数 或使用 numpy 库

math.isnan() 函数 是一个内置的 Python 函数,可以用来检查给定值是否为 NaN。它只需要一个输入,即要验证的值,如果该值为 NaN,则返回 True;否则返回 False

例如

输出

True
False

使用 math.isnan() 是检查单个变量中 NaN 值的简单有效的方法,但在处理大量数据数组时效率可能较低。

在 Python 中检查 NaN 值的另一种常见方法是使用 numpy 库。NumPy 库提供了许多用于处理数据数组的函数,包括一个 isnan() 函数,可用于检查数组中的 NaN 值。numpy.isnan() 函数 接受一个数组作为参数,并返回一个相同形状的数组,其中 NaN 位置为 True,其他位置为 False

例如

输出

[False  True False  True]

除了 numpy.isnan()。还可以使用其他 NumPy 函数来检查 NaN 值,例如 np.isnan(),它返回一个与输入数组形状相同的布尔掩码。

您还可以使用 pandas 库中的 pd.isna() 函数 来检查 DataFrameSeries 中的 NaN 值。此函数返回一个布尔掩码,其中包含 NaN 值的单元格为 True,包含有效值的单元格为 False。

例如

您还可以使用 pd.isnull() 函数,它等同于 pd.isna()

您还可以使用 pd.DataFrame.fillna() 函数 将 NaN 值替换为指定值。此函数接受的唯一输入是要用作 NaN 值替换的值。

例如

这将用 0 替换 DataFrame 中的所有 NaN 值。

在 Python 中检查 NaN 值的另一种方法是使用 numpy.isnan() 函数与 numpy.any()numpy.all() 函数 结合使用。numpy.any() 函数 如果数组中的任何元素为 True,则返回 True,否则返回 False。另一方面,numpy.all() 函数 如果数组中的所有元素都为 True,则返回 True,否则返回 False。

例如,要检查数组中是否有任何值为 NaN,您可以使用以下代码

输出

True

它将返回 True,因为数组中的一个元素是 NaN。

类似地,要检查数组中的所有值是否都为 NaN,您可以使用以下代码

例如

输出

True

这将返回 True,因为数组中的所有元素都是 NaN。

您还可以使用 numpy.isinf() 函数 来检查数组中的无穷大值。numpy.isinf() 函数 的工作方式与 numpy.isnan() 函数 类似,它返回一个具有相同形状的数组,其中输入具有无穷大值的位置为 True,其他位置为 False。

在 Python 中检查 NaN 值的另一种方法是使用 pandas.isna() 方法。此方法是 DataFrameSeries 方法,它返回一个与输入形状相同的布尔掩码,其中包含 NaN 值的单元格为 True,包含有效值的单元格为 False。

例如,如果您有一个 DataFrame df,其中包含列 'A' 和 'B',并且您想检查列 'A' 中的 NaN 值,您可以使用

这将返回一个布尔掩码,其中列 'A' 中 NaN 值的位置将为 True