Python 如何将过滤后的数据装箱?

Python 如何将过滤后的数据装箱?,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,全部, 我的数据集的标题如下所示。我过滤了我的“年龄”和“以小时为单位的缺勤时间”列,并计算了平均小时数。现在我想根据年龄栏来分类。我怎样才能做到这一点?我想把年龄分为31-33岁,34-36岁,37-39岁 {'Age': {0: 33, 2: 38, 3: 39, 4: 33, 5: 38}, 'BMI': {0: 30, 2: 31, 3: 24, 4: 30, 5: 31}, 'Social_drinker': {0: 1, 2: 1, 3: 1, 4: 1, 5: 1}, 'Socia

全部,

我的数据集的标题如下所示。我过滤了我的“年龄”和“以小时为单位的缺勤时间”列,并计算了平均小时数。现在我想根据年龄栏来分类。我怎样才能做到这一点?我想把年龄分为31-33岁,34-36岁,37-39岁

{'Age': {0: 33, 2: 38, 3: 39, 4: 33, 5: 38}, 'BMI': {0: 30, 2: 31, 3: 24, 4: 30, 5: 31}, 'Social_drinker': {0: 1, 2: 1, 3: 1, 4: 1, 5: 1}, 'Social_smoker': {0: 0, 2: 0, 3: 1, 4: 0, 5: 0}, 'Son': {0: 2, 2: 0, 3: 2, 4: 2, 5: 0}, 'Day_of_the_week': {0: 3, 2: 4, 3: 5, 4: 5, 5: 6}, 'Month_of_absence': {0: 7, 2: 7, 3: 7, 4: 7, 5: 7}, 'Seasons': {0: 1, 2: 1, 3: 1, 4: 1, 5: 1}, 'Service_time': {0: 13, 2: 18, 3: 14, 4: 13, 5: 18}, 'Absenteeism_time_in_hours': {0: 4, 2: 2, 3: 4, 4: 2, 5: 2}}
我的筛选代码:

filter= df.filter(['Age','Absenteeism_time_in_hours'], axis=1) 
group=filter.groupby('Age').mean()[['Absenteeism_time_in_hours']] 

我是python的新手,如果你能提供解释的话,那就太棒了

您正在寻找该函数。它可以按如下方式用于您的数据:

group.groupby(pd.cut(group.index, [31, 33, 36, 39])).mean().fillna(0)
导致

          Absenteeism_time_in_hours
(31, 33]                          3
(33, 36]                          0
(36, 39]                          3
正如您所看到的,您可以指定垃圾箱的边缘,它会为您处理其余的垃圾箱

不过,我强烈建议您不要将分组结果放入垃圾箱,因为这样您会得到错误的答案。您应该使用原始数据,以便正确计算每个bin组中个体的平均值

当你这样做时,请注意上一个年龄组的差异

(df.groupby(pd.cut(df.Age, [31, 33, 36, 39]))
 .Absenteeism_time_in_hours.mean().fillna(0))
结果:

Age
(31, 33]    3.000000
(33, 36]    0.000000
(36, 39]    2.666667

您正在寻找函数。它可以按如下方式用于您的数据:

group.groupby(pd.cut(group.index, [31, 33, 36, 39])).mean().fillna(0)
导致

          Absenteeism_time_in_hours
(31, 33]                          3
(33, 36]                          0
(36, 39]                          3
正如您所看到的,您可以指定垃圾箱的边缘,它会为您处理其余的垃圾箱

不过,我强烈建议您不要将分组结果放入垃圾箱,因为这样您会得到错误的答案。您应该使用原始数据,以便正确计算每个bin组中个体的平均值

当你这样做时,请注意上一个年龄组的差异

(df.groupby(pd.cut(df.Age, [31, 33, 36, 39]))
 .Absenteeism_time_in_hours.mean().fillna(0))
结果:

Age
(31, 33]    3.000000
(33, 36]    0.000000
(36, 39]    2.666667
df.groupby('Age')['旷工时间(单位:小时)].mean()
df.groupby('Age')['旷工时间(单位:小时)].mean()