您的位置: 网站首页> Pandas教程> 当前文章
pandas中groupby的分组原理
老董-我爱我家房产SEO2022-01-13198围观,130赞
对数据分组需要明确数据源及分组条件,分组完毕后才能对每个组进行针对性操作。在pandas中groupby函数就是对数据进行分组的。如果想全面了解分组聚合的场景,可以参考文章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看不出什么来,其实这个对象是可以进行遍历的,该对象类似于[(组名,子组df),(组名,子组df2)]。这个对象可以调用很多方法来对每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
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
pandas中groupby的分组原理文章写得不错,值得赞赏
站点信息
- 网站程序:Laravel
- 客服微信:a772483200