python - 如何在python中计算加权平均值和中位数?
问题描述
我在 pandas DataFrame 或 NumPy 数组中有数据,并希望根据另一列或数组中的某些权重计算加权平均值(平均值)或加权中位数。我正在寻找一个简单的解决方案,而不是从头开始编写函数或将它们复制粘贴到我需要它们的任何地方。
数据看起来像这样 -
state.head()
State Population Murder.Rate Abbreviation
0 Alabama 4779736 5.7 AL
1 Alaska 710231 5.6 AK
2 Arizona 6392017 4.7 AZ
3 Arkansas 2915918 5.6 AR
4 California 37253956 4.4 CA
我想计算weighted mean or median
其中murder rate
考虑到populations
各州的不同。
我怎样才能做到这一点?
解决方案
首先,在 python 中安装weightedstats库。
pip install weightedstats
然后,执行以下操作 -
加权平均数
ws.weighted_mean(state['Murder.Rate'], weights=state['Population'])
4.445833981123394
加权中位数
ws.weighted_median(state['Murder.Rate'], weights=state['Population'])
4.4
它还具有用于 numpy 数组的特殊加权平均值和中值方法。上述方法将起作用,但如果您需要的话。
my_data = [1, 2, 3, 4, 5]
my_weights = [10, 1, 1, 1, 9]
ws.numpy_weighted_mean(my_data, weights=my_weights)
ws.numpy_weighted_median(my_data, weights=my_weights)
推荐阅读
- python - 变压器:导入包时出错。“ImportError:无法从‘torch.optim.lr_scheduler’导入名称‘SAVE_STATE_WARNING’”
- ansible - 使用 set_fact 结果设置 Ansible 变量
- python - 从密集矩阵创建稀疏矩阵而不首先初始化密集矩阵
- python - 锁定失败!使用 pipenv 锁定 --clear
- python - 带有 Python 的 Visual Studio Code:“问题”不再起作用,可变颜色突然被禁用
- c++ - Cmake文件无法连接目录错误
- docker - Docker 中的 Kafka 服务器问题
- microsoft-dynamics - 将 Dynamics 365 联系人与 GAL 同步
- python - ValueError:x 和 y 必须具有相同的第一维,但具有形状 (32,) 和 (30,)
- r - RStudio 经常尝试自动完成的代码片段库是什么?