📜  如何计算 Pandas 中 NaN 值的数量?(1)

📅  最后修改于: 2023-12-03 15:38:54.284000             🧑  作者: Mango

如何计算 Pandas 中 NaN 值的数量?

在 Pandas 中,NaN(Not a Number)是一个特殊的值,用于表示缺失或不适当值。在实际的数据处理过程中,经常需要统计数据中 NaN 值的数量。本文将介绍几种不同的方法来计算 Pandas 中 NaN 值的数量。

数据准备

我们首先生成一个包含 NaN 值的 DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2, np.nan], 'B': [4, np.nan, np.nan], 'C': [7, 8, 9]})

生成的 DataFrame 如下:

| | A | B | C | |---:|----:|----:|----:| | 0 | 1 | 4 | 7 | | 1 | 2 | NaN | 8 | | 2 | NaN | NaN | 9 |

方法一:isnull() 和 sum()

isnull() 方法返回一个 dataframe,其中 NaN 值用 True 表示。我们可以对 isnull() 的输出使用 sum() 方法来计算这些 True 的数量,从而得到 NaN 值的数量。

num_nan = pd.isnull(df).sum().sum()

得到的 num_nan 值为 3。

方法二:isna() 和 sum()

isna() 方法与 isnull() 方法功能一样。我们可以使用 isna() 方法和 sum() 方法来计算 NaN 值的数量:

num_nan = df.isna().sum().sum()

得到的 num_nan 值为 3。

方法三:count() 和 size()

与之前的方法不同,count() 方法返回每列中非 NaN 值的数量,而 size() 返回整个 DataFrame 的元素数量,不管是否为 NaN 值。我们可以用这两个方法来计算出 NaN 值的数量:

num_nan = df.size - df.count().sum()

同样,得到的 num_nan 值为 3。

方法四:DataFrame.stack() 和 pd.DataFrame.isnull()

我们可以使用 DataFrame.stack() 方法将 DataFrame 转换为 Series,并将 NaN 值收缩到一个单独的索引级别中,然后使用 pd.DataFrame.isnull() 方法查找这些 NaN 值。最后,使用 sum() 方法计算这些 NaN 值的数量:

num_nan = df.stack().isnull().sum()

同样,得到的 num_nan 值为 3。

结论

本文介绍了四种不同的方法来计算 Pandas 中 NaN 值的数量。这些方法有些简单,有些复杂,但都可以提供正确的结果。在实际的数据处理过程中,根据不同的需求选择合适的方法十分重要。