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

使用np.random.choice抽样后数据出现重复值,求问题排查

问题原因与解决方案

你的随机抽样代码之所以会产生重复值,核心问题出在np.random.choice的默认行为上:它默认采用有放回抽样(参数replace=True),这就意味着同一个行索引可能被多次选中,导致data_T0_random里出现重复的行记录。当你把它和data_T1合并后,整个data数据集自然就存在重复值,所以执行drop_duplicates()后数据长度会减少。


修正方法有两种,根据你的数据量选择:

  1. 无放回抽样(推荐,当len(data_T0) >= 10000时)
    给np.random.choice添加replace=False参数,确保每个样本只被抽取一次:

    data_T0_random = data_T0.loc[np.random.choice(data_T0.index, 10000, replace=False)]
    
  2. 适配数据量的安全抽样
    如果data_T0的总行数不足10000,无放回抽样会直接报错。这时候可以先取实际数据量和目标抽样量的最小值,再进行无放回抽样:

    target_sample = 10000
    actual_sample = min(target_sample, len(data_T0))
    data_T0_random = data_T0.loc[np.random.choice(data_T0.index, actual_sample, replace=False)]
    

更简洁的替代方案:用Pandas原生的sample()方法

Pandas自带的sample()方法专门为数据框抽样设计,默认就是无放回抽样,还能自动处理数据量不足的情况(如果数据量小于目标抽样数,会直接返回全部数据),代码更简洁:

data_T0_random = data_T0.sample(n=10000)
# 若需要固定抽样结果(方便复现),可以添加random_state参数
# data_T0_random = data_T0.sample(n=10000, random_state=42)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:39:28