如何基于缺失值百分比筛选DataFrame列名并生成变量?
问题描述
我已编写代码用于显示各列的缺失值百分比,请问如何创建一个新变量,使其仅包含缺失值占比超过X%的列名?原本以为可以用if语句实现,但不确定具体写法。
后续实现进展
1. 计算分类变量的缺失值占比
首先筛选出所有分类变量,并计算它们的缺失值数量与占比:
# 生成包含缺失值的分类变量列表 cat_vars2 = X_train.select_dtypes(include=['object']) len(cat_vars2) print(cat_vars2.isnull().sum()) # 输出各变量的缺失值百分比 percent_missing = cat_vars2.isnull().sum() * 100 / len(cat_vars2) missing_value_cat_vars = pd.DataFrame({'column_name': cat_vars2.columns, 'percent_missing': percent_missing}) missing_value_cat_vars.sort_values('percent_missing', inplace=True) print(missing_value_cat_vars)
上述代码会输出每个分类变量的缺失值数量,以及按缺失占比排序后的结果。
2. 筛选不同缺失占比的列名
通过loc索引直接筛选出符合条件的列名,存入新变量:
# 筛选缺失占比≥10%的列名,用于后续用'missing'字符串填充 with_string_missing=list(missing_value_cat_vars.loc[missing_value_cat_vars['percent_missing']>=10,'column_name']) print(with_string_missing) # 筛选缺失占比<90%的列名,用于后续用最频繁类别填充 with_frequent_category=list(missing_value_cat_vars.loc[missing_value_cat_vars['percent_missing']<90,'column_name']) print(with_frequent_category)
执行后会分别输出两组符合条件的列名列表。
内容的提问来源于stack exchange,提问作者cheezeduckies
相关产品推荐
相关产品推荐

