python - 如何均衡熊猫数据框中的结果
问题描述
我正在使用 python 在 jupyter 中工作,以清理从分析软件中检索到的一组数据,并且我希望有相同数量的通过和失败的样本。基本上,我在 pandas 中的数据框如下所示:
grade section area_steel Nx Myy utilisation Accceptable
0 C16/20 STD R 700 350 4534 -310000 240000 0.313 0
1 C90/105 STD R 400 600 4248 -490000 270000 0.618 0
3 C35/45 STD R 550 400 1282 580000 810000 7.049 1
4 C12/15 STD R 350 750 2386 960000 610000 5.180 1
然而,不可接受的结果 (1) 是可接受的结果的两倍。
no_pass = 8589 no_fail = 16999 比率 = 1.979159389917336
我想要一个具有相同通过率和失败率的新数据框
我尝试了以下方法,但似乎不起作用:
import random
new_data = data[data.Accceptable <= random.random()*1/ratio]
似乎只计算了一个随机值,并且所有行都对此进行了检查,而我希望每行一个值。
有什么建议吗?
解决方案
您可以在Acceptable列上分组后对数据进行采样,
data.groupby('Accceptable').sample(lambda x: x.sample(frac = 0.5))
推荐阅读
- flutter - 如何将焦点更改为具有多个文本字段的 ListView 中的特定字段
- angular - 如何将component.ts中的变量发送到service.ts以进行身份验证Angular
- windows - DXGI_PRESENT_ALLOW_TEARING 标志的行为是什么?
- machine-learning - 如何对来自 websocket url 的视频流进行对象检测
- git - 在 GitHub 中更改仓库名称后如何推送到 GitHub
- python - 如何根据分值对列表列表进行排序
- excel - 如何使用excel公式搜索包含关键字的单元格,并返回相应的值
- sql - 如果选择的类别级别低于配置的级别,则显示最低级别
- python - 为什么我会收到 AmbiguousForeignKeysError?
- java - 在java中创建一个shell控制台(类似于windows中的cmd,unix中的bash等)