Python 如何替换NA';s为每个国家计算平均值时的变量平均值';s数据
我需要帮助用python编写代码,用变量的平均值替换NA(自杀率是变量,每个国家有18年的数据(国家是另一个变量))。因此,我想用17年来特定国家自杀率的平均值来代替第18年的NA。例如,沙特阿拉伯18年中有一年的数据缺失。我想找出17年自杀率的平均值,用那一年取代NA。我需要让代码循环以替换每个变量的NA。所有变量都是自杀率或死亡率。图中显示了一个高亮显示的单元格,它是缺少数据的单元格的一个示例。每个国家都有1990年至2018年18年的数据。Python 如何替换NA';s为每个国家计算平均值时的变量平均值';s数据,python,Python,我需要帮助用python编写代码,用变量的平均值替换NA(自杀率是变量,每个国家有18年的数据(国家是另一个变量))。因此,我想用17年来特定国家自杀率的平均值来代替第18年的NA。例如,沙特阿拉伯18年中有一年的数据缺失。我想找出17年自杀率的平均值,用那一年取代NA。我需要让代码循环以替换每个变量的NA。所有变量都是自杀率或死亡率。图中显示了一个高亮显示的单元格,它是缺少数据的单元格的一个示例。每个国家都有1990年至2018年18年的数据。 假设您有以下数据帧: ID Year
假设您有以下数据帧:
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]
然后,您可以循环遍历每个国家和每个变量,并将缺少的值设置为该国家和变量的适当平均值:
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
粘贴到目前为止的python代码。。。我们懒得从头开始写