我有一堆股票数据,我正试图构建一个数据框架,从相关矩阵中获取前两个股票和底部股票,以及它们的实际相关性。在
假设矩阵,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相关性。在
生成的数据帧或最容易显示的内容如下所示:
^{pr2}$到目前为止,我已经能够通过使用corr[stock].nlargest().index[0:].tolist()
查看并返回相关股票名称,然后从每个列表中提取[1]
、[2]
和{
真的很感谢你的帮助,干杯
您的条件很难归纳为一个命令,但这里有一种方法可以采用。在
拆下对角线
查找前2列和后列名
您可以使用Find names of top-n highest-value columns in each pandas dataframe row上的答案来获得每行(股票)的前2个和后一个值。在
^{pr2}$现在使用^{} 为
^{3}$result
中的每一列获取corr
中相应的列值重新排序列(可选)
如果您需要可视化结果,但实际上并不需要获取和处理实际的相关值,那么为什么不使用一个非常简单的heatmap?你也可以玩绘图,让数字显示在每个方块上。在
另一个答案更多地依赖于modern pandas style。对于第二大相关性,我没有找到一个好的解决方案。我找到答案后会编辑它。在
我使用
输出: ^{pr2}$.loc[["A","B","C","D"],["A","B","C","D"]]
,这样操作只在未修改的数据帧上进行。在相关问题 更多 >
编程相关推荐