python表格对分组进行遍历

97 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第25天,点击查看活动详情

对分组进行遍历

上面我们通过groupby()size()两个方法以及以前所学的一些技能计算出了富豪的男女占比。

如果我们还想要分别查看富豪中男、女的最大年纪,最小年纪以及平均年龄,看看我们是不是还有机会成为他们中的一员。

groups.get_group('F')可以获取分组后某一个组的数据,'F'为组的名字,这样我们就可以对某一个组进行处理。

image.png

下面的代码实现了获取'F'组的最大年纪,最小年纪以及平均年龄,运行代码并观察结果。

image.png

代码中我们使用get_group()获取了F组的数据,并使用mean()、max()、min()等统计函数快速获取我们的指标值。

函数意义
count()统计列表中非空数据的个数
nunique()统计非重复的数据的个数
sum()统计列表中所有数值的和
mean()计算列表中数据的平均值
median()统计列表的数据的在中位数
max()求列表中数据的最大值
min()求列表中数据的最小值

上面的代码成功的计算出了我们想要的数据,我们也可以遍历分组后的数据,并获取他们的最大年纪,最小年纪以及平均年龄。

运行下面的代码,看一下如何遍历分组后的数据。

上面代码中的将分组后的对象groups进行遍历,可以获取到group_name每个组的名字,group_df每个组的数据

接下来我们自己在下面代码框中练习使用遍历的方法,计算出每一组中的最大年纪,最小年纪以及平均年龄。

image.png

按多列进行分组

刚刚我们完成了将富豪以性别进行分组,并拿到了年龄的最大值和最小值以及平均值等信息。

现在我们完成一个相对复杂的需求,需要查看每个国家男女的富豪的 数量。那就需要我们将富豪们先按国家分组,然后在按性别分组。。

按照上面的分析,难道我们要写两次groupby的分组操作?NO,我们强大 的groupby() 方法是支持按照多列进行分组。

运行上面的代码,看下groupby()是如何进行多列分组的:

 group = df.groupby(['country','gender'])
 df1 = group.size()
 print(df1)

当需要按多列进行分组的时候,groupby()方法里面我们传入的一个列表,列表中分别存储分组依据的列名。

注意:列表中列名的顺序,确定了先按country列进行分组,然后再按gender列分组。不同的顺序,产生的分组名字是不同的。

group.size()返回的结果中发现索引值是多层的,那么

对于多层索引的值我们如何去获取呢?

 group = df.groupby(['country','gender'])
 df1 = group.size()
 print(df1)
 size = df1['Austria']['F']
 print(size)

通过代码,我们发现对于多层索引值的获取,只需要从外往里一层一层的取就可以了.