球门
我有代表开支的数据,包括日期和类别,我想绘制
一段时间内每个类别的滚动平均值
来源
我尝试过使用和组合以下内容,但没有成功
尝试和MCVE
使用第二个链接,我得到的最好的结果是
import pandas as pd
from matplotlib import pyplot as plt
from random import randrange, seed
from datetime import datetime
seed(321)
nb = 24
df = pd.DataFrame({
"date": [datetime(2023, 1 + i // 2, 5) for i in range(nb)],
"category": [item for _ in range(nb // 2) for item in ["food", "wear"]],
"value": [randrange(10, 120) for _ in range(nb)],
})
df.set_index("date", inplace=True)
all_s = []
for x in set(df["category"]):
s = df.loc[df['category'] == x, "value"]
s = s.groupby(pd.Grouper(freq="ME")).sum()
all_s.append(s.rename(x))
df = pd.concat(all_s, axis=1).fillna(0).asfreq("ME", fill_value=0)
df.plot(style='.-', figsize=(15, 20), ylim=(0, 130))
plt.show()
在中渲染
预料
我希望添加类似的内容
.rolling(window=3, min_periods=1)
在某个地方,在图上画一条平坦的线,避免峰值,只得到给定时间段的平均值