【发布时间】:2021-10-21 17:06:56
【问题描述】:
我从雅虎财经下载了 2 只股票的历史价格,并合并了 2 个数据框,以计算它们在不同时间段内收盘价的相关性(参见合并数据框的附图):
2 天(日内) 3天 5天
我正在考虑的一种方法是从数据框底部迭代行,并分别以 2/3/5 行的大小获取 Close_x 和 Close_y 2 列的子集并计算相关性。计算出的相关性将作为列添加到合并的数据框中。
我是 Pandas 数据框的新手,我认为迭代每一行/列是违反数据框的本质的。我想知道是否有更有效的方法来实现我的目标。
颜色编码的框是:
- 红色:2 天收盘价的相关性
- 蓝色:3 天内的相关性...
- 绿色:5 天内的相关性...
df = pd.DataFrame([[23.02000046, 23.13999939, 24.21999931, 26.70000076, 28.03000069],
[445.9200134, 446.9700012, 444.0400085, 439.1799927, 439.8599854]], columns = ['Close_x', 'Close_y'])
对于上面代码中提取的数据,预期的结果是
最后2行的相关性为1:
最后 3 行的相关性为 -0.8867: 最后5行的相关性为-0.9510:
最终输出将具有相关系数作为新列。 将相关系数添加为新列,它将如下所示:
Close_x Close_y 2D_Corr 3D_Corr 5D_Corr
23.02000046 445.9200134 ... ... ...
23.13999939 446.9700012 ... ... ...
24.21999931 444.0400085
26.70000076 439.1799927
28.03000069 439.8599854 1 -0.8867 -0.9510
【问题讨论】:
-
请将您的数据的 small 子集作为可用于测试的可复制 代码片段以及您对提供数据。请参阅MRE - Minimal, Reproducible, Example 和How to make good reproducible pandas examples 了解更多信息。
标签: python pandas dataframe numpy correlation