如何在 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
我正在对总体进行抽样,我想知道是否有一种直接的方法可以生成名为“权重”的列,该列指示抽样数据中的样本权重。
这是我的代码。
我创建了要抽样的总体
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