📅  最后修改于: 2023-12-03 15:38:54.284000             🧑  作者: Mango
在 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() 方法返回一个 dataframe,其中 NaN 值用 True 表示。我们可以对 isnull() 的输出使用 sum() 方法来计算这些 True 的数量,从而得到 NaN 值的数量。
num_nan = pd.isnull(df).sum().sum()
得到的 num_nan 值为 3。
isna() 方法与 isnull() 方法功能一样。我们可以使用 isna() 方法和 sum() 方法来计算 NaN 值的数量:
num_nan = df.isna().sum().sum()
得到的 num_nan 值为 3。
与之前的方法不同,count() 方法返回每列中非 NaN 值的数量,而 size() 返回整个 DataFrame 的元素数量,不管是否为 NaN 值。我们可以用这两个方法来计算出 NaN 值的数量:
num_nan = df.size - df.count().sum()
同样,得到的 num_nan 值为 3。
我们可以使用 DataFrame.stack() 方法将 DataFrame 转换为 Series,并将 NaN 值收缩到一个单独的索引级别中,然后使用 pd.DataFrame.isnull() 方法查找这些 NaN 值。最后,使用 sum() 方法计算这些 NaN 值的数量:
num_nan = df.stack().isnull().sum()
同样,得到的 num_nan 值为 3。
本文介绍了四种不同的方法来计算 Pandas 中 NaN 值的数量。这些方法有些简单,有些复杂,但都可以提供正确的结果。在实际的数据处理过程中,根据不同的需求选择合适的方法十分重要。