如何用Pandas识别数据集中的重复用户与唯一用户
Pandas用户跨天行为统计方案
示例数据集
| ds | userid | unique_content_id |
|---|---|---|
| 2024-01-26 | 1 | 8fd |
| 2024-01-26 | 2 | 7rt |
| 2024-01-26 | 4 | 6as |
| 2024-01-27 | 2 | 45t |
| 2024-01-27 | 1 | 8fd |
| 2024-01-27 | 2 | 7rt |
| 2024-01-28 | 4 | 6as |
| 2024-01-28 | 7 | 45t |
| 2024-01-28 | 7 | 49t |
| 2024-01-29 | 4 | 6as |
| 2024-01-29 | 2 | 45t |
实现思路与步骤
核心是通过统计每个用户出现的唯一日期数,区分跨天重复用户和仅访问一天的用户:
- 先按
userid分组,用nunique()统计每个用户对应的不同日期数量(自动忽略同一用户同一天的多条交互记录) - 按日期数筛选两类用户并统计总数:
- 跨天重复用户:日期数≥2的用户
- 唯一用户:日期数=1的用户
完整代码
import pandas as pd # 加载数据集(如果是本地文件,可替换为pd.read_csv/pd.read_excel等) data = { 'ds': ['2024-01-26', '2024-01-26', '2024-01-26', '2024-01-27', '2024-01-27', '2024-01-27', '2024-01-28', '2024-01-28', '2024-01-28', '2024-01-29', '2024-01-29'], 'userid': [1, 2, 4, 2, 1, 2, 4, 7, 7, 4, 2], 'unique_content_id': ['8fd', '7rt', '6as', '45t', '8fd', '7rt', '6as', '45t', '49t', '6as', '45t'] } df = pd.DataFrame(data) # 统计每个用户的唯一日期数 user_day_count = df.groupby('userid')['ds'].nunique() # 计算并输出结果 repeat_users_num = user_day_count[user_day_count >= 2].count() unique_users_num = user_day_count[user_day_count == 1].count() print(f"跨天重复用户:{repeat_users_num}位用户有重复记录") print(f"唯一用户:{unique_users_num}位用户仅访问一天")
运行结果
跨天重复用户:3位用户有重复记录
唯一用户:1位用户仅访问一天
内容的提问来源于stack exchange,提问作者user3738181
相关产品推荐
相关产品推荐

