python - 仅获取带有 Pandas 的 DataFrame 样本
问题描述
我有一个 DataFrame,它有两列content
和target
. DataFrame 有 1.000.000 行长,这是目标的分布:
- 目标 = 0 (100.000)
- 目标 = 1 (400.000)
- 目标 = 2 (500.000)
我需要在 DataFrame 中获得相同数量的目标值,所以我sample()
只使用固定数量的具有目标 o 的行x
,这是我正在使用的代码:
samples = 100000
dataset[dataset['target'] == 0] = dataset[dataset['target'] == 0].sample(n=samples, axis=0)
dataset[dataset['target'] == 1] = dataset[dataset['target'] == 1].sample(n=samples, axis=0)
dataset[dataset['target'] == 2] = dataset[dataset['target'] == 2].sample(n=samples, axis=0)
例如,如果在执行后我访问dataset[dataset['target'] == 2]
它,它将返回 (100000, 2) 的形状,但访问dataset
只返回与以前完全相同的数据集,我做错了什么?
解决方案
由于您在每个中采样的样本较少Target
,因此您可以使用groupby().sample
:
# random_state for repeatability. Remove if needed
dataset = dataset.groupby('target').sample(n=samples, random_state=42)
推荐阅读
- audio - 如果视频轨道在流中静音,则不会播放音频
- javascript - 带有 Flask 的 Firebase 身份验证 JS
- frida - Frida - android11 挂钩提供程序失败
- java - Mule 4 java类调用
- javascript - 将查询作为参数传递以表示
- sql - SQL 中的计算列
- php - 从 PHP 循环中创建 JSON 数组
- jmeter - 如何使用 Jmeter 根据可用的最大数量循环浏览页面
- css - 如何在 Digital Ocean 上将 @font-face 与生产 Django 一起使用?
- angular - 在应用模块中添加 StoreDevTool 后的循环依赖