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

时间:2019-12-21 15:14:32

标签: python python-3.x dataframe random pandas-groupby

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

可以这样做:

$wp_customize->settings()

我从前面的答案中窃取了DataFrame生成,以类似的方式显示。

答案 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

randomly select rows from pandas dataframe