首页 > 解决方案 > 如何均衡熊猫数据框中的结果

问题描述

我正在使用 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]

似乎只计算了一个随机值,并且所有行都对此进行了检查,而我希望每行一个值。

有什么建议吗?

标签: pythonpandas

解决方案


您可以在Acceptable列上分组后对数据进行采样,

data.groupby('Accceptable').sample(lambda x: x.sample(frac = 0.5))

推荐阅读