python - 如何抵消 Pandas Pearson 与日期时间索引的相关性

标签 python python-3.x pandas pearson-correlation

我正在尝试获取前一周输入与下周输出的相关值。

为了这个例子,我将其设置为每周的输入将是下一周的输出,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 选项,也不知道该怎么做。

感谢任何帮助。

谢谢, 我

最佳答案

如果您在数据帧上执行.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

关于python - 如何抵消 Pandas Pearson 与日期时间索引的相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43544563/

相关文章:

python - IPython 中的 cd 与 !cd 与 %cd

python - celery 的困难 : function object has no property 'delay'

python - 如何获取 subprocess.check_output() python 模块的输出?

python Pandas : groupby on two columns and create new variables

python - 检查是否存在与列表中的字符串匹配的子字符串

python - 如何从 Pandas 中提取列表?

python - 如何裁剪 gtk pixbufs

python - 如何从 tkinter OptionMenu 获取列表变量?

python - (Python) 如何修复数据帧列值中的数字表示错误

python - 如何选择除一列的最后一行以外的行?