2017-04-21 89 views
0

我正在嘗試獲取前一週的輸入的相關值到下一週的輸出。如何抵消熊貓皮爾遜與日期時間索引的相關性

爲了這個例子我已經設置了它,每週的輸入是下一週的輸出,df.corr()應該給出1.000000的結果。

我原來的數據是這樣的:在這裏上傳

Date  Input  Output 
1/1/2010 73   73 
1/7/2010  2   73 
1/13/2010 3   2 
1/19/2010 4   3 

全樣本數據: https://drive.google.com/open?id=0B4xdnV0LFZI1MzRUOUJkcUY4ajQ

這裏是到目前爲止我的代碼:

import pandas as pd 
df = pd.read_csv('pearson.csv') 
df['Date'] = pd.to_datetime(df['Date'], errors = 'coerce') 
df = df.set_index(pd.DatetimeIndex(df['Date'])) 
df = df[['Input', 'Output']] 
x = df.corr(method = 'pearson', min_periods=1) 
print(x) 

而作爲一個新手在這裏就是我卡住了。我沒有看到該函數中內置的shift選項,並且不知道如何執行此操作。

任何和所有的幫助表示讚賞。

謝謝你,我

+0

BTW這是每6天。 – piRSquared

回答

3

如果你在一個數據幀做.corr,就會產生相關矩陣。

在你的情況下,你只是想要兩個時間序列之間的相關性,你可以用下面的代碼實現這一點。請注意,時間序列的.corr方法需要參數other,這是計算相關性的序列。

df["Input"].corr(df["Output"].shift(-1), method = 'pearson', min_periods = 1) #1 

相反,如果你想要的相關矩陣,你應該首先用移輸出一個數據幀,然後計算相關:

temp_df = pd.concat([df['Input'], df['Output'].shift(-1)], axis = 1).dropna() 
temp_df.corr(method = 'pearson', min_periods = 1) 

#  Input Output 
#Input  1.0  1.0 
#Output 1.0  1.0 
+1

恭喜1k;) – jezrael

+0

這是一個很好的答案。 – piRSquared

相關問題