在 Pandas DataFrame 中统计所有 NaN 的数量

4
我正在尝试计算 Pandas Series 中的 NaN 元素数量,数据类型为 'numpy.float64' 类。我需要知道有多少个 NaN 元素,该 Series 的数据类型是 'pandas.core.series.Series'。
这是为了计算 Pandas Series 中的 null 值。
import pandas as pd
oc=pd.read_csv(csv_file)
oc.count("NaN")

我期望 oc,count("NaN") 的输出结果是7,但实际输出是'Level NaN must be same as name (None)'


1
df['col_name'].isna().sum()?请问这行代码是什么意思? - anky
5个回答

2
count 函数的参数并不是你想要计算的内容(实际上它是轴名称或索引)。
如果你想要计算整个 DataFrame 中 NaN 的数量,可以使用 df.isna().values.sum();如果你想要计算特定列中 NaN 的数量,可以使用 len(df) - df['column'].count()

1
如果您的数据框看起来像这样;
aa = pd.DataFrame(np.array([[1,2,np.nan],[3,np.nan,5],[8,7,6],
                 [np.nan,np.nan,0]]), columns=['a','b','c'])
    a    b    c
0  1.0  2.0  NaN
1  3.0  NaN  5.0
2  8.0  7.0  6.0
3  NaN  NaN  0.0

要按列计算“nan”,您可以尝试这个

aa.isnull().sum()
a    1
b    2
c    1

总计 nan 的数量

aa.isnull().values.sum()
4

.isnull().values.sum()和.isnull().sum(),它们有什么不同? - GursimranSe
.values 给出了一个 numpy 表示,因此对其求和将给出总计数。否则,仅使用 isnull().sum 将按列求和。 - MananVyas

0

如果你的 Series.dtypefloat64,你可以使用以下任一方法:

oc.isin([np.nan]).sum()
oc.isna().sum()

如果您的 Series 包含多种数据类型,您可以使用以下方法:
oc.isin([np.nan, 'NaN']).sum()

0

oc.size:返回包括NaN在内的数据框中的总元素数
oc.count().sum():返回不包括NaN在内的数据框中的总元素数

因此,另一种计算数据框中NaN数量的方法是对它们进行减法运算:

NaN_count = oc.size - oc.count().sum()

0

只是为了好玩,你可以选择任何一种

df.isnull().sum().sum()

或者

len(df)*len(df.columns) - len(df.stack())

如果列名超过25个,它将不会显示所有与列相关的NaN计数。 - GursimranSe
@seeon 移除一个总和,然后您可以得到每列的NaN计数。 - Quang Hoang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接