如何用日期时间索引抵消 Pandas Pearson 相关性

Posted

技术标签:

【中文标题】如何用日期时间索引抵消 Pandas Pearson 相关性【英文标题】:How to Offset Pandas Pearson Correlation with Datetime Index 【发布时间】:2017-09-18 13:34:39 【问题描述】:

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

为了这个示例,我将其设置为每周的输入将是下周的输出,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 选项,不知道如何执行此操作。

感谢任何和所有的帮助。

谢谢你, 我

【问题讨论】:

顺便说一句,每 6 天一次。 【参考方案1】:

如果您对数据框执行.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

【讨论】:

恭喜 1k ;)

以上是关于如何用日期时间索引抵消 Pandas Pearson 相关性的主要内容,如果未能解决你的问题,请参考以下文章

如果我有重复的日期,如何用 pandas 中两个日期之间计算的值填充一列?

按日期对 Pandas DataFrame 进行分组

如何使用另一个日期时间索引获取具有日期时间索引的 Pandas 数据框中的行?

Pandas:在两个日期之间选择 DataFrame 行(日期时间索引)

如何测试对象是不是为 pandas 日期时间索引?

Pandas 索引日期时间切换月份和日期