我有一个包含多个列的数据框架,我需要从具有更多权重的数据中重新采样到一个类别。我认为np.random.choice应该可以工作,但不确定如何实现它。下面是我想随机抽样的示例数据,但希望获得昂贵房屋的概率为70% (基于Expensive_home列,值= 1),获得Expensive_home=0的概率为30%。如何创建重新采样的数据文件?谢谢!
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
发布于 2019-11-06 10:34:11
要创建相同长度的数据帧,但要允许昂贵的数据帧有更高的机会被选中并允许替换,请使用:
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)])https://stackoverflow.com/questions/58720849
复制相似问题