【发布时间】:2016-05-14 05:02:56
【问题描述】:
我在使用布林带算法时遇到问题。我想将此算法应用于我的时间序列数据。
代码:
length = 1440
dataframe = pd.DataFrame(speed)
ave = pd.stats.moments.rolling_mean(speed,length)
sd = pd.stats.moments.rolling_std(speed,length=1440)
upband = ave + (sd*2)
dnband = ave - (sd*2)
print np.round(ave,3), np.round(upband,3), np.round(dnband,3)
输入:
speed=[96.5, 97.0, 93.75, 96.0, 94.5, 95.0, 94.75, 96.0, 96.5, 97.0, 94.75, 97.5, 94.5, 96.0, 92.75, 96.5, 91.5, 97.75, 93.0, 96.5, 92.25, 95.5, 92.5, 95.5, 94.0, 96.5, 94.25, 97.75, 93.0]
“ave”变量的结果:
[1440 行 x 1 列] 0 0 南 1 南 2 钠 3 钠 4 南 5 南 6 南 7 南 8 南 9 南 10 南 11 南 12 南 13 南 14 南 15 南 16 南 17 NaN
【问题讨论】:
-
据我了解 rolling_mean 的文档,您应该将 Series 或 DataFrame 传递给 rolling_mean 而不是列表。 (见pandas.pydata.org/pandas-docs/stable/generated/…)
-
谢谢,我把list转成df了,现在又报错了。由于 ave 和 sd 变量,我得到了 NaN 结果。 @StefanReinhardt
-
这是长度属性引起的...
-
如果您还有其他问题,请打开另一个问题。当你解决一个问题并找到另一个问题时,不要改变你的问题。
标签: python list pandas time time-series