基于列缺失值占比阈值筛选DataFrame
筛选DataFrame中缺失值占比低于指定阈值的列
核心思路
先计算DataFrame每一列的缺失值占比,再筛选出占比低于设定阈值的列,最后用这些列索引原DataFrame得到结果。
代码实现
以保留缺失值占比低于80%的列为例:
import pandas as pd import numpy as np # 1. 生成示例DataFrame(可替换为你的数据) data = { 'col1': [1, 2, np.nan, 4, 5], # 缺失值占比20% 'col2': [np.nan, np.nan, np.nan, np.nan, 1], # 缺失值占比80% 'col3': [np.nan, np.nan, 3, 4, 5], # 缺失值占比40% 'col4': [np.nan]*5 # 缺失值占比100% } df = pd.DataFrame(data) # 2. 设定阈值 threshold = 0.8 # 3. 计算每列缺失值占比并筛选符合条件的列 # isnull()生成布尔矩阵,mean()计算每列True的占比(即缺失值比例) keep_cols = df.columns[df.isnull().mean() < threshold] # 4. 得到筛选后的DataFrame filtered_df = df[keep_cols] # 查看结果 print("原数据:") print(df) print("\n筛选后数据(仅保留缺失值占比<80%的列):") print(filtered_df)
关键说明
df.isnull().mean():快速计算每列缺失值占比的核心代码- 若需要保留缺失值占比≤阈值的列,只需将判断条件改为
df.isnull().mean() <= threshold - 示例中
col2缺失值占比刚好等于80%,会被排除;col1和col3因占比低于阈值被保留
内容的提问来源于stack exchange,提问作者user19226726
相关产品推荐
相关产品推荐

