如何用Python筛选亚马逊评论DataFrame中各评分均至少有n条评论的商品
实现思路与代码示例
你可以通过两次分组统计完成筛选,具体步骤如下:
前置准备
首先做好数据预处理,避免异常值干扰统计结果:
- 统一
Product_ID的大小写,避免把相同商品识别为不同商品 - 过滤
Rating列的异常值,仅保留1-5分的有效评论
import pandas as pd # 统一商品ID为小写(可根据你的实际数据格式调整) df['Product_ID'] = df['Product_ID'].str.lower() # 过滤无效评分 df = df[df['Rating'].between(1,5)]
核心筛选逻辑
首先设置你要求的单评分最低评论数阈值n,比如要求每个评分至少10条就设为10:
n = 10
第一步:统计每个商品下不同评分的评论数量
rating_count = df.groupby(['Product_ID', 'Rating'], as_index=False)['reviewText'].count() rating_count.rename(columns={'reviewText': 'review_cnt'}, inplace=True)
第二步:筛选出满足「每个评分下评论数≥n」的商品
只有当某个商品1-5分共5个档位的评论数都≥n时,才会被保留:
# 统计每个商品符合数量要求的评分个数,仅保留刚好有5个符合档位的商品 qualified_product_ids = rating_count[rating_count['review_cnt'] >= n] \ .groupby('Product_ID')['Rating'].count() qualified_product_ids = qualified_product_ids[qualified_product_ids == 5].index.tolist()
第三步:从原始数据中过滤出符合要求的商品的所有评论
result_df = df[df['Product_ID'].isin(qualified_product_ids)]
结果校验
你可以通过以下代码验证筛选结果是否符合要求:
# 抽取第一个符合要求的商品,查看各评分的评论数 sample_product = qualified_product_ids[0] print(result_df[result_df['Product_ID'] == sample_product].groupby('Rating')['reviewText'].count())
内容的提问来源于stack exchange,提问作者ShB
相关产品推荐
相关产品推荐

