【发布时间】:2019-04-17 14:37:44
【问题描述】:
我有一堆股票数据,我正在尝试构建一个数据框,从相关矩阵中获取前两个股票和底部股票,以及它们的实际相关性。
假设矩阵,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] 并将它们粘贴到字典中,然后从那里构建数据框。但我无法返回相关值,而且我怀疑我并没有以最有效的方式执行此操作。
任何帮助都非常感谢,干杯
【问题讨论】:
-
相关矩阵不应该是对称的吗?还是您给定的示例只是示例矩阵?
-
相关矩阵可以是不对称的,在财务数据中很常见
-
@Gio 相关矩阵永远不能不对称。来自wikipedia:因为第 i 个随机变量与第 j 个随机变量的协方差与第 j 个随机变量与第 i 个随机变量的协方差是一回事,每个协方差矩阵是对称的。我知道这适用于协方差矩阵,但同样适用。
标签: python pandas correlation