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

Pandas如何按每个唯一ProductID保留5%比例的评论数据

Pandas 实现按产品ID分组保留5%评论的方法

Pandas 内置的分组、采样功能完全可以实现这个需求,针对17万行规模的CSV数据处理效率很高,不需要额外依赖其他工具。

基础实现

首先先读入你的CSV格式数据集:

import pandas as pd
# 替换成你的数据集实际路径
df = pd.read_csv("product_comments.csv")

核心逻辑用groupby按ProductID分组后,直接调用内置的sample方法按比例采样即可,5%占比对应参数frac=0.05:

# 按ProductID分组,每组无放回抽取5%的评论
sampled_result = df.groupby("ProductID", group_keys=False).sample(
    frac=0.05,
    random_state=42 # 固定随机种子保证结果可复现,不需要可删除该参数
)

参数说明:

  • group_keys=False:避免输出结果把ProductID设为额外的多级索引,返回的表结构和原数据集完全一致
  • frac=0.05:指定每个分组的采样比例为5%,默认是无放回采样,符合常规抽样需求
  • random_state:传入固定整数可以让每次运行的采样结果一致,方便复盘复现,不需要固定结果可以删掉这个参数

特殊场景适配

如果部分ProductID对应的评论总数很少(比如不足20条,5%占比计算后不足1条),想要保证每个产品至少保留1条评论,可以用自定义采样函数的方式适配:

def group_sample(group):
    # 计算5%对应的样本量,最少保留1条
    sample_count = max(1, round(len(group) * 0.05))
    return group.sample(n=sample_count, random_state=42)

sampled_result = df.groupby("ProductID", group_keys=False).apply(group_sample)

采样完成后,直接调用to_csv方法就能把结果存成新的CSV文件:

sampled_result.to_csv("sampled_comments.csv", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:36:14