转载自知乎:侦探L  如何使用agg函数对数据进行分组聚合 - 知乎

在上篇文章中,我们详细地介绍了如何使用groupby函数对数据进行分组。而在python的数据分组中,除了groupby函数之外,agg函数也是我们使用pandas进行数据分析过程中,针对数据分组常用的一条函数。而今天我们就来介绍一下agg函数的用法。

如果说用groupby进行数据分组,可以看做是基于行(或者说是index)操作的话,则agg函数则是基于列的聚合操作。

从实现上看,groupby返回的是一个DataFrameGroupBy结构,这个结构必须调用聚合函数(如sum)之后,才会得到结构为Series的数据结果。在之前关于groupby函数的使用中,大家应该也看出来了,每次用groupby函数后,都是要接类似sum、mean等聚合函数才能输出。

侦探L:如何使用groupby函数对数据进行分组(1)27 赞同 · 1 评论文章正在上传…重新上传取消

而agg是DataFrame的直接方法,返回的也是一个DataFrame。当然,很多功能用sum、mean等等也可以实现。但是agg更加简洁, 而且传给它的函数可以是字符串,也可以自定义,参数是column对应的子DataFrame。

下面我们举几个例子,让大家对agg函数有更直观的体会。

首先,还是一样先建立我们实验要用的数据表。

cities = pd.DataFrame(np.random.randn(5, 5),index=['a', 'b', 'c', 'd', 'e'],columns=['shenzhen', 'guangzhou', 'beijing', 'nanjing', 'haerbin'])
cities.iloc[2:4,2:4] = np.nan
cities

可以看到,这是一个列标签为城市名、包含了几个缺失值的数据表。

如果这个时候,我们想看一下按城市分组,然后查看一下各个城市下数据的均值(mean)和总和(sum)呢,应该怎么做呢?

可以有些同学会以下这么做:

好像确实可以这么做,不过如果我们还要再统计个数,中位数这些呢?一个个地打好像可以,但是总觉得十分麻烦。有没有什么更简便的做法呢?答案就是用agg函数

针对我们上面的例子,我们用agg函数再做一次:

cities[['shenzhen','guangzhou','beijing','nanjing','haerbin']].agg(['sum','mean'])

一次完成!是不是简便得多。

与此同时,对于上面的数据表,我们还可以针对不同的城市,使用不同的聚合函数,只要指定一下就好了:

cities.agg({'shenzhen':['sum'],'beijing':['mean'],'nanjing':['sum','mean']})

可以看到,没指定的城市及函数就没有被输出出来~

groupby函数和agg函数的联用

在我们用pandas对数据进行分组聚合的实际操作中,很多时候会同时使用groupby函数和agg函数。下面我们重新建立一个数据表,然后实验一下:

df = pd.DataFrame({'Country':['China','China', 'India', 'India', 'America', 'Japan', 'China', 'India'], 'Income':[10000, 10000, 5000, 5002, 40000, 50000, 8000, 5000],'Age':[50, 43, 34, 40, 25, 25, 45, 32]})
df

可以看到在我们的数据表中,有国家(Country)、工资(Income)、年龄(Age)三列数据。

下面我们同时使用groupby和agg函数对该数据表进行分组聚合操作。

df_inc=df.groupby('Country').agg(['min','max','mean'])
df_inc

我们从上述结果可以看到,原本的数据表按照“国家(Country)”进行了分组及相应的聚合方式。

有些时候我们只需要对部分数据进行不同的聚合操作,此时就可以通过字典的方式来实现。比如说下面这样:

df_age={'Age':['max','min','mean']}
df.groupby('Country').agg(df_age)

在我们对数据进行聚合的过程中,除了使用sum()、max()等系统自带的聚合函数之外,,大家也可以使用自己定义的函数,使用方法也是一样的~

如何使用agg函数对数据进行分组聚合相关推荐

  1. 如何使用groupby函数对数据进行分组(1)

    转载自知乎:侦探L 如何使用groupby函数对数据进行分组(1) - 知乎 在使用python进行数据分析的过程中,采用groupby函数对数据进行分组是一项很常用的操作,它可以帮助我们更清晰地了解 ...

  2. stream 多个字段分组_Python Pandas对Excel数据的分组聚合和数据透视

    使用Excel进行商业数据分析的时候,最重要的就是两个手段就是vlookup函数和数据透视表.本章就讲解一下与数据透视功能相关的分组聚合和数据透视.其实分组聚合和数据透视两者基本是等价的,但由于使用的 ...

  3. SQLServer中利用NTILE函数对数据进行分组的一点使用

    本文出处:http://www.cnblogs.com/wy123/p/6908377.html NTILE函数可以按照指定的排序规则,对数据按照指定的组数(M个对象,按照某种排序分N个组)进行分组, ...

  4. 【Pandas分组聚合】 groupby()、agg() 方法的使用

    Pandas分组聚合 创建一个dataframe结构 分组函数 groupby() 初识分组聚合 多重行索引分组聚合 对多列数据进行分组聚合 综合应用 聚合函数 agg(aggregate) 求 多列 ...

  5. 《深入浅出Pandas:利用Python进行数据处理与分析》——第3部分 数据形式变化_01分组聚合

    文章目录 分组聚合操作 分组器 分组对象查看 apply/pipe/transform 数据分箱(data binning),或离散组合或数据分桶 分组可视化,pandas提供的简单的与分组相关的可视 ...

  6. 数据分析 第七讲 pandas练习 数据的合并、分组聚合、时间序列、pandas绘图

    文章目录 数据分析 第七讲 pandas练习 数据的合并和分组聚合 一.pandas-DataFrame 练习1 对于这一组电影数据,如果我们想runtime(电影时长)的分布情况,应该如何呈现数据? ...

  7. pandas使用groupby函数、agg函数获取每个分组聚合对应的标准差(std)实战:计算分组聚合单数据列的标准差(std)、计算分组聚合多数据列的标准差(std)

    pandas使用groupby函数.agg函数获取每个分组聚合对应的标准差(std)实战:计算分组聚合单数据列的标准差(std).计算分组聚合多数据列的标准差(std) 目录

  8. pandas使用groupby函数、agg函数获取每个分组聚合对应的均值(mean)实战:计算分组聚合单数据列的均值、计算分组聚合多数据列的均值

    pandas使用groupby函数.agg函数获取每个分组聚合对应的均值(mean)实战:计算分组聚合单数据列的均值.计算分组聚合多数据列的均值 目录

  9. 【Python数据分析与处理 实训03】 --- 酒类消费信息分析(数据分组聚合 group().agg()应用)

    [Python数据分析与处理 实训03] - 酒类消费信息分析(数据分组聚合 group().agg()应用) 探索酒类消费信息 对于下面的数据集进行简单的一些数据的分析训练 若需要源数据请私信~ 1 ...

最新文章

  1. 轻轻一扫,立刻扣款,付款码背后的原理你不想知道吗?
  2. Android 4.0的图形硬件加速及绘制技巧
  3. python中求和公式是什么函数_Python的math库中,用于求和的函数是( )。
  4. Spring高级程序设计(Spring框架创始人倾情推荐的权威开发指南)
  5. firefox浏览器 插件--【维基百科+谷歌翻译】高级应用之 带图翻译
  6. IT规划的企业应用实践(8)研究的目的和意义 之 解决两大矛盾
  7. Google发布用于Google Cloud的.Net API
  8. 再写单链表(不带头单链表)
  9. JAVA运行程序代码段
  10. SonarQube上传分析报告失败
  11. 关于json包爆红我有话说
  12. 经常用everything对硬盘有伤害吗?
  13. 汤家凤:历年真题怎么用?接力题典怎么配合?黄金十月拼命干,提高很多分数不是梦!...
  14. Office在线预览-永中
  15. 概率论与数理统计——卡方分布的期望与方差
  16. excel打印时显示服务器脱机怎么办,excle正在访问打印机!连接局域网打印机在excel中预览,excel自动就关闭是怎么回事...
  17. mybatis Parameter ‘XXX‘ not found
  18. WIN7下安装WIN2003系统
  19. 一文读懂云渲染“串流”全链路时延及优化策略
  20. 华硕主板装系统蓝屏_华硕主板装系统蓝屏咋设置bios?自己装Win7系统硬件官网驱动华硕主板H61M-E(英特尔芯片组)...

热门文章

  1. ExtJS 学习专题-如何应用ExtJS
  2. office(如:Word、Excel、PPT 等)文件轻松实现在线预览
  3. Linux Sheel中cd dir后直接显示dir下的所有文件
  4. shell小知识总结
  5. 省社科基金本子评审标准总结
  6. 小楷的由来,小楷适合写小字
  7. 利用USGS网站下载Landsat系列影像(个人总结的小技巧,适用新手小白)
  8. html精灵图坐标如何确定,CSS实现精灵图与字体图标
  9. 关于实现QQ来消息时的黄色效果,即闪烁窗体
  10. android自定义侧滑菜单slidmenu