gpt4 book ai didi

python - 如何计算累计平均收入? Python

转载 作者:行者123 更新时间:2023-12-05 06:55:20 24 4
gpt4 key购买 nike

我想创建一个图表来显示一段时间内每个“入职年”(首次客户交易)的累计平均收入。但是我在对所需信息进行分组时犯了错误。

玩具数据:

dataset = {'ClientId': [1,2,3,1,2,3,1,2,3,1,2,3,4,4,4,4,4,4,4],
'Year Onboarded': [2018,2019,2020,2018,2019,2020,2018,2019,2020,2018,2019,2020,2016,2016,2016,2016,2016,2016,2016],
'Year': [2019,2019,2020,2019,2019,2020,2018,2020,2020,2020,2019,2020,2016,2017,2018,2019,2020,2017,2018],
'Revenue': [100,50,25,30,40,50,60,100,20,40,100,20,5,5,8,4,10,20,8]}
df = pd.DataFrame(data=dataset)

说明:客户有一个指定的“入职年份”,并且他们会在提到的每个“年份”进行一次交易。然后我计算自客户加入以来已经过去的年数,以使我的图表在视觉上更具吸引力。

df['Yearsdiff'] = df['Year']-df['Year Onboarded']

为了计算累计平均收入,我尝试了以下方法:

  • 第一次尝试:
df = df.join(df.groupby(['Year']).expanding().agg({ 'Revenue': 'mean'})
.reset_index(level=0, drop=True)
.add_suffix('_roll'))

df.groupby(['Year Onboarded', 'Year']).last().drop(columns=['Revenue'])

输出开始累积,但最后一行不再累积(不知道为什么)。

  • 第二次尝试:
df.groupby(['Year Onboarded','Year']).agg('mean') \
.groupby(level=[1]) \
.agg({'Revenue':np.cumsum})

但是效果不佳,我也尝试了其他方法,但效果不佳。

为了可视化累积平均收入,我简单地使用了 sns.lineplot

我的目标是获得与下图类似的图表,但为此我首先需要正确分组我的数据。

预期输出图

enter image description here

我们在图表上看到的年份代表“入职年份”而不是“年份”。

有人可以帮我计算一个有效的累积平均收入,以便绘制与上面的图表类似的图表吗?谢谢

玩具数据集中提供的数据肯定不会给出类似于示例图的内容,但想法应该在那里。

最佳答案

这就是我会做的,考虑到玩具数据不一样,可能应该做一些改变,但总而言之:

import seaborn as sns
df1 = df.copy()
df1['Yearsdiff'] = df1['Year']-df1['Year Onboarded']
df1['Revenue'] = df.groupby(['Year Onboarded'])['Revenue'].transform('mean')
#Find the average revenue per Year Onboarded
df1['Revenue'] = df1.groupby(['Yearsdiff'])['Revenue'].transform('cumsum')
#Calculate the cumulative sum of Revenue (Which is now the average per Year Onboarded) per Yearsdiff (because this will be our X-axis in the plot)
sns.lineplot(x=df1['Yearsdiff'],y=df1['Revenue'],hue=df1['Year'])
#Finally plot the data, using the column 'Year' as hue to account for the different years.

关于python - 如何计算累计平均收入? Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65411372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com