如何修改pandas代码仅输出含缺失值的列及其缺失占比
pandas缺失率查询(过滤无缺失列)实现方案
原代码最简修改方案
在原有代码基础上新增过滤逻辑即可,仅保留缺失率大于0的列结果:
df.isnull().mean().round(4).mul(100).sort_values(ascending=False).loc[lambda x: x > 0]
其他可选实现方案
- 先筛选存在缺失的列再计算,适合列数极多的场景,减少后续计算量:
# 先提取存在缺失值的列名 has_na_cols = df.columns[df.isnull().any()] # 仅针对目标列计算缺失率 df[has_na_cols].isnull().mean().round(4).mul(100).sort_values(ascending=False)
- 分步骤计算+过滤,可读性更高:
# 先计算所有列的缺失率 all_na_ratio = df.isnull().mean().round(4).mul(100) # 过滤后降序输出 all_na_ratio[all_na_ratio > 0].sort_values(ascending=False)
- 扩展方案:同时输出缺失值数量和缺失率,统计信息更直观:
import pandas as pd na_info = pd.DataFrame({ '缺失值个数': df.isnull().sum(), '缺失率(%)': df.isnull().mean().round(4).mul(100) }) # 过滤无缺失列后按缺失率降序排列 na_info[na_info['缺失值个数'] > 0].sort_values(by='缺失率(%)', ascending=False)
内容的提问来源于stack exchange,提问作者Ngoc ng
相关产品推荐
相关产品推荐

