相关疑难解决方法(0)

如何以不同的速率从 Pandas 数据框中对每个组进行采样

我有一个数据框,其中包含有关我希望从中生成样本的总体信息。我还有一个数据框sample_info,它详细说明了population我的示例中需要的数据框中每个组的数量。我已经开发了一些代码来实现我的需要,但鉴于我正在使用的大型数据集,它的运行速度比我想要的要慢。

有没有办法对总体框架进行分组并将抽样应用于组,而不是像我在下面所做的那样循环遍历它们?

import pandas as pd

population = pd.DataFrame([[1,True],[1,False],[1,False],[2,True],[2,True],[2,False],[2, True]], columns = ['Group ID','Response'])

    Group ID    Response
0   1           True
1   1           False
2   1           False
3   2           True
4   2           True
5   2           False
6   2           True

sample_info = pd.DataFrame([[1,5],[2,6]], columns = ['Group ID','Sample Size'])

output = pd.DataFrame(columns = ['Group ID','Response'])

    Group ID    Sample Size
0   1           5
1   2           6


for index, row in sample_info.iterrows():    
        output = output.append(population.loc[population['Group ID'] == row['Group ID']].sample(n=row['Sample Size'], replace …
Run Code Online (Sandbox Code Playgroud)

python sampling pandas

6
推荐指数
1
解决办法
1165
查看次数

如何从DataFrame中的每个组中采样不同数量的行

我有一个带有类别列的数据框。Df 对每个类别有不同的行数。

category number_of_rows
cat1     19189
cat2     13193
cat3     4500
cat4     1914
cat5     568
cat6     473
cat7     216
cat8     206
cat9     197
cat10    147
cat11    130
cat12    49
cat13    38
cat14    35
cat15    35
cat16    30
cat17    29
cat18    9
cat19    4
cat20    4
cat21    1
cat22    1
cat23    1
Run Code Online (Sandbox Code Playgroud)

我想从每个类别中选择不同数量的行。(而不是每个类别的 n 个固定行数)

Example input:
size_1 : {"cat1": 40, "cat2": 20, "cat3": 15, "cat4": 11, ...}
Example input: 
size_2 : {"cat1": 51, "cat2": 42, "cat3": 18, "cat4": 21, ...}
Run Code Online (Sandbox Code Playgroud)

我想要做的实际上是一个分层抽样,给定数量的实例对应于每个类别。 …

python random dataframe python-3.x pandas-groupby

5
推荐指数
1
解决办法
1215
查看次数