Pandas系列(十二)实现groupby分组统计

  groupby首先按照key进行分组,就可以得到每个groupby的名称,以及group本身,而group本身是一个dataframe或者一个series,然后在这个dataframe或者series进行统计。统计完成之后会将key和统计结果拼合起来。

获取数据

Pandas系列(十二)实现groupby分组统计

分组使用聚合函数做数据统计

单个列groupby,查询所有数据列的统计

  将属性A进行分组,之后再对其属性求和:

Pandas系列(十二)实现groupby分组统计

  这里要注意两点:

  1. groupby中的'A'变成了数据的索引列。
  2. 因为要统计sum,但B列不是数字,所以被自动忽略掉。

多个列groupby,查询所有数据列的统计

Pandas系列(十二)实现groupby分组统计

  上面这种方式('A','B')成对变成了二级索引,如果想要去除这种二级索引的方式,可以设置as_index=False

Pandas系列(十二)实现groupby分组统计

同时查看多种数据统计

  如果想看多种数学统计信息,比如像均值求和均方差这些可以采用.agg方法:

Pandas系列(十二)实现groupby分组统计

  从上面的结果可以看到:列变成了多级索引。如果只想看单列的数据统计可以采用两种方法,比如只想看C这一大列的,可以在统计之前选中,也可以在统计之后索引:

  1. 统计之前选中

Pandas系列(十二)实现groupby分组统计

  1. 统计之后选中

Pandas系列(十二)实现groupby分组统计

  统计之前选中的这种方法明显要节省计算开销。

不同列使用不同的聚合函数

  除此之外,还可以对不同列使用不同的聚合函数,比如对C这一列使用求和函数,对mean这一列使用求均值。

Pandas系列(十二)实现groupby分组统计

遍历groupby的结果理解执行流程

  我们可以for循环看一下group之后的数据格式:

Pandas系列(十二)实现groupby分组统计

  可以看到group之后的数据格式是DataFrameGroupBy。因为依据"A"划分,所以其有两组数据。我们可以使用get_group方法单独获取某个分组:

Pandas系列(十二)实现groupby分组统计

  上述的结果是单列的聚合,如果是多列的话,那么列于列之间的数值就会发生排列组合,利用groupby方法也是可以聚合的:

Pandas系列(十二)实现groupby分组统计

  可以看到,name是一个2个元素的tuple,代表不同的列。

  同样利用get_group方法可以查看到分组之后的一个子dataframe情况。

Pandas系列(十二)实现groupby分组统计

  如果分组之后,只想查看某几列的分组情况,可以采用以下方法:

Pandas系列(十二)实现groupby分组统计

实例分组探索天气数据

  • 读取数据

Pandas系列(十二)实现groupby分组统计

  • 新增一列为月份

Pandas系列(十二)实现groupby分组统计

  1. 查看每个月的最高温度

Pandas系列(十二)实现groupby分组统计

  1. 查看每个月的最高温度、最低温度、平均空气质量指数

Pandas系列(十二)实现groupby分组统计