假设我有一些观察,每个观察都有从1到的指示类n。这些类别中的每一个不一定在数据集中均等出现。
我如何从数据框中同样采样?现在我做类似...
frames = []
classes = df.classes.unique()
for i in classes:
g = df[df.classes = i].sample(sample_size)
frames.append(g)
equally_sampled = pd.concat(frames)
Run Code Online (Sandbox Code Playgroud)
是否有熊猫函数可以同样采样?
要获得更多的优雅,您可以执行以下操作:
df.groupby('classes').apply(lambda x: x.sample(sample_size))
Run Code Online (Sandbox Code Playgroud)
您可以使sample_sizea函数成为组大小的函数,以相等的概率(或成比例地)采样:
nrows = len(df)
total_sample_size = 1e4
df.groupby('classes').\
apply(lambda x: x.sample(int((x.count()/nrows)*total_sample_size)))
Run Code Online (Sandbox Code Playgroud)
它不会得到确切的行数,total_sample_size但是采样将比朴素的方法成比例。
| 归档时间: |
|
| 查看次数: |
1122 次 |
| 最近记录: |