如何用Python Pandas统计CSV中指定月份各页面的不同用户点赞数
问题解答
现有代码的问题
你的现有代码不能正确统计目标数据,存在两个核心问题:
- 用
groupby(['page']).size()统计的是每个页面的总点赞记录数,不会对用户名去重,比如样例中usera给sample1点赞2次,该方法会统计为3条记录,而非正确的2个独立用户。 - 无月份筛选逻辑,会统计所有日期的点赞数据,样例中sample2的6月点赞记录也会被计入统计。
实现方案
核心步骤
- 读取CSV后将
date列转换为Pandas日期格式,方便时间维度筛选 - 过滤出指定月份的数据集
- 按页面分组后,对用户名字段做去重计数
完整可运行代码
import pandas as pd # 读取CSV文件 df = pd.read_csv("sample.csv") # 转换日期列格式 df['date'] = pd.to_datetime(df['date']) # 筛选2021年5月的数据,如不需要限定年份可删除年份判断条件 target_month_df = df[(df['date'].dt.year == 2021) & (df['date'].dt.month == 5)] # 按页面分组统计去重用户数 stat_result = target_month_df.groupby('page')['username'].nunique().reset_index(name='unique_user_count') print(stat_result) # 如需输出你给出的样例格式字符串,可添加以下遍历代码 for _, item in stat_result.iterrows(): print(f"{item['page']} {item['unique_user_count']} users liked in 05 month")
运行结果说明
执行上述代码后,输出结果和你给出的预期完全一致:
page unique_user_count 0 sample1 2 1 sample2 3 sample1 2 users liked in 05 month sample2 3 users liked in 05 month
内容的提问来源于stack exchange,提问作者PrintMass
相关产品推荐
相关产品推荐

