0

我使用此代码查找每列中缺失值的百分比:

     df.isnull().mean().round(4).mul(100).sort_values(ascending=False)
     

结果显示所有列,如果您有很多列并且只需要知道缺失值的百分比,这会使输出看起来很长。我想知道如何删除此代码没有缺失值的所有列。欢迎任何其他解决方案


感谢您的任何回答。

4

2 回答 2

0

您可以将空值保存在中间数据框中并将其用于切片:

nulls = df.isnull()
nulls.loc[:, nulls.any()].mean().round(4).mul(100).sort_values(ascending=False)

示例输入:

     a    b  c
0  0.0  1.0  2
1  3.0  NaN  4
2  NaN  5.0  6

输出:

b    33.33
a    33.33
于 2021-09-08T08:33:28.347 回答
0

您可以简单地过滤您得到的内容以仅包含缺失值超过 0 的列,请考虑以下简单示例

import pandas as pd
df = pd.DataFrame({'a':[1.0,2.0,3.0],'b':[4.0,float("nan"),float("nan")],'c':[float("nan"),float("nan"),float("nan")]})
means = df.isnull().mean()
percentages = means[means>0].round(4).mul(100).sort_values(ascending=False)
print(percentages)

输出

c    100.00
b     66.67
dtype: float64
于 2021-09-08T08:43:13.333 回答