熊猫:使用数据框和一系列数据按行计算加权平均值

阿诺德·苏扎(Arnold Souza)

我试图进行加权平均,但遇到一个疑问:

问题

我想创建一个名为answer的新列,该列计算每行与在这种情况下命名为的加权值列表之间的结果month如果我使用,df.mean()我将按月获得一个简单的平均值,而这不是我想要的。这样做的想法是在年底开始时将更多的重要性放在首位,而在需求开始时则减少需求。这就是为什么我要使用加权平均计算。

excel中,我将使用以下波纹管公式。我在将此计算转换为熊猫数据框时遇到麻烦。

=SUMPRODUCT( demands[@[1]:[12]] ; month )/SUM(month)

我找不到解决此问题的方法,并且我非常感谢您提供有关此主题的帮助。

先感谢您。

这是一个虚拟数据框,作为示例:

范例程式码

demand = pd.DataFrame({'1': [360, 40, 100, 20, 55],
                       '2': [500, 180, 450, 60, 50],
                       '3': [64, 30, 60, 10, 0],
                       '4': [50, 40, 30, 60, 50],
                       '5': [40, 24, 45, 34, 60],
                       '6': [30, 34, 65, 80, 78],
                       '7': [56, 45, 34, 90, 58],
                       '8': [32, 12, 45, 55, 66],
                       '9': [32, 56, 89, 67, 56],
                       '10': [57, 35, 75, 48, 9],
                       '11': [56, 33, 11, 6, 78],
                       '12': [23, 65, 34, 8, 67]
                      })

months = [i for i in range(1,13)]

可视化问题

问题

格热哥兹·斯基宾斯基

只需使用numpy.average,指定weights

demand["result"]=np.average(demand, weights=months, axis=1)

https://docs.scipy.org/doc/numpy-1.15.1/reference/generation/numpy.average.html

输出:

     1    2   3   4   5   6  ...   8   9  10  11  12     result
0  360  500  64  50  40  30  ...  32  32  57  56  23  58.076923
1   40  180  30  40  24  34  ...  12  56  35  33  65  43.358974
2  100  450  60  30  45  65  ...  45  89  75  11  34  58.884615
3   20   60  10  60  34  80  ...  55  67  48   6   8  43.269231
4   55   50   0  50  60  78  ...  66  56   9  78  67  55.294872

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章