python - 当根据每个国家的数据计算平均值时,如何用变量的平均值替换 NA
问题描述
我需要帮助在 python 中编码以用变量的平均值替换 NA(自杀率是变量,每个国家都有 18 年的数据(国家是另一个变量))。所以我想要特定国家 17 年自杀率的平均值来取代第 18 年的 NA。示例 - 沙特阿拉伯在 18 年中丢失了一年的数据。我想找到 17 年自杀率的平均值,并将 NA 替换为那一年。我需要循环代码来替换每个变量的 NA。所有变量都是自杀率或死亡率。图片显示了一个突出显示的单元格,这是缺少数据的一个示例。每个国家都有从 1990 年到 2018 年这 18 年的数据。
解决方案
假设你有这个数据框:
ID Year Entity Variable_1 Variable_2
0 0 2000 Canada 120.0 600.0
1 1 2001 Canada 100.0 700.0
2 2 2002 Canada NaN 800.0
3 3 2000 Switzerland 300.0 200.0
4 4 2001 Switzerland 400.0 NaN
5 5 2002 Switzerland 500.0 400.0
您可以使用每个国家和变量的方法创建另一个数据框:
means = df.groupby('Entity').mean()
然后您可以遍历每个国家和每个变量,并将缺失值设置为该国家和变量的适当平均值:
for country in df.Entity:
for col in df.drop(columns = ['ID','Year','Entity']).columns:
df.loc[(df.Entity == country) & (df[col].isnull()),col] = means.loc[country,col]
结果:
ID Year Entity Variable_1 Variable_2
0 0 2000 Canada 120.0 600.0
1 1 2001 Canada 100.0 700.0
2 2 2002 Canada 110.0 800.0
3 3 2000 Switzerland 300.0 200.0
4 4 2001 Switzerland 400.0 300.0
5 5 2002 Switzerland 500.0 400.0
推荐阅读
- graphics - 用于视图合成的基于网格的翘曲与基于喷溅的翘曲
- android - 如何转换 MutableLiveData
作为分支的直接布尔值? - r - 用 R 中的非数值计算每组的平均值
- kotlin - 子协程无法取消
- php - 如何从选定的元素或控件显示acf字段的值
- java - 无法在 EC-2 的 Tomcat 8 中运行 Spring Boot 应用程序
- javascript - Meteor Aldeed:tabular - 无法渲染按钮扩展
- javascript - 将具有分钟格式字符串的数组转换为秒格式
- python - 错误:“发现样本数量不一致的输入变量:[5114, 3409]”
- python - 使用 Selenium python 重复打印店铺名称