首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中数据的随机采样

python中数据的随机采样
EN

Stack Overflow用户
提问于 2019-11-06 07:12:35
回答 1查看 105关注 0票数 0

我有一个包含多个列的数据框架,我需要从具有更多权重的数据中重新采样到一个类别。我认为np.random.choice应该可以工作,但不确定如何实现它。下面是我想随机抽样的示例数据,但希望获得昂贵房屋的概率为70% (基于Expensive_home列,值= 1),获得Expensive_home=0的概率为30%。如何创建重新采样的数据文件?谢谢!

代码语言:javascript
复制
ID  Lot_Area    Year_Built  Full_Bath   Bedroom Sale_Price  Expensive_home
1   31770   1960    1   3   215000  0
2   11622   1961    1   2   105000  0
3   5389    1995    2   2   236500  0
4   8402    1998    2   3   180400  0
5   10176   1990    1   2   171500  0
6   6820    1985    1   1   212000  0
7   53504   2003    3   4   538000  1
8   12134   1988    2   4   164000  0
9   11394   2010    1   1   394432  1
10  19138   1951    1   2   141000  0
11  13175   1978    2   3   210000  0
12  11751   1977    2   3   190000  0
13  10625   1974    2   3   170000  0
14  7500    2000    2   3   216000  0
15  11241   1970    1   2   149000  0
16  2280    1978    2   3   146000  0
17  12858   2009    2   3   376162  1
18  12883   2009    2   3   290941  0
19  12182   2005    2   3   220000  0
20  11520   2005    2   3   275000  0

相似的数据文件,但在最后一列中有更多随机选取的1

EN

回答 1

Stack Overflow用户

发布于 2019-11-06 10:34:11

要创建相同长度的数据帧,但要允许昂贵的数据帧有更高的机会被选中并允许替换,请使用:

代码语言:javascript
复制
weights = df['Expensive_home'].replace({0: 30, 1: 70})
df1 = df.sample(len(df), replace=True, weights=weights)

要创建所有昂贵的数据帧,然后是30%的非昂贵数据帧,您可以执行以下操作:

代码语言:javascript
复制
expensive = df['Expensive_home'].astype(bool)
df2 = pd.concat([df[expensive], df[~expensive].sample(frac=0.3)])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58720849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档