熊猫滚动关联引入差距

时间:2017-10-27 13:52:43

标签: python pandas correlation

我有一个相对干净的数据集,有两列没有间隙,快照如下所示:

enter image description here

我运行以下代码行:

correlation = pd.rolling_corr(data['A'], data['B'], window=120)

由于某种原因,这会输出一个数据帧(如下图所示),其中有很大的间隙:

enter image description here

我之前没有亲自见过这个问题,在查看数据(不仅仅是代码)之后我不确定该问题是什么?

2 个答案:

答案 0 :(得分:0)

您在correlation变量中获得NAN值,其中行数小于window属性的值。

import pandas as pd
import numpy as np

data = pd.DataFrame({'A':np.random.randn(10), 'B':np.random.randn(10)})
correlation = pd.rolling_corr(data['A'], data['B'], window=3)
print correlation
0         NaN
1         NaN
2    0.852602
3    0.020681
4   -0.915110
5   -0.741857
6    0.173987
7    0.874049
8   -0.874258
9   -0.835340

docs for this functionmin_periods属性部分中对此进行了警告:"获得值所需的窗口中的最小观察次数(否则结果为NA)。"

默认None似乎不起作用,因为除非您为此设置了值,否则您认为自己不会看到NaN。

答案 1 :(得分:0)

这是因为时间序列中缺少日期,周末等。您的示例中的证据是7/2/2003 - > 2003年10月2日。一种解决方案是通过重新索引时间序列数据帧来填补这些空白。

df.index = pd.DatetimeIndex(df.index) # required
df = df.asfreq('D') # reindex will include missing days
df = df.fillna(method='bfill') # fill / interpolate NaNs
corr = df.A.rolling(30).corr(df.B) # no gaps