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

jax*_*jax 3 python numpy scipy pandas

我有一个数据帧,并计算了成对相关

>>> 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
>>> 
Run Code Online (Sandbox Code Playgroud)

现在从这个相关矩阵中如何在上述情况下数据框很小的情况下列出或提取高度相关的变量,以便容易选择高度相关的变量,但是当数据集很大时,例如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
Run Code Online (Sandbox Code Playgroud)

例如,在给定的结果平整度下,由于我想删除显示相关性大于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
Run Code Online (Sandbox Code Playgroud)

谢谢

ste*_*boc 5

你可以试试看

corr_val=0.01
df2 = df1.corr().unstack().reset_index()
df2[df2[0]>corr_val]
Run Code Online (Sandbox Code Playgroud)