Python 相关矩阵:提取具有高R值的变量

Python 相关矩阵:提取具有高R值的变量,python,matrix,correlation,Python,Matrix,Correlation,如何获得只列出绝对值相关性大于0.7的变量的输出 我希望输出与此类似: four: one, three one: three 谢谢你的时间 代码 输出 four one three two four 1.000000 -0.989949 -0.880830 -0.670820 one -0.989949 1.000000 0.913500 0.632456 three -0.880830 0.913500 1.00000

如何获得只列出绝对值相关性大于0.7的变量的输出

我希望输出与此类似:

four: one, three
one: three
谢谢你的时间

代码

输出

           four       one     three       two
four   1.000000 -0.989949 -0.880830 -0.670820
one   -0.989949  1.000000  0.913500  0.632456
three -0.880830  0.913500  1.000000  0.262613
two   -0.670820  0.632456  0.262613  1.000000

如果您只想将其打印出来,这将起作用:

col_names = y.corr().columns.values

for col, row in (y.corr().abs() > 0.7).iteritems():
    print(col, col_names[row.values])
请注意,这是可行的,但可能会很慢,因为
iteritems
方法会将每一行转换为一个系列。

这对我来说是可行的:

corr = y.corr().unstack().reset_index() #group together pairwise
corr.columns = ['var1','var2','corr'] #rename columns to something readable
print( corr[ corr['corr'].abs() > 0.7 ] ) #keep correlation results above 0.7
通过将最后一行更改为,可以进一步排除具有相同名称(corr=1)的变量

print( corr[ (corr['corr'].abs() > 0.7) & (corr['var1'] != corr['var2']) ] )

谢谢juanpa.arrivillaga。我试图编辑您的代码以排除r=1,但收到错误消息。您将如何编辑此代码?对于col,在(y.corr().abs()>0.7)中的行。iteritems():对于col,在(y.corr().abs()>0.7和y.corr().abs()中的行,这不适用于我啊。所以,如果你想对pandas对象进行元素逻辑操作,你需要对
使用
&
,对
使用
。所以这应该是可行的:
(y.corr().abs()>0.7)和(y.corr().abs()<1)
。请看下面的答案:再次感谢!您解决了我的问题,我也从您所做的事情中学到了很多。我一定会为此付出代价的。
print( corr[ (corr['corr'].abs() > 0.7) & (corr['var1'] != corr['var2']) ] )