2017-04-21 48 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

相关问题