Python中的Weightipy

2025年3月15日 | 阅读 5 分钟

Weightipy:它是什么?

在使用调查或人口普查数据时,Weightipy 库在对个人数据进行加权计算时非常有用。它支持最新版本的 NumPy 和 Pandas,比 Quantipy 更有效地处理加权,并且运行速度更快。Weightipy 使用 RIM 算法(也称为 Raking)来迭代地修改权重,以匹配变量(例如年龄、性别)的期望分布。

与 Quantipy 的主要区别

  • Quantipy 的众多功能几乎没有开销;基本的加权任务可以快速完成。
  • 性能提升 - 根据数据集的不同,速度最多可提高六倍。
  • 除非另有说明,详细报告是可选的,并且默认不生成。

设置环境

为了让我们能够使用 Weightipy Python 库,必须设置好环境。这包括安装库并验证其是否正常工作。

安装所需库

为了安装 Weightipy 库,我们将使用 PIP 安装程序。以下是在终端或命令提示符中执行以安装所需库的语法:

语法

验证已安装的库

在我们开始使用 Weightipy 库之前,检查和验证包是否已正确安装非常重要。为此,我们可以创建一个名为 test.py 的新文件并执行以下代码:

文件:test.py

保存 test.py 并执行后,代码应正常运行,而不会引发任何 ModuleNotFoundError 错误,这表明模块已正确安装。如果出现任何错误,建议重新安装该库并参考官方文档获取更多信息。

在 Python 中使用 Weightipy 库

以下是如何使用 Weightipy 进行基本加权的说明:

  • 确定您的目标(期望的人口分布)的变量,例如性别和年龄组。
  • 利用目标值字典创建加权方案。
  • 将方案应用于数据集并确定加权效率。

以下是演示 Weightipy 库在 Python 中工作的示例代码:

示例

输出

 
     age_group   sex  weight_factor
0     18-29       Male       0.533333
1     30-39      Female       1.181818
2     40-49     Male       1.866667
3     50-59     Female       0.709091
4       60+     Female       0.709091
Weighting Efficiency: 81.02148073638034   

说明

此代码使用指定的年龄组和性别目标分布对调查数据集应用人口加权,根据每行与目标的契合程度来调整其权重。然后,它计算并打印应用权重的效率。

使用人口普查数据

现在,让我们来看一个示例,演示在人口普查数据中使用 Weightipy 库的情况:

示例

输出

 
   id   age_group    sex   area  weight_values
0   1   18-24    Male   North           0.80
1   2   25-34  Female   South           1.20
2   3   35-49    Male    East           0.90
3   4   50-64  Female    West           1.10
4   5     65+    Male   South           1.30
5   6   25-34    Male    East           0.95
6   7   18-24  Female    West           1.00
7   8   50-64    Male   North           0.85
Weighting Efficiency: 90.00%   

说明

该代码加载数据集,基于人口统计变量创建加权方案,调整数据集,计算效率,并打印加权后的数据框。

使用 Rim 和 WeightEngine 进行高级用法

您可以直接使用 Rim 和 WeightEngine 类来更精确地控制加权过程。这使您能够处理更复杂的加权情况,例如组过滤或子区域。

示例

输出

 
Weight variable       weights_age_and_gender_scheme
Weight group                         _default_name_
Weight filter                                  None
Total: unweighted                          5.000000
Total: weighted                            5.000000
Weighting efficiency                      85.062434
Iterations required                        4.000000
Mean weight factor                         1.000000
Minimum weight factor                      0.409091
Maximum weight factor                      1.527778
Weight factor ratio                        3.734568   

说明

该代码使用 Weightipy 库根据样本数据集中的年龄和性别分布应用加权,创建 Rim 方案并报告其效率。

结论

Weightipy 是一个强大、简化的数据集加权工具,适用于调查分析、人口研究和迭代加权任务,通过 Rim 和 WeightEngine 类提供高级控制。