首页 > 解决方案 > 当根据每个国家的数据计算平均值时,如何用变量的平均值替换 NA

问题描述

我需要帮助在 python 中编码以用变量的平均值替换 NA(自杀率是变量,每个国家都有 18 年的数据(国家是另一个变量))。所以我想要特定国家 17 年自杀率的平均值来取代第 18 年的 NA。示例 - 沙特阿拉伯在 18 年中丢失了一年的数据。我想找到 17 年自杀率的平均值,并将 NA 替换为那一年。我需要循环代码来替换每个变量的 NA。所有变量都是自杀率或死亡率。图片显示了一个突出显示的单元格,这是缺少数据的一个示例。每个国家都有从 1990 年到 2018 年这 18 年的数据。 在此处输入图像描述

标签: python

解决方案


假设你有这个数据框:

   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

推荐阅读