You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于用户历史事件的均值、累计事件数及距上次事件天数计算

Pandas用户销售事件数据集计算解决方案

原始数据集

运行提供的代码后,得到的数据集如下:

print(df)

输出:

date  User_ID  Sales
0 2022-10-16 10:12:00       50   1000
1 2022-10-17 10:12:00       52   1450
2 2022-10-18 10:12:00       50   1390
3 2022-10-19 10:12:00       53   1778
4 2022-10-20 10:12:00       53   1966
5 2022-10-21 10:12:00       52   1100
6 2022-10-22 10:12:00       52    700
7 2022-10-23 10:12:00       52    900

1. 计算每个用户的Sales均值

有两种实现方式:

方式1:单独生成用户均值统计

用groupby按用户分组后计算均值:

user_sales_mean = df.groupby('User_ID')['Sales'].mean().reset_index()
user_sales_mean.columns = ['User_ID', 'Sales_Mean']
print(user_sales_mean)

输出:

User_ID  Sales_Mean
0       50      1195.0
1       52      1037.5
2       53      1872.0

方式2:将均值合并到原数据每行

用transform方法,把均值结果映射到原数据的对应行:

df['Sales_Mean'] = df.groupby('User_ID')['Sales'].transform('mean')
print(df)

原数据会新增一列Sales_Mean,每个用户的所有行都显示该用户的Sales均值。


2. 计算每个用户的累计事件数量

用cumcount()对每个用户的事件从0开始计数,加1后得到累计事件数:

df['Cumulative_Event_Count'] = df.groupby('User_ID').cumcount() + 1
print(df)

输出关键列示例:

date  User_ID  Sales  Cumulative_Event_Count
0 2022-10-16 10:12:00       50   1000                       1
1 2022-10-17 10:12:00       52   1450                       1
2 2022-10-18 10:12:00       50   1390                       2
3 2022-10-19 10:12:00       53   1778                       1
4 2022-10-20 10:12:00       53   1966                       2
5 2022-10-21 10:12:00       52   1100                       2
6 2022-10-22 10:12:00       52    700                       3
7 2022-10-23 10:12:00       52    900                       4

3. 计算特定用户距离其上次事件的天数

分两种常见场景处理:

场景A:每个事件与该用户上一次事件的间隔天数

先按用户和日期排序,再用diff()计算相邻日期的差值:

# 先按用户、日期排序
df_sorted = df.sort_values(['User_ID', 'date']).reset_index(drop=True)
# 计算每个用户相邻事件的天数差
df_sorted['Days_Since_Last_Event'] = df_sorted.groupby('User_ID')['date'].diff().dt.days
# 首次事件无前置事件,填充为0
df_sorted['Days_Since_Last_Event'] = df_sorted['Days_Since_Last_Event'].fillna(0)
print(df_sorted)

输出关键列示例:

date  User_ID  Sales  Days_Since_Last_Event
0 2022-10-16 10:12:00       50   1000                    0.0
1 2022-10-18 10:12:00       50   1390                    2.0
2 2022-10-17 10:12:00       52   1450                    0.0
3 2022-10-21 10:12:00       52   1100                    4.0
4 2022-10-22 10:12:00       52    700                    1.0
5 2022-10-23 10:12:00       52    900                    1.0
6 2022-10-19 10:12:00       53   1778                    0.0
7 2022-10-20 10:12:00       53   1966                    1.0

场景B:当前日期与特定用户最后一次事件的间隔天数

指定目标用户ID,获取其最后一次事件日期后计算与当前日期的差值:

target_user_id = 52
# 获取该用户最后一次事件的日期
last_event_date = df[df['User_ID'] == target_user_id]['date'].max()
# 计算天数差
days_since_last = (pd.Timestamp.today() - last_event_date).days
print(f"用户{target_user_id}距离上次事件已过去{days_since_last}天")

输出示例(根据当前日期动态变化):

用户52距离上次事件已过去XXX天

内容的提问来源于stack exchange,提问作者AAA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:40:10