2015-12-22 5 views
0

У меня есть кадр данных и серия, в которой я хотел бы вернуть скользящую корреляцию в качестве нового фрейма данных.Корреляция кадра данных Pandas с помощью серии

Итак, у меня есть 3 столбца в df1, я хотел бы вернуть новый кадр данных, который является скользящей корреляцией каждого из этих столбцов с объектом Series.

import pandas as pd 

df1 = pd.read_csv('https://bpaste.net/raw/d0456d3a020b') 
df1['Date'] = pd.to_datetime(df1['Date']) 
df1 = df1.set_index(df1['Date']) 
del df1['Date'] 


df2 = pd.read_csv('https://bpaste.net/raw/d5cb455cb091') 
df2['Date'] = pd.to_datetime(df2['Date']) 
df2 = df2.set_index(df2['Date']) 
del df2['Date'] 


pd.rolling_corr(df1, df2) 

результат https://bpaste.net/show/58b59c656ce4 дает пренебрежимо малый и 1s только

pd.rolling_corr(df1['IWM_Close'], spy, window=22) 

дает идеальному серии вернулся, но я не хочу, чтобы перебрать столбцы кадра данных. Есть ли лучший способ сделать это?

Спасибо.

ответ

1

Я считаю, что ваш второй вход должен быть Series, который должен быть скоррелирован со всеми columns в первых DataFrame.

Это работает:

index = pd.DatetimeIndex(start=date(2015,1,1), freq='W', periods = 100) 
df1 = pd.DataFrame(np.random.random((100,3)), index=index) 
df2 = pd.DataFrame(np.random.random((100,1)), index=index) 
print(pd.rolling_corr(df1, df2.squeeze(), window=20).tail()) 

или, к тому же результату:

df2 = pd.Series(np.random.random(100), index=index) 
print(pd.rolling_corr(df1, df2, window=20).tail()) 

        0   1   2 
2016-10-30 -0.170971 -0.039929 -0.091098 
2016-11-06 -0.199441 0.000093 -0.096331 
2016-11-13 -0.213728 -0.020709 -0.129935 
2016-11-20 -0.075859 0.014667 -0.153830 
2016-11-27 -0.114041 0.019886 -0.155472 

, но это не - обратите внимание на отсутствие .squeeze() - только соотносит соответствия columns:

print(pd.rolling_corr(df1, df2, window=20).tail()) 

        0 1 2 
2016-10-30 0.019865 NaN NaN 
2016-11-06 0.087075 NaN NaN 
2016-11-13 0.011679 NaN NaN 
2016-11-20 -0.004155 NaN NaN 
2016-11-27 0.111408 NaN NaN 
Смежные вопросы