如何在 Python 中检查 NaN

如何在 Python 中检查 NaN

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

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

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

例如

import math
x = float('nan')
print(math.isnan(x)) 
y = 2.0
print(math.isnan(y))
Python

输出

True
False
Python

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

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

比如说

import numpy as np
x = np.array([1.0, np.nan, 3.0, np.nan])
print(np.isnan(x))
Python

输出

[False  True False  True]
Python

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

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

比如说

import pandas as pd
df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [5, np.nan, np.nan], 'C': [1, 2, 3]})
print(df.isna())
Python

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

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

比如说

df.fillna(0, inplace=True)
Python

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

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

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

import numpy as np
x = np.array([1.0, np.nan, 3.0, 4.0])
print(np.any(np.isnan(x)))
Python

输出

True
Python

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

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

比如说:

y = np.array([np.nan, np.nan, np.nan, np.nan])
print(np.all(np.isnan(y))
Python

输出

True
Python

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

您还可以使用 numpy.isinf() 函数 检查数组中的无限值。numpy.isinf() 函数 的工作方式类似于 numpy.isnan() 函数,并在输入具有无限值的位置处返回相同形状的数组中 True,在其他地方为 False。

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

例如,如果您有一个名为 df 的 DataFrame,其中包含列 ‘A’和’B’,并且您想要检查列 ‘A’ 中的 NaN 值,则可以使用:

import pandas as pd
df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [5, np.nan, np.nan], 'C': [1, 2, 3]})
print(df['A'].isna())
Python

这将返回一个布尔掩码,在该掩码中,列 ‘A’ 中 NaN 值的位置将为 True。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python 教程

登录

注册