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

如何在Pandas中对相关变量排序并提取前10个高相关变量

获取相关矩阵中前10个最相关变量对的实现方案

你已经完成了指定列的皮尔逊相关系数计算,代码如下:

var_0_to_var_9 = train_df.loc[:, 'var_0':'var_9']

correlation = var_0_to_var_9.corr(method = 'pearson')

print(correlation)

得到的相关矩阵为:

var_0     var_1     var_2     var_3     var_4     var_5     var_6  
var_0  1.000000 -0.000544  0.006573  0.003801  0.001326  0.003046  0.006983   
var_1 -0.000544  1.000000  0.003980  0.000010  0.000303 -0.000902  0.003258   
var_2  0.006573  0.003980  1.000000  0.001001  0.000723  0.001569  0.000883   
var_3  0.003801  0.000010  0.001001  1.000000 -0.000322  0.003253 -0.000774   
var_4  0.001326  0.000303  0.000723 -0.000322  1.000000 -0.001368  0.000049   
var_5  0.003046 -0.000902  0.001569  0.003253 -0.001368  1.000000  0.002588   
var_6  0.006983  0.003258  0.000883 -0.000774  0.000049  0.002588  1.000000   
var_7  0.002429  0.001511 -0.000991  0.002500  0.004549 -0.000995 -0.002548   
var_8  0.004962  0.004098  0.002648  0.003553  0.001194  0.000147 -0.001188   
var_9 -0.002613 -0.000832 -0.001932 -0.000826 -0.000918 -0.005279 -0.005697   

          var_7     var_8     var_9  
var_0  0.002429  0.004962 -0.002613  
var_1  0.001511  0.004098 -0.000832  
var_2 -0.000991  0.002648 -0.001932  
var_3  0.002500  0.003553 -0.000826  
var_4  0.004549  0.001194 -0.000918  
var_5 -0.000995  0.000147 -0.005279  
var_6 -0.002548 -0.001188 -0.005697  
var_7  1.000000  0.000814  0.002885  
var_8  0.000814  1.000000 -0.001073  
var_9  0.002885 -0.001073  1.000000  

提取前10个最相关变量对的代码实现

要获取前10个最相关的变量对,需处理相关矩阵中的自相关和重复对,具体步骤如下:

  1. 导入numpy库(若未导入)
  2. 剔除对角线的自相关值(变量与自身的相关系数为1,无参考意义)
  3. 将矩阵转换为变量对-相关系数的结构化形式
  4. 按相关系数绝对值降序排序(正负仅代表相关方向,不影响相关性强度)
  5. 提取前10个结果

完整代码:

import numpy as np

# 保留上三角矩阵,剔除对角线和重复的变量对
corr_no_diag = correlation.where(np.triu(np.ones(correlation.shape), k=1).astype(bool))

# 将相关矩阵堆叠为Series,转换为表格形式
corr_stacked = corr_no_diag.stack().reset_index()

# 重命名列,方便阅读
corr_stacked.columns = ['变量A', '变量B', '皮尔逊相关系数']

# 计算相关系数的绝对值,用于排序
corr_stacked['相关系数绝对值'] = corr_stacked['皮尔逊相关系数'].abs()

# 按绝对值降序排序
corr_sorted = corr_stacked.sort_values(by='相关系数绝对值', ascending=False)

# 获取前10个最相关的变量对
top_10_correlated_pairs = corr_sorted.head(10)

print(top_10_correlated_pairs)

结果说明

运行上述代码后,你会得到一个包含变量对、相关系数及绝对值的表格,前10行即为相关性最强的变量组合。注意这里的"最相关"包含正相关和负相关,仅依据相关性的强度(绝对值)排序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:35:29