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

pandas数据框中按itemId分组统计用户首次评分得分的实现方法

Pandas实现item得分计算方法

实现思路

你已经完成了核心预处理逻辑:按时间排序后保留每个用户对item的首次评分,剩下的计算只需要按itemId分组后统计likeOrDislike列中1的占比即可,该占比就是要求的得分。

完整代码

最简实现(直接计算均值)

因为likeOrDislike取值只有0和1,分组后的均值就是1的占比:

import pandas as pd

# df_clean 为你已得到的仅含itemId、likeOrDislike两列的预处理后数据框
score_df = df_clean.groupby('itemId', as_index=False)['likeOrDislike'].mean()
# 修改列名
score_df.columns = ['itemId', 'score']
# 若要和示例输出一致截断保留两位小数(不四舍五入),可替换为:score_df['score'] = score_df['score'].apply(lambda x: int(x * 100) / 100)
score_df['score'] = score_df['score'].round(2)

分步统计0和1的数量实现

如果需要显式统计每个item下0和1的出现次数,可以用如下写法:

import pandas as pd

# 按itemId和likeOrDislike分组统计次数
count_df = df_clean.groupby(['itemId', 'likeOrDislike']).size().unstack(fill_value=0)
# 计算得分
count_df['score'] = (count_df[1] / (count_df[0] + count_df[1])).round(2)
# 提取最终结果
score_df = count_df.reset_index()[['itemId', 'score']]

输出结果

最终得到的score_df和预期输出一致:

itemIdscore
i10.66
i20.5
i41

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:06:04