我有一大批股票数据,想要建立一个数据框架,从相关矩阵中选出排名前两个和后两个的股票以及它们的实际相关性。
假设这个矩阵corr
长这样:
A B C D E
A 1.00 0.65 0.31 0.94 0.55
B 0.87 1.00 0.96 0.67 0.41
C 0.95 0.88 1.00 0.72 0.69
D 0.64 0.84 0.99 1.00 0.78
E 0.71 0.62 0.89 0.32 1.00
我要做的是能够返回最佳的两只股票,且它们之间的相关性最小,对于股票A、B、C、D和E,同时排除每个股票与自身相关性为1.00的情况。
所得到的数据框或任何易于显示的形式应如下所示:
Stock 1st 1st_Val 2nd 2nd_Val Last Last_Val
A D 0.94 B 0.65 C 0.31
B C 0.96 A 0.87 E 0.41
C A 0.95 B 0.88 E 0.69
D C 0.99 B 0.84 A 0.64
E C 0.89 A 0.71 D 0.32
到目前为止,我已经能够使用
corr[stock].nlargest().index[0:].tolist()
查看并返回相关的股票名称,并从每个列表中取出[1]
、[2]
和[-1]
,将它们放入字典中,然后再构建数据框架。但我无法返回相关系数值,而且我怀疑我的方法也不是最高效的。非常感谢您的任何帮助,谢谢。