如何计算 Pandas 数据框中每一行中缺失值的数量?

数据挖掘 Python 熊猫
2021-10-12 22:02:42

如何获取 Pandas 数据框中每一行中缺失值的数量。我想将数据框拆分为不同的数据框,这些数据框在每行中具有相同数量的缺失值。

有什么建议吗?

4个回答

在使用 pandas 时,尽量避免在循环中执行操作,包括apply,mapapplymap。那很慢!

DataFrame 对象有两个轴:“axis 0”和“axis 1”。“axis 0”代表行,“axis 1”代表列。

如果要计算每列中的缺失值,请尝试:

df.isnull().sum()默认或df.isnull().sum(axis=0)

另一方面,您可以通过以下方式计算每一行(这是您的问题):

df.isnull().sum(axis=1)

它比 Jan van der Vegt 的解决方案快大约 10 倍(顺便说一句,他计算的是有效值,而不是缺失值):

In [18]: %timeit -n 1000 df.apply(lambda x: x.count(), axis=1)
1000 loops, best of 3: 3.31 ms per loop

In [19]: %timeit -n 1000 df.isnull().sum(axis=1)
1000 loops, best of 3: 329 µs per loop

您可以像这样对行应用计数:

test_df.apply(lambda x: x.count(), axis=1)

测试_df:

    A   B   C
0:  1   1   3
1:  2   nan nan
2:  nan nan nan

输出:

0:  3
1:  1
2:  0

您可以将结果添加为这样的列:

test_df['full_count'] = test_df.apply(lambda x: x.count(), axis=1)

结果:

    A   B   C   full_count
0:  1   1   3   3
1:  2   nan nan 1
2:  nan nan nan 0

最简单的方法:

df.isnull().sum(axis=1)

或者,您可以简单地使用数据框对象的 info 方法:

df.info()

它为每列提供非空值的计数。