我使用此代码查找每列中缺失值的百分比:
df.isnull().mean().round(4).mul(100).sort_values(ascending=False)
结果显示所有列,如果您有很多列并且只需要知道缺失值的百分比,这会使输出看起来很长。我想知道如何删除此代码没有缺失值的所有列。欢迎任何其他解决方案
感谢您的任何回答。
我使用此代码查找每列中缺失值的百分比:
df.isnull().mean().round(4).mul(100).sort_values(ascending=False)
结果显示所有列,如果您有很多列并且只需要知道缺失值的百分比,这会使输出看起来很长。我想知道如何删除此代码没有缺失值的所有列。欢迎任何其他解决方案
感谢您的任何回答。
您可以将空值保存在中间数据框中并将其用于切片:
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
您可以简单地过滤您得到的内容以仅包含缺失值超过 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