python中数据的随机采样
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中数据的随机采样相关的知识,希望对你有一定的参考价值。
我有一个包含多列的数据框,我需要从具有更大权重的该数据中重新采样一个类别。我认为np.random.choice
应该有效,但不确定如何实现。以下是示例数据,我想从中进行随机采样,但希望有70%的概率获得昂贵的房屋(基于Expensive_home列,值= 1)和30%的概率使Expensive_home = 0。如何创建重新采样的数据文件?谢谢!
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
答案
要创建相同长度但允许昂贵的数据框,使其有较高的机会被选中并允许替换,请使用:
weights = df['Expensive_home'].replace({0: 30, 1: 70})
df1 = df.sample(len(df), replace=True, weights=weights)
要创建一个包含所有昂贵的数据框,然后再包含30%的非昂贵数据框,您可以这样做:
expensive = df['Expensive_home'].astype(bool)
df2 = pd.concat([df[expensive], df[~expensive].sample(frac=0.3)])
以上是关于python中数据的随机采样的主要内容,如果未能解决你的问题,请参考以下文章