如何按年Group by求和销售额并计算用户新增总量?
解决方案
可以通过Pandas实现你的需求,具体步骤如下:
1. 数据预处理
首先要确保日期列是标准格式,并按时间顺序排序(避免差值计算逻辑出错):
import pandas as pd # 构造你的数据集 data = { 'Sales': [40000, 500, 4000, 234, 1000, 50000, 40000, 500, 2145, 344, 1234, 432], 'Users': [234, 100, 555, 1000, 2000, 1200, 234, 100, 555, 1000, 1233, 5000], 'DT': ['1/4/2018', '1/23/2018', '2/4/2018', '6/4/2018', '6/14/2018', '9/12/2018', '1/14/2019', '2/23/2019', '2/26/2019', '6/14/2019', '6/21/2019', '11/12/2019'] } df = pd.DataFrame(data) # 转换日期格式并按时间排序 df['DT'] = pd.to_datetime(df['DT']) df = df.sort_values('DT') # 提取年份列用于分组 df['Year'] = df['DT'].dt.year
2. 计算用户增量
用diff()函数直接计算每个日期与前一个日期的用户数差值,完全匹配你需要的“后续日期Users值减前一个日期Users值”逻辑:
df['User_Increment'] = df['Users'].diff()
注:第一个日期没有前序数据,差值会显示为
NaN,分组求和时会自动忽略。如果认为第一个日期的用户数属于当年新增,可以替换为df['User_Increment'] = df['Users'].diff().fillna(df['Users']),将首个用户数纳入增量计算。
3. 按年分组聚合
最后按年份分组,对Sales列求和,对用户增量列求和:
result = df.groupby('Year').agg( 年度销售总额=('Sales', 'sum'), 年度用户增量总和=('User_Increment', 'sum') ).reset_index() print(result)
最终输出
执行代码后会得到如下结果:
| Year | 年度销售总额 | 年度用户增量总和 |
|---|---|---|
| 2018 | 95734 | 966.0 |
| 2019 | 44655 | 4766.0 |
内容的提问来源于stack exchange,提问作者Chris90
相关产品推荐
相关产品推荐

