003—pandas 按品类销量计算提成金额

需求:

如给出的数数据,按品类汇总,如果累计数量:

  • 40以下,提成比例为1%;
  • 40及以上,提成比例为2%;
  • 80及以上,提成比例为3%;
  • 100及以上,提成比例为5%
  • 怎么计算每一行的提成金额:提成金额=金额*提成比例

思路:

  1. 先按品类分组后计算各品类的累计数量,并将这个数量进行分箱操作,不同区间标为对应的提成比例。
  2. 将各分组对应的提成转为字典用于原数据表的映射,这样就得到了每行数据对应的提成比例,最后金额与提成比例计算出提成金额。

使用步骤

1.引入库

代码如下(示例):

import pandas as pd

2.读入数据

代码如下(示例):

df = pd.DataFrame({'品类': [*'CABABDBA'],
                   '数量': [10,20,30,50,10,40,50,90],
                   '金额': range(100,108,1)
                  })
df

003—pandas 按品类销量计算提成金额_第1张图片

#利用 pd.cut() 对以上各品类提成区间进行分箱:
m = pd.cut(df.groupby('品类').数量.sum(),
           bins=[0, 40, 80, 100, float('inf')],
           labels=[0.01,0.02,0.03,0.05]
          )
m

003—pandas 按品类销量计算提成金额_第2张图片

#最后,我们按品类映射提成比例,计算最终的提醒金额:
(
    df.assign(提成比例=df.品类.map(m.to_dict()))
    .assign(提成金额=lambda x: x.金额 * x.提成比例)
)

003—pandas 按品类销量计算提成金额_第3张图片


总结:

以上就是今天要讲的内容,本文仅仅简单介绍了数据分箱的简单应用。

你可能感兴趣的:(pandas,实战案例大全,pandas)