如何在Pandas DataFrame中筛选中位数绝对偏差最高的2000列
提取中位数绝对偏差最高的2000列
步骤说明
- 计算DataFrame每一列的中位数绝对偏差(MAD)
- 对MAD值按降序排序,选取前2000个列的名称
- 用选中的列名从原DataFrame中提取对应列,生成新的DataFrame
代码实现
import pandas as pd # 假设你的原DataFrame名为df # 1. 计算每列的MAD(默认缩放不影响排序结果,所有列都乘以同一系数) column_mad = df.mad(axis=0) # 2. 按MAD降序排序,取前2000列的名称 top_columns = column_mad.sort_values(ascending=False).head(2000).index # 3. 生成新的DataFrame new_df = df[top_columns]
补充说明
- 如果需要未缩放的原始MAD值(不除以1.4826),可修改第一步代码:
但缩放与否不改变列的排序结果,两种方式选出的列完全一致。column_mad = df.mad(axis=0, scale=False) - 针对20000列的大尺寸DataFrame,该方法效率很高:
mad()是向量化操作,排序和索引筛选都是Pandas内置的高效方法。
内容的提问来源于stack exchange,提问作者DeepLearner123
相关产品推荐
相关产品推荐

