为啥熊猫滚动意味着居中窗口
Posted
技术标签:
【中文标题】为啥熊猫滚动意味着居中窗口【英文标题】:Why does Pandas rolling mean centres the window为什么熊猫滚动意味着居中窗口 【发布时间】:2021-12-22 21:41:34 【问题描述】:我想创建一个年度数据图表和一个 5 年移动平均值,包括当前和过去 4 年的值。但是我的 5 年窗口居中,我不知道为什么。我的意思是第一个移动平均线从 3 年开始,最终值在去年的第 3 年。根据我的数据,移动平均线跌落悬崖,因为最后一年不完整 - 我曾预计最终值也会下降,但我无法弄清楚如何让移动平均线按预期工作。
我的代码在下面
#Plot historical revenue for context. Drop last year as it is incomplete
data=df_full.groupby('year').agg(Revenue=('price',sum)).reset_index()
data=data[:-1]
dataMA=df_full.groupby('year').agg(Revenue=('price',sum)).reset_index().rolling(5,center=False).mean()
fig=go.Figure()
fig.add_trace(go.Scatter(x=data.year, y=data.Revenue, name="Revenue"))
fig.add_trace(go.Scatter(x=dataMA.year, y=dataMA.Revenue, name="5 year Average"))
fig.update_layout(title="Annual Revenue 2001 to 2019",
xaxis_title="Year",
yaxis_title="Annual Revenue $")
fig.show()
我尝试添加“centre=False”,但这没有任何区别。图表仍然如下所示。
【问题讨论】:
如果有帮助,请不要忘记将我的答案打勾为正确?? 【参考方案1】:看,它应该可以工作。 因为,我没有你的数据集的样子——我自己创建的
ser = pd.Series(np.random.randint(10,1000, 19), index=range(2001, 2020))
# Should look like this after your Group by
2001 578
2002 388
2003 803
2004 413
2005 125
2006 331
2007 179
2008 180
2009 331
2010 875
2011 422
2012 699
2013 256
2014 918
2015 566
2016 754
2017 521
2018 200
2019 16
dtype: int32
现在,开始滚动:
ser.plot()
plt.ylim([0, df.max()])
ser.rolling(5, center=False).mean().plot()
plt.xticks(range(2000, 2020, 5));
结果是:
现在我想
您应该以如上所示的简单形式获取数据并首先存储在变量中 — 而不是将所有操作叠加在一起形成一条长线。
然后尝试相同。它应该可以工作。
【讨论】:
感谢 Aayush Shah,通过它我发现移动 reset_index 命令使其按预期工作。以上是关于为啥熊猫滚动意味着居中窗口的主要内容,如果未能解决你的问题,请参考以下文章