如何在Pandas中筛选与指定列高度相关的数据列
快速筛选与响应变量相关的预测变量(Pandas实现)
刚好我经常处理这类高维DataFrame的特征筛选需求,用Pandas几步就能高效搞定,完全适配你100多列的数据集:
步骤1:计算所有列与响应变量A的相关系数
直接调用Pandas内置的corr()方法,然后提取对应A列的结果——这样会得到一个Series,索引是所有列名,值是对应列和A的皮尔逊相关系数:
corr_with_A = df.corr()['A']
步骤2:筛选符合阈值的列
按照你设定的>0.2阈值筛选,这里建议考虑绝对值(负相关的变量往往也有预测价值),如果只需要正相关,去掉abs()即可:
# 保留与A相关系数绝对值大于0.2的列(含A本身) filtered_cols = corr_with_A[abs(corr_with_A) > 0.2].index.tolist() # 若仅需正相关变量,用这行: # filtered_cols = corr_with_A[corr_with_A > 0.2].index.tolist()
步骤3:生成筛选后的数据集
用筛选出的列名切片原DataFrame,得到只包含响应变量和符合条件的预测变量的新DataFrame:
filtered_df = df[filtered_cols]
额外提速小技巧
如果你的数据集行数特别多(比如百万级),可以先移除完全重复的列,减少不必要的计算量:
# 先去重列 df = df.loc[:, ~df.columns.duplicated()] # 再计算相关系数 corr_with_A = df.corr()['A']
你已经生成的热力图可以和这个结果互相验证,确保筛选的准确性~
内容的提问来源于stack exchange,提问作者Alex Xu
相关产品推荐
相关产品推荐

