我使用三个周期窗口为Var_1和Var_2在EXCEL中创建了滚动相关性.Excel代码为:
=CORREL(B2:B4,C2:C4)
我正在尝试在Python中创建相同的结果。但是,当我执行代码时,我的结果在Python中向下移动1行。我也得到1.0作为第一行值,我不明白。 该工作表将从Excel中读入Python,并另存为pandas数据框。 这是图片。 我创建的python代码重新创建了这种滚动相关性。
df2 = pd.DataFrame((df.iloc[::1,1]).rolling(window = 3,min_periods = 1,center = True).corr((df.iloc[::1,2])))
答案 0 :(得分:0)
您可能可以将stats模块与列表理解一起使用:
df['r_value'] = [scipy.stats.linregress(df['Var_1'].loc[i:i+2], df['Var_2'].loc[i:i+2])[2] for i in range(len(df))]
Var_1 Var_2 r_value
0 5 -55 -0.525909
1 41 -44 -0.455413
2 85 -65 0.032059
3 55 -77 0.896258
4 65 -25 0.388874
5 47 -77 0.474843
6 25 -48 1.000000
7 63 -12 0.000000