【问题标题】:How to create a Cumulative Revenue Graph?如何创建累积收入图?
【发布时间】:2020-12-21 17:47:20
【问题描述】:

我正在尝试根据客户入职年份(第一笔交易)显示我的客户每年进行交易的累积平均收入。

我想我需要使用groupby,但我想出了达到预期结果的最佳方法。我有一个示例图,我希望复制或(获得类似的东西):

图上的每一行代表“入职年份”。

我创建了一个玩具数据以使其更容易:

dataset = {'ClientId': [10,20,20,20,10,5,3,7,5,20,12,5],
           'Year Onboarded': [2019,2017,2018,2017,2020,2019,2017,2018,2019,2020,2018,2017],
           'Year': [2020,2018,2018,2017,2020,2020,2018,2019,2020,2020,2018,2019],
           'Revenue': [100,50,25,30,40,50,200,600,20,40,100,20]}
df = pd.DataFrame(data=dataset)

【问题讨论】:

  • 您的问题是关于准备数据还是如何生成图表?
  • 更多的是准备数据,图应该没问题
  • 对我来说,客户 10 在 2020 年入职但在 2019 年获得收入并没有多大意义(?)。也许您的玩具数据集需要审核,或者我没有正确解决问题。
  • @Jzbach 你说得对,我修好了
  • 您尝试这样做时是否遇到了特殊问题?

标签: python matplotlib seaborn plotnine


【解决方案1】:

如果我是正确的(因为玩具数据仍然显示一些不一致,即对于给定客户,“入职年份”不应该相同吗?),您正在寻找以下内容:

df['cumsum'] = df.groupby(['ClientId', 'Year']).Revenue.transform('cumsum')

这会产生:

【讨论】:

    猜你喜欢
    • 2016-11-24
    • 2021-04-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2021-02-14
    • 2012-10-17
    • 1970-01-01
    • 2020-08-23
    相关资源
    最近更新 更多