美文网首页
Pandas3.2(分组聚合)

Pandas3.2(分组聚合)

作者: 山猪打不过家猪 | 来源:发表于2023-03-03 16:36 被阅读0次

1.group by 分组

1.1分组计算所有数字列的值

  • 根据年龄分组,算出各个字段的平均值
df.groupby('age').mean() 

1.2分组计算指定列的值

  • 根据年龄分组,算出education的值
df.groupby('age')['education'].mean()

2.分箱和透视表

2.1 等距离分箱

  • 将年龄根据0-30,30-40,40-50,50-60,70到无穷大分成1,2,3,4,5个等级,并创建一个年龄等级页
df["age_classify"] = pd.cut(df["age"],[0,30,40,50,60,float('inf')],labels=["1","2","3","4","5"])

注意:float('inf')表示的是无穷大

2.2 透视表

2.2.1 单列分组的透视表

纵向按照年龄和性别分组,横向education分组,表的内容是对currentSmoker进行统计求和
所以:我们可以直观的看到,不同年龄,不同性别,不同教育程度的人,他们现在抽烟的人数有的多少

df.pivot_table('currentSmoker',index=['age','male'],columns='education',aggfunc='sum',fill_value=0)
image.png

其中:

  • ccurrentSmoker:表示表中内容是什么
  • index=['age','male']`:表示需要分组,这里先将年龄分组,然后将每个年龄里面的男女性别进行分组
  • columns: 表示列名的聚合,这里将不同的education情况进行了分组
  • aggfunc='sum':表示求和
  • fill_value=0:表示将NAN用0来 填充

2.2.2 多列分组透视表

将上面的currentSmoker在添加一个totChol的汇总

df.pivot_table(['currentSmoker','totChol'],index=['age','male'],columns='education',aggfunc='sum',fill_value=0)
image.png

2.2.3 不同的列不同的聚合计算

将上面的对tolchol改成查看最大值

df.pivot_table(['currentSmoker','totChol'],index=['age','male'],columns='education',aggfunc={'currentSmoker':'sum','totChol':'max'},fill_value=0)
image.png

2.2.4 添加表尾的合计

df.pivot_table(['currentSmoker'],index=['age','male'],columns='education',aggfunc='sum',fill_value=0,margins=True,margins_name='Total')
image.png

2.2.5 对分好组的表在进行分组

df.pivot_table(['currentSmoker'],index=['age','male'],columns='education',aggfunc='sum',fill_value=0,margins=True,margins_name='Total').groupby('age').sum()
  • 为了直观,最好将分好组的表重新命名一个新的表
df_group=df.pivot_table(['currentSmoker'],index=['age','male'],columns='education',aggfunc='sum',fill_value=0,margins=True,margins_name='Total')
df_group.groupby('age').sum()

2.2.4 分组频率统计

按照性别分组,查看教育程度出现的频率

pd.crosstab(df['male'],df['education'],margins=True)
image.png

相关文章

网友评论

      本文标题:Pandas3.2(分组聚合)

      本文链接:https://www.haomeiwen.com/subject/cvxeldtx.html