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不是一个单一的数字吗?这种解决方案似乎将其显示为一个向量,其长度与实际值和预测值相等。