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

问题描述 投票:0回答:1

我有一个带有类别列的数据框。 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

我想从每个类别中选择不同数量的行。(而不是每个类别的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, ...}

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

此外,应随机选择。例如,我不需要size_1的前40个值。[“ cat1”],我需要随机的40个值。

感谢您的帮助。

python-3.x dataframe random pandas-groupby sampling
1个回答
0
投票

这里是如何随机采样

# Selects one row randomaly using sample()  
# without give any parameters. 

# Import pandas package 
import pandas as pd 

# Define a dictionary containing employee data 
data = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj', 'Geeku'], 
        'Age':[27, 24, 22, 32, 15], 
        'Address':['Delhi', 'Kanpur', 'Allahabad', 'Kannauj', 'Noida'], 
        'Qualification':['Msc', 'MA', 'MCA', 'Phd', '10th']} 

# Convert the dictionary into DataFrame  
df = pd.DataFrame(data) 

# Select one row randomaly using sample() 
# without give any parameters 
df.sample(n=10)
# n is basically number of rows you want to sample

https://www.geeksforgeeks.org/how-to-randomly-select-rows-from-pandas-dataframe/

© www.soinside.com 2019 - 2024. All rights reserved.