python教程

当前位置:首页 > Pandas教程 > 当前文章

Pandas教程

pandas中groupby的分组原理

2022-01-13 78赞 老董笔记

  对数据分组需要明确数据源及分组条件,分组完毕后才能对每个组进行针对性操作。在pandas中groupby函数就是对数据进行分组的。本文介绍groupby的分组原理。

  我们先看1个源数据的长相:

# -*- coding:utf-8 -*-
import pandas as pd

df = pd.read_excel('test.xlsx')
print(df)
      关键词  城市  区域  二手房房源  租房房源
0    贡院6号  北京  北部      4     0
1     观澳园  北京  北部     18    13
2   天鹅湾南区  北京  北部     14    15
3    木材新村  杭州  东部      4     9
4    万寿亭街  杭州  东部      1     2
5  瓶窑镇凤溪路  杭州  东部      2     0
6     孝子坊  杭州  东部      2     0
7     永和坊  杭州  东部     24     5

  1、按照单列分组

# -*- coding:utf-8 -*-
import pandas as pd

df = pd.read_excel('test.xlsx')
gb = df.groupby(['城市'])
print(gb) #DataFrameGroupBy对象
df_new = gb.sum() #每组求和
print(df_new)
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000001DD707720D0>
    二手房房源  租房房源
城市             
北京     36    28
杭州     33    16

  2、按照多列分组

# -*- coding:utf-8 -*-
import pandas as pd

df = pd.read_excel('test.xlsx')
gb = df.groupby(['城市','区域'])
print(gb) #DataFrameGroupBy对象
df_new = gb.max() # 每组最大值
print(df_new)
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000001DD707720D0>
          关键词  二手房房源  租房房源
城市 区域                     
北京 北部    贡院6号     18    15
杭州 东部  瓶窑镇凤溪路     24     9

  上述结果可知:groupby分组后是1个DataFrameGroupBy对象,直接print输出什么也看不出来,但是这个对象可以调用很多方法通过不同的方法对每1组的数据完成运算。进一步了解DataFrameGroupBy对象及其方法会在以后的文章中介绍,本文的目的只是对groupby的分组有个基础认识。

  3、分组的本质

  一般我们给groupby传入列名(某1列或者多列)分组,本质上他按照所传入的列的唯一值来来分组的,按照值分组是groupby分组的本质,在pandas官方文档也介绍了可以传入ndarray数组,如过传入np数组则按照数组的值来分组。但是需要注意1个问题,数组的长度和df的长度要一致,否则报错 Grouper and axis must be same length,详情看下一篇文章。

# -*- coding:utf-8 -*-
import numpy as np
import pandas as pd

df = pd.read_excel('test.xlsx')
values = np.array(['北京','杭州'] *4)
print(df.groupby(values).mean())

    二手房房源  租房房源
北京   5.25  4.25
杭州  12.00  6.75

感兴趣直接点击图片获取>>

文章评论

pandas中groupby的分组原理文章写得不错,值得赞赏