滚动相关 pandas
Rolling correlation pandas
我有一个包含时间序列的数据框。
我想计算列之间的滚动相关性(周期 = 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)
此解决方案有效并为我提供了滚动 correlation.This 解决方案是在 Austin Mackillop(评论)的帮助下完成的。
还有其他更快的方法吗? (即我想避免这个双重 for 循环。)
这一行:
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]])
我有一个包含时间序列的数据框。 我想计算列之间的滚动相关性(周期 = 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)
此解决方案有效并为我提供了滚动 correlation.This 解决方案是在 Austin Mackillop(评论)的帮助下完成的。
还有其他更快的方法吗? (即我想避免这个双重 for 循环。)
这一行:
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]])