我有df
,我想从它的一些变量的分布中做一些抽样。让我们说df['type'].value_counts(normalize=True)
回归:
0.3 A
0.5 B
0.2 C
我想制作像sampledf = df.sample(weights=df['type'].value_counts())
这样的东西,使sampledf ['type'].value_counts(normalize=True)
几乎可以返回相同的分布。如何通过频率传递dict?
Weights
必须将series of the same length作为原始df,所以最好将其添加为列:
df['freq'] = df.groupby('type')['type'].transform('count')
sampledf = df.sample(weights = df.freq)
或者不添加列:
sampledf = df.sample(weights = df.groupby('type')['type'].transform('count'))