Pandas GroupBy分组函数用法详解
分组统计是一个比较常见的操作,我们需要对不同类别的数据分别观察。比如在一个班级中,我们想要获得男生的最大年龄和女生的最大年龄,这时就需要先按性别进行分组,然后分别统计最大年龄。
起始分组操作也是数据库的常见操作,其实我们可以把 DataFrame 看作是数据库中的一张表。
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
起始分组操作也是数据库的常见操作,其实我们可以把 DataFrame 看作是数据库中的一张表。
1. 基本函数
基本函数可以用来查看分组的具体信息。示例代码如下。In [1]: import pandas as pd ...: import numpy as np In [2]: df = pd.DataFrame({'性别' : ['男', '女', '男', '女', ...: '男', '女', '男', '男'], ...: '成绩' : ['98', '93', '70', '56', ...: '67', '64', '89', '87'], ...: '年龄' : [15,14,15,12,13,14,15,16]}) ...: df Out[2]: 性别 成绩 年龄 0 男 98 15 1 女 93 14 2 男 70 15 3 女 56 12 4 男 67 13 5 女 64 14 6 男 89 15 7 男 87 16
1) 创建分组对象
这里我们根据性别字段进行分组,创建 GroupBy 对象,男生一组,女生一组。In [3]: GroupBy=df.groupby("性别") In [4]: for name,group in GroupBy: # 查看分组的具体信息 ...: print(name) ...: print(group) 女 性别 成绩 年龄 1 女 93 14 3 女 56 12 5 女 64 14 男 性别 成绩 年龄 0 男 98 15 2 男 70 15 4 男 67 13 6 男 89 15 7 男 87 16
2) 查看分组信息
groups 属性可以用来查看分组的信息,从返回的结果中可以看到不同分组的样本在原数据框中的索引。In [5]: GroupBy.groups # 显示分组的组名,以及所对应的索引 Out[5]: {'女': Int64Index([1, 3, 5], dtype='int64'), '男': Int64Index([0, 2, 4, 6, 7], dtype='int64')} In [6]: GroupBy.indices # 类似于GroupBy.groups Out[6]: {' 女 ': array([1, 3, 5], dtype=int64), ' 男': array([0, 2, 4, 6, 7], dtype=int64)}
3) get_group()获得指定分组
get_group 方法可以用来获得指定分组的数据框。In [7]: GroupBy.get_group("男") # 获得指定分组 Out[7]: 性别 成绩 年龄 0 男 98 15 2 男 70 15 4 男 67 13 6 男 89 15 7 男 87 16
4)查看分组头尾元素
head 方法和 tail 方法可以用来获得分组后每个组头尾的若干元素。In [8]: GroupBy.head(2) # 每个组头两个元素 Out[8]: 性别 成绩 年龄 0 男 98 15 1 女 93 14 2 男 70 15 3 女 56 12 In [9]: GroupBy.tail(2) # 每个组末尾两个元素 Out[9]: 性别 成绩 年龄 3 女 56 12 5 女 64 14 6 男 89 15 7 男 87 16
5) 获取每个组若干元素
nth 方法可以用来获得每个分组的若干元素。In [10]: GroupBy.nth(1) # 查看每个分组若干元素 Out[10]: 性别 年龄 成绩 女 12 56 男 15 70
2. 统计函数
分组最主要的作用就是对各个组别进行分组描述。分组返回的是对各个组别统计的结果。1) count()
Count 方法用来计算每个分组样本的个数。In [11]: GroupBy.count() # 查看分组后元素个数 Out[11]: 性别 成绩 年龄 女 3 3 男 5 5
2) max()
max 方法用来计算分组后,每个组的最大值。In [12]: GroupBy.max() # 每个组的最大值 Out[12]: 性别 成绩 年龄 女 93 14 男 98 16
3) min()
min 方法用来计算分组后,每个组的最小值。In [13]: GroupBy.min() # 每个组的最小值 Out[13]: 性别 成绩 年龄 女 56 12 男 67 13
4) media()
median 方法用来计算分组后,每个组的中位数。In [14]: GroupBy.median() # 每个组的中位数 Out[14]: 性别 年龄 女 14 男 15
5) sun()
sum 方法用来计算分组后,每个组的和。In [15]: GroupBy.sum() # 查看组的和 Out[15]: 性别 年龄 女 40 男 74
6) prod()
prod 方法用来计算分组后,每个组的乘积。In [16]: GroupBy.prod() # 每个组的乘积 Out[16]: 性别 年龄 女 2352 男 702000
7) std()
std 方法用来计算分组后,每个组的标准差。In [17]: GroupBy.std() # 每个组的标准差 Out[17]: 性别 年龄 女 1.154701 男 1.095445
8) var()
var 方法用来计算分组后,每个组的方差。In [18]: GroupBy.var() # 每个组的方差 Out[18]: 性别 年龄 女 1.333333 男 1.200000
9) agg()
agg 方法可以用来分别计算分组后每个组的和、均值和标准差。In [19]: GroupBy['年龄'].agg([np.sum, np.mean, np.std])# 同时查看每个组的和、均值和 #标准差 Out[19]: 性别 sum mean std 女 40 13.333333 1.154701 男 74 14.800000 1.095445
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。