Python:编写一个函数来快速计算MAPE

Python:编写一个函数来快速计算MAPE,python,pandas,dataframe,Python,Pandas,Dataframe,我准备了一个如下所示的数据框: +------------+--------+-----------+ | Date | Actual | Predicted | +------------+--------+-----------+ | 2020-01-01 | XX | XX | +------------+--------+-----------+ | 2020-01-02 | XX | XX | +------------+----

我准备了一个如下所示的数据框:

+------------+--------+-----------+
| Date       | Actual | Predicted |
+------------+--------+-----------+
| 2020-01-01 | XX     | XX        |
+------------+--------+-----------+
| 2020-01-02 | XX     | XX        |
+------------+--------+-----------+
| 2020-01-03 | XX     | XX        |
+------------+--------+-----------+
| 2020-01-04 | XX     | XX        |
+------------+--------+-----------+
| 2020-01-05 | XX     | XX        |
+------------+--------+-----------+
| 2020-01-06 | XX     | XX        |
+------------+--------+-----------+
| ...        | ...    | ...       |
+------------+--------+-----------+
MAPE=[∑(|实际-预测|/实际)]/*100/N
(此处还提供了公式:)

N是行数

现在我正在做一项非常手工的工作,通过添加一个额外的列来计算|实际-预测|,另一个列来计算(|实际-预测|/Actual),然后将该列相加,乘以100,然后除以行数

我想知道是否有一种更优雅的方法可以帮助我实现MAPE计算过程的自动化

我设想输入是dataframe,两个列名“actual”和“predicted”,输出是Computed MAPE


非常感谢你的帮助

你确实会这么做。但是,您可以将您的业务链:

df['MAPE'] = ((df.Actual-df.Predicted).abs()
                 .div(df.Actual)
                 .cumsum()
                 /np.arange(1,len(df)+1)
             )
测试数据和输出:

   Actual  Predicted      MAPE
0      10          5  0.500000
1      11          6  0.477273
2      12          7  0.457071
3      13          8  0.438957
4      14          9  0.422594

永远是最快最好的解决方案:)非常感谢!MAPE不是一个单一的数字吗?这种解决方案似乎将其显示为一个向量,其长度与实际值和预测值相等。