编程自学网编程自学网编程自学网

如何根据Pandas中的其他列值计算每个年龄的平均值

我正在寻找一种方法来获得每个年龄段的平均婚姻状况:

例如,对于34岁的人来说,婚姻状况的中位数是单身,35岁则是单身,依此类推。

我对数据帧进行分组

df_edad_estado_civil.groupby(['Estado_Civil', 'Edad'], as_index=False).mean()

但它会发出如下错误:

DataError: No numeric types to aggregate

基本上,这是我的DataFrame的一部分:

    Edad    Estado_Civil0   38  Soltero1   26  Casado2   26  Soltero4   38  Soltero5   24  Soltero6   28  Soltero7   30  Casado8   32  Soltero9   19  Soltero10  28  Soltero11  45  Casado12  27  Soltero13  41  Casado14  45  Casado15  38  Soltero

我需要得到每个年龄段的中位数列表,如下所示:

years_old  status_mediam
  34         single
   .            .
  36          single
  37          married 
   38         married ....
   45         divorced and so on.

解决方案:


Estado_Civil列转换为数字类型,其中0表示已婚,1表示单身,其中的内容为“df.Estado_Civil = df.Estado_Civil.apply(lambda x:1 *(x =='single'))。然后执行groupby。

在应用.mean()之前选择特定的列也是有用的,例如, df.groupby(['Estado_Civil', 'Edad'], as_index=False)['Estado_Civil'].mean()


我认为这些数据显示出线性因为人们会随着年龄的增长而结婚。因此,它可以用线性方程表示。基本上,它可以通过机器学习的线性回归模型来解决。我认为你正在制作某种机器学习模型。无论如何,这是我计算婚姻状况平均值的示例代码。

data = [[38, 'Soltero'],
        [26, 'Casado'],
        [26, 'Soltero'],
        [38, 'Soltero'],
        [24, 'Soltero'],
        [28, 'Soltero'],
        [30, 'Casado'],
        [19, 'Soltero'], 
        [28, 'Soltero'],
        [45, 'Casado'],
        [27, 'Soltero'],
        [41, 'Casado'],
        [45, 'Casado'],
        [38, 'Soltero']]

df_edad_estado_civil = pd.DataFrame(data, columns=list(['Estado_Civil', 'Edad']))
result = df_edad_estado_civil['Estado_Civil'].groupby(df_edad_estado_civil['Edad']).mean() 
print (df_edad_estado_civil)print (result)

结果:

    Estado_Civil     Edad0             38  Soltero1             26   Casado2             26  Soltero3             38  Soltero4             24  Soltero5             28  Soltero6             30   Casado7             19  Soltero8             28  Soltero9             45   Casado10            27  Soltero11            41   Casado12            45   Casado13            38  SolteroEdadCasado     37.400000Soltero    29.555556


未经允许不得转载:编程自学网 » 如何根据Pandas中的其他列值计算每个年龄的平均值