You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从df.corr()生成的相关矩阵中筛选相关系数大于0.75的列名

Pandas筛选相关系数大于0.75的列名实现方法

首先需排除相关系数矩阵中自身与自身的相关系数(固定为1)、以及上下三角重复的列对,再做阈值筛选即可,具体实现如下:

基础实现(含去重,推荐)

依赖numpy完成高效去重,每对列仅出现一次:

  • 完整可运行代码:
import pandas as pd
import numpy as np

# 1. 生成原始相关系数矩阵
corr_matrix = df.corr()

# 2. 屏蔽对角线(自身相关)和下三角的重复值,仅保留上三角非重复列对
corr_matrix = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(bool))

# 3. 筛选相关系数大于0.75的结果
high_corr = corr_matrix.stack().reset_index()
high_corr.columns = ['列名1', '列名2', '相关系数']
high_corr = high_corr[high_corr['相关系数'] > 0.75]

# 输出符合条件的列对与对应相关系数
print(high_corr)

# 如需提取所有涉及到的唯一列名,执行以下代码
unique_high_corr_cols = pd.unique(high_corr[['列名1', '列名2']].values.ravel())
print(unique_high_corr_cols)

无numpy依赖实现

如果不想引入numpy,可通过列名比较去重:

import pandas as pd

corr_matrix = df.corr()
# 展开矩阵并过滤重复对、自身对
corr_pairs = corr_matrix.unstack().reset_index()
corr_pairs.columns = ['列名1', '列名2', '相关系数']
corr_pairs = corr_pairs[corr_pairs['列名1'] < corr_pairs['列名2']]
# 筛选阈值
high_corr = corr_pairs[corr_pairs['相关系数'] > 0.75]
print(high_corr)

说明

  • 若不需要去重,可跳过上述去重步骤,直接执行corr_matrix.unstack()[corr_matrix.unstack() > 0.75]即可得到所有两两组合的结果(包含(A,B)和(B,A)、以及自身和自身的匹配项)
  • 可根据需求修改阈值0.75为其他数值

内容的提问来源于stack exchange,提问作者user17051608

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:36:07