目标:在多个预测列和一个实际数据列上使用自定义 WMAPE(加权平均绝对百分比误差)函数对 Pandas 数据框进行分组,无需 for 循环。我知道输出数据帧的 for 循环和合并可以解决问题。我想有效地做到这一点。
有: WMAPE函数,成功使用WMAPE函数在dataframe的一个预测列上。一列实际数据,可变数量的预测列。
输入数据: Pandas DataFrame 具有多个分类列(City、Person、DT、HOUR)、一个实际数据列(Actual)和四个预测列(Forecast_1 ... Forecast_4)。请参阅 csv 链接:https ://www.dropbox.com/s/tidf9lj80a1dtd8/data_small_2.csv ? dl =1
需要: WMAPE 函数在 groupby 期间在多个列上应用,并将预测列列表输入 groupby 行。
所需输出:具有分类组列和 WMAPE 的所有列的输出数据框。标签是首选但不是必需的(下面的输出图像)。
到目前为止成功的代码: 两个 WMAPE 函数:一个接收两个系列并输出单个浮点值 (wmape),一个用于 groupby (wmape_gr) 的结构化:
def wmape(actual, forecast):
# we take two series and calculate an output a wmape from it
# make a series called mape
se_mape = abs(actual-forecast)/actual
# get a float of the sum of the actual
ft_actual_sum = …Run Code Online (Sandbox Code Playgroud)