如何在 python 中对人口进行抽样时创建 "weight" 字段?

How to create a "weight" field when sampling a population in python?

我正在对总体进行抽样,我想知道是否有一种直接的方法可以生成名为“权重”的列,该列指示抽样数据中的样本权重。

这是我的代码。

我创建了要抽样的总体

import pandas as pd
df=pd.DataFrame({'Age':[18,20,20,56,56,57,60]})

print(df)
   Age
0   18
1   20
2   20
3   56
4   56
5   57
6   60

我从该人群中抽取 30% 的随机样本

sampleData = df.sample(frac=0.3)
print(sampleData)

   Age
6   60
5   57

我想知道是否可以生成一个名为“权重”的字段来指示样本权重(无需手动计算权重)。所以,我希望我的样本数据看起来像:

   Age  Weight
6   60   3.333
5   57   3.333

只需使用 assign() 方法并在其中使用 round() 方法:-

frac=0.3
sampleData=df.sample(frac=frac).assign(Weight=round(1/frac,3))

现在如果你打印 sampleData 你会得到你想要的输出:-

    Age     Weight
4   56      3.333
2   20      3.333