将Excel相关窗口与Pandas相关窗口对齐

时间:2018-12-03 12:48:14

标签: python excel pandas time-series rolling-computation

我使用三个周期窗口为Var_1和Var_2在EXCEL中创建了滚动相关性.Excel代码为:

=CORREL(B2:B4,C2:C4)

我正在尝试在Python中创建相同的结果。但是,当我执行代码时,我的结果在Python中向下移动1行。我也得到1.0作为第一行值,我不明白。 该工作表将从Excel中读入Python,并另存为pandas数据框。 这是图片。Excel Spreadsheet snippet 我创建的python代码重新创建了这种滚动相关性。

df2 = pd.DataFrame((df.iloc[::1,1]).rolling(window = 3,min_periods = 1,center = True).corr((df.iloc[::1,2])))

Python Results showing row shift

1 个答案:

答案 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