滚动相关熊猫

时间:2018-08-30 10:34:49

标签: python pandas correlation

我有一个具有时间序列的数据框。 我想计算列之间的滚动相关性(周期= 20)。

store_corr=[] #empty list to store the rolling correlation of each pairs
names=[] #empty list to store the column name
df=df.pct_change(periods=1).dropna(axis=0) #Prepate dataframe of time series

for i in range(0,len(df.columns)):
    for j in range(i,len(df.columns)):
        corr = df[df.columns[i]].rolling(20).corr(df[df.columns[j]])
        names.append('col '+str(i)+' -col '+str(j))
        store_corr.append(corr)

df_corr=pd.DataFrame(np.transpose(np.array(store_corr)),columns=names)

此解决方案正在工作,并为我提供了滚动相关性。此解决方案是在Austin Mackillop(评论)的帮助下完成的。

还有另一种更快的方法吗? (即,我想避免这种双重for循环。)

1 个答案:

答案 0 :(得分:1)

此行:

corr=df.rolling(20).corr(df[df.columns[i]],df[df.columns[j]])

会产生错误,因为corr的第二个参数期望一个Bool,但是您传递了一个具有不正确真值的DataFrame。您可以查看文档here

将滚动方法应用于您提供的第二行代码中的第一个DataFrame是否可以实现您想要做的事情?

corr = df[df.columns[i]].rolling(20).corr(df[df.columns[j]])