在 Python 中使用 Pandas 为 groupby 对象计算 WMAPE

Calculate WMAPE for groupby object with Pandas in Python

我有一个名为“收入”的数据框,如下所示:

我想计算每个月的 WMAPE。

https://en.wikipedia.org/wiki/WMAPE

维基百科建议 WMAPE 是一个标量,我正在努力弄清楚如何为 groupby 对象计算它。我知道我必须从这样做开始:

revenue.groupby('month')

要按月计算不带分组的 WMAPE,这是我的代码:

sum(abs(revenue['actual'] - revenue['forecast'])) / sum(abs(revenue['actual']))
Out[1]: 0.12206572769953052

如何为 groupby 对象执行此操作?

您可以将您的计算代码传递给groupby.apply:

revenue.groupby('month').apply(lambda x:sum(abs(x['actual'] - x['forecast'])) / sum(abs(x['actual'])))
# month
# July    0.109890
# June    0.131148
# dtype: float64