在给定阈值内提取高度相关变量的最佳方法是什么

what is the best method to extract highly correlated vaiables within the given threshold

我有一个数据框并计算了成对相关性

>>> df1 = pd.read_csv("/home/zebrafish/Desktop/stack.csv")
>>> df1.corr()
           GA        PN        PC       MBP        GR        AP
GA   1.000000  0.070541  0.259937 -0.452661  0.115722  0.268014
PN   0.070541  1.000000  0.512536  0.447831 -0.042238  0.263601
PC   0.259937  0.512536  1.000000  0.331354 -0.254312  0.958877
MBP -0.452661  0.447831  0.331354  1.000000 -0.467683  0.229870
GR   0.115722 -0.042238 -0.254312 -0.467683  1.000000 -0.248777
AP   0.268014  0.263601  0.958877  0.229870 -0.248777  1.000000
>>> 

现在如何从这个相关矩阵中列出或提取上述情况中的高度相关变量数据框很小所以很容易 select 高度相关的变量但是当数据集很大时说 4000 X 2000 比我们如何使用 python 或 pandas 或 numpy 来做到这一点。

已更新

按照建议的方法我能够得到这个非常漂亮的东西,但我的困惑仍然存在,它与编程部分无关它与理论相关

       level_0 level_1         0
0       GA      GA  1.000000
1       GA      PN  0.070541
2       GA      PC  0.259937
4       GA      GR  0.115722
5       GA      AP  0.268014
6       PN      GA  0.070541
7       PN      PN  1.000000
8       PN      PC  0.512536
9       PN     MBP  0.447831
11      PN      AP  0.263601
12      PC      GA  0.259937
13      PC      PN  0.512536
14      PC      PC  1.000000
15      PC     MBP  0.331354
17      PC      AP  0.958877
19     MBP      PN  0.447831
20     MBP      PC  0.331354
21     MBP     MBP  1.000000
23     MBP      AP  0.229870
24      GR      GA  0.115722
28      GR      GR  1.000000
30      AP      GA  0.268014
31      AP      PN  0.263601
32      AP      PC  0.958877
33      AP     MBP  0.229870
35      AP      AP  1.000000

例如在给定的和平结果波纹管中因为我想删除显示相关性大于 0.2 的变量,我们可以看到 AP 与给定阈值内的其余三个相关,而其余三个也与 AP 相关(虽然,0.2 并不代表高度相关的集合,而只是为了一个例子而选择)所以在什么基础上我可以认为变量高度相关或仅在四个 AP、GA、PN 和 PC 之间相关。

    30      AP      GA  0.268014
    31      AP      PN  0.263601
    32      AP      PC  0.958877

谢谢

你可以试试这个

corr_val=0.01
df2 = df1.corr().unstack().reset_index()
df2[df2[0]>corr_val]