如何根据Pandas中另一列的值计算每个年龄的均值

2024-09-30 14:27:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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

例如,对于34岁的人来说,中间的军事地位是单身, 对于35岁的人来说也是单身,以此类推。你知道吗

我将数据帧分组

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

但会出现如下错误:

DataError: No numeric types to aggregate

基本上,这是我的数据帧的一部分:


    Edad    Estado_Civil
0   38  Soltero
1   26  Casado
2   26  Soltero
4   38  Soltero
5   24  Soltero
6   28  Soltero
7   30  Casado
8   32  Soltero
9   19  Soltero
10  28  Soltero
11  45  Casado
12  27  Soltero
13  41  Casado
14  45  Casado
15  38  Soltero

我需要得到每个年龄段的平均状态列表,如下所示:

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

Tags: 数据方法dfsinglecivil地位单身married
3条回答

我认为这个数据是线性的,因为人们会随着年龄的增长而结婚。所以,它可以用线性方程来表示。 基本上可以用机器学习的线性回归模型来求解。 我想你在做某种机器学习模型。 不管怎样,这是一个样本代码,我计算了每个婚姻状况的平均值。你知道吗

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     Edad
0             38  Soltero
1             26   Casado
2             26  Soltero
3             38  Soltero
4             24  Soltero
5             28  Soltero
6             30   Casado
7             19  Soltero
8             28  Soltero
9             45   Casado
10            27  Soltero
11            41   Casado
12            45   Casado
13            38  Soltero
Edad
Casado     37.400000
Soltero    29.555556

Estado_Civil列转换为数字类型,其中0表示已婚,1表示单身,并沿此线进行转换`df.Estado\ U土木工程= df.Estado\ U土木工程.apply(λx:1*(x=='单个'))。然后执行groupby。你知道吗

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

似乎您要查找的是统计mode,这是最常出现的值:

df_edad_estado_civil.groupby('Edad')['Estado_Civil'].agg(pd.Series.mode)

See this answer了解更多详细信息。你知道吗

相关问题 更多 >