我有很多像[' 2017-03-01':20,' 2017-03-02':1,' 2017-03-03' :50]等......
我的代码:
npm install angularfire2 firebase@4.6.2 --save
我怎样才能顺利?
UPD我想要一个趋势而不是破碎的数据。
答案 0 :(得分:1)
正如Dov所说,问题远非唯一确定,它取决于许多参数,例如你想要平滑它的“多少”(离原始数据越远越平滑),“你想要如何平滑”它(仅查看过去,或未来;如果你想使用恒定权重,高斯权重,指数等),等等。
由于你有时间序列,我假设你只想看过去,以避免预测未来(数据泄漏)。
最简单的解决方案是rolling mean,David L已经说过了:
p = p.rolling(5).mean()
这可以让你每天平均前5天,这显然更平滑(如果使用更大的数字,你会得到更平滑的线条)。
这样做的缺点是,5天前的数据与“新鲜”数据的重量相同,而从6天开始,重量突然变为0. exponential moving average获得了更好的结果:
p = p.ewm(com=5).mean()
这给出了与上面类似的结果,但权重以指数方式递减,以便给前一天几乎完全的权重,稍微减去之前的那个,然后仍然少一些,等等。(5这里是“质心”,出于实际目的,你应该大致使用与第一行相同的参数来得到类似的结果)