如何在Pandas中获取列中各取值指定数量数据以平衡数据集
Pandas类别样本均衡抽取方案
当然可以实现,针对你给出的数据集情况(X列中A有1500条、B有3000条、C有1300条),直接通过Pandas的分组抽样功能就能完成每组抽取1250条数据的需求,代码示例如下:
# 假设你的数据集名为df,类别列是X balanced_df = df.groupby('X').sample(n=1250, random_state=42)
关键参数说明
groupby('X'):按类别列X对数据集进行分组sample(n=1250):从每个分组中随机抽取1250条样本,你的三个类别样本量都大于1250,无需额外处理random_state=42:设置随机种子保证每次抽样结果一致,可根据需求调整或移除
额外提示
如果后续遇到部分类别样本量不足目标抽取数的情况,可以添加replace=True参数开启有放回抽样,但此场景下不需要。若需要保留原数据集的索引顺序,可在抽样后追加.sort_index()操作。
内容的提问来源于stack exchange,提问作者Emre Oz
相关产品推荐
相关产品推荐

