Выравнивание окна корреляции Excel с окном корреляции Pandas - PullRequest
0 голосов
/ 03 декабря 2018

Я создал скользящую корреляцию в EXCEL, используя 3-периодное окно для Var_1 и Var_2.Код Excel:

=CORREL(B2:B4,C2:C4)

Я пытаюсь создать тот же результат в Python.Однако, когда я выполняю код, мои результаты смещаются на 1 строку в Python.Я также получаю 1.0 в качестве значения первой строки, чего я не понимаю.Лист считывается в Python из Excel и сохраняется в виде кадра данных 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 голосов
/ 03 декабря 2018

Вы, вероятно, могли бы использовать модуль статистики со списком:

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
...