大熊猫的多变量滚动相关

时间:2018-03-01 21:57:17

标签: python pandas time-series correlation

假设我长时间有3个变量A,B和C.只需使用.corr()

,我就可以在pandas中获得前3天窗口的相关矩阵
            A       B       C
23/2/2017   21.93   4.48    13.27
24/2/2017   2.65    10.18   11.95
25/2/2017   8.74    10.67   6.30
26/2/2017   6.88    10.26   8.40
27/2/2017   12.20   9.56    12.82
28/2/2017   8.12    9.54    2.67


    A      B        C
A   1       
B   -0.93   1   
C   0.38    -0.70   1

此矩阵也可以表格形式显示:

           (A,B)    (B,C)   (C,A)
23/2/2017   NaN      NaN    NaN
24/2/2017   NaN      NaN    NaN
25/2/2017   -0.93   -0.70   0.38

我需要的是一个3天的滚动窗口,其成对关联填充如上表格式。我理解有pd.corring_corr(pairwise=True)函数,只是不知道如何以表格格式获取所有可能的组合作为列。

感谢是否有人可以提供帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

如果你有很多专栏,你可以清理它,但你明白了:

df2 = pd.concat([pd.rolling_corr(df['A'], df['B'], 3), pd.rolling_corr(df['B'], df['C'], 3), pd.rolling_corr(df['A'], df['C'], 3)], axis=1)
df2.columns=['(A,B)', '(B,C)', '(A,C)']

您可以使用pairwise = True并避免使用concat,但对于您的应用程序,我认为上述方法效果很好。