从 Python 中的总体生成具有指定属性的随机样本
Generate random samples with specified properties from a population in Python
假设我有一个人口按国籍按以下比例(%)划分:
percentages = {'Germany': 0.4, 'France': 0.25, 'Greece': 0.15, 'Poland': 0.1, 'Norway': 0.05, 'Others': 0.05}
现在我需要从这个群体中生成样本。 Python 中有没有办法从总体中生成大小为 n
的样本?
例如,如果 n = 50
,我希望有这样的东西:
sample = {'Germany': 22, 'France': 10, 'Greece': 8, 'Poland': 6, 'Norway': 3, 'Others': 1}
随机有一个内置方法
import random
random.choices(
population=list(percentages.keys()),
weights=list(percentages.values()),
k=50
)
那么你可以这样做:
import random
percentages = {'Germany': 0.4, 'France': 0.25, 'Greece': 0.15, 'Poland': 0.1, 'Norway': 0.05, 'Others': 0.05}
r = random.choices(
population=list(percentages.keys()),
weights=list(percentages.values()),
k=50
)
sample = {key: 0 for key in percentages}
for key in r:
sample[key] += 1
print(sample)
可能不是最有效的方法,但它有效。
假设我有一个人口按国籍按以下比例(%)划分:
percentages = {'Germany': 0.4, 'France': 0.25, 'Greece': 0.15, 'Poland': 0.1, 'Norway': 0.05, 'Others': 0.05}
现在我需要从这个群体中生成样本。 Python 中有没有办法从总体中生成大小为 n
的样本?
例如,如果 n = 50
,我希望有这样的东西:
sample = {'Germany': 22, 'France': 10, 'Greece': 8, 'Poland': 6, 'Norway': 3, 'Others': 1}
随机有一个内置方法
import random
random.choices(
population=list(percentages.keys()),
weights=list(percentages.values()),
k=50
)
那么你可以这样做:
import random
percentages = {'Germany': 0.4, 'France': 0.25, 'Greece': 0.15, 'Poland': 0.1, 'Norway': 0.05, 'Others': 0.05}
r = random.choices(
population=list(percentages.keys()),
weights=list(percentages.values()),
k=50
)
sample = {key: 0 for key in percentages}
for key in r:
sample[key] += 1
print(sample)
可能不是最有效的方法,但它有效。