Pandas3.2(分组聚合)

2023-03-03  本文已影响0人  山猪打不过家猪

1.group by 分组

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

df.groupby('age').mean() 

1.2分组计算指定列的值

df.groupby('age')['education'].mean()

2.分箱和透视表

2.1 等距离分箱

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

其中:

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
上一篇 下一篇

猜你喜欢

热点阅读