数据科学 第 3 章: 9 累计与分组 groupby

指针薄雾
• 阅读 1296

本节学习groupby

引用激励数据,连接数据库jili表(代码省略)
数字简单计算
本节内容前面是运用sum/mean等函数对数字简单计算

jili.mean() #求均值
jili.mean(axis = 'columns') #求每行的均值
jili.sum()  #求和

groupby:切片计算

groupby的过程:
分割:把dataframe按指定的键分为若干组
应用:对每个组应用函数,通常为累计、转换或过滤
组合:将每组1的结果合并成一个输出数组。

jili.groupby('dep')  #聚合后没有用函数,会返回一个dataframe
jili.groupby('dep').sum()   #用函数后会显示计算结果

数据科学 第 3 章: 9 累计与分组 groupby

# 组合dep 之后,切片oldrate,查看group的和。这里是字符,所以显示了group的所有值
jili.groupby('dep')['group'].sum()

#组合dep 之后,切片oldrate,查看oldrate的和
jili.groupby('dep')['oldrate'].sum()

数据科学 第 3 章: 9 累计与分组 groupby

# 对每个可以计算的字段进行了描述性统计,中间有省略
# unstack是上一节索引中的内容,是把多重索引转换为行,具体可以看下面没有用unstack的对比。
jili.groupby('dep').describe().unstack()

#对groupby之后的结果,切片allbones字段,进行描述性统计
jili.groupby('dep')['allbones'].describe()

数据科学 第 3 章: 9 累计与分组 groupby

groupby:4 种计算方法

1、aggregate:在groupby之后聚合的值上计算

计算方法。如 sum,count,max,std

2、filter:在原来的每个值上做计算,但是在groupby之后做计算

切片 注意filter切片器中一定要有计算方法(summean之类的),否则会报错。

# aggregate可以设定计算方法
jili.groupby('dep').aggregate(['min','max'])

# filter对allbones列进行了切片,如果dep的allbones均值小于9000,则不显示. 
# 二部的均值低于9000,所以结果中没有二部数据。
jili.groupby('dep').filter(lambda x:x['allbones'].mean() >9000)

数据科学 第 3 章: 9 累计与分组 groupby

3、transform:在原来的每个值上做计算,但是在groupby之后做计算

转换,把原来的值换为计算后的值

jili.groupby('dep').transform(lambda x:x -x.mean()).head(3)  
# x -x.mean()是减取本列的均值

def fun(x):
    x['allbones'] = x['newbones']-x['oldbones']
    return x
jili.groupby('dep').apply(fun)

4、apply:

把计算的结果运用到原数据(看下图)
数据科学 第 3 章: 9 累计与分组 groupby

5、高级用法

#组合为两层
jili.groupby(['dep','group']).mean()

#组合为两层后,只选allbones的值,然后再转换行列
jili.groupby(['dep','group'])['allbones'].sum().unstack()

数据科学 第 3 章: 9 累计与分组 groupby

以上就是groupby的用法,之前跟着视频学过,但看书的话更详细,下节是透视表,拜拜。

点赞
收藏
评论区
推荐文章
添砖java的啾 添砖java的啾
4年前
distinct效率更高还是group by效率更高?
目录00结论01distinct的使用02groupby的使用03distinct和groupby原理04推荐groupby的原因00结论先说大致的结论(完整结论在文末):在语义相同,有索引的情况下groupby和distinct都能使用索引,效率相同。在语义相同,无索引的情况下:distinct效率高于groupby。原因是di
python知道 python知道
4年前
Python初学者必备书籍《Python入门经典》高清PDF版|百度网盘免费下载|Python初学者,自学Python必读
提取码:1028以及前文提到的学习路线图内容简介Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python可以用于很多的领域,从科学计算到游戏开发。《Python入门经典》是面向Python初学者的学习指南,详细介绍了Python编程基础,以及一些高级概念,如面向对象编程。全书分为24章。第1章介绍了Python的背景和安装方法。第2章
隐私集合求交(PSI)协议研究综述
隐私集合求交(PSI)是安全多方计算(MPC)中的一种密码学技术,它允许参与计算的双方,在不获取对方额外信息(除交集外的其它信息)的基础上,计算出双方数据的交集。隐私集合求交在数据共享,广告转化率,联系人发现等领域有着广泛的应用空间。本文对隐私集合求交的各项实现技术做了介绍和对比,对隐私集合求交的原理进行了分析,并进一步阐述了隐私集合求交目前面临的挑战和发展前景。
Wesley13 Wesley13
3年前
SQL 常用函数使用
DISTINCT  Distinct去重复。性能上和GROUPBY差异据说有点点优势,GROUPBY存在毕竟不是用来去重的,GROUPBY用作分组,当然可以做去重动作selectDISTINCT列1,列2...from数据库.dbo.表名/结果:
Stella981 Stella981
3年前
ArcGIS python计算长时间序列多个栅格数据的平均值
通常,我们需要将多个栅格求平均,例如,将一年中每个月的NDVI值加起来除以12,就会等到月均NDVI,该过程虽然在栅格计算器中可以实现,但是当时间序列较长时就比较费事,此时,python代码是不二的选择。下图所示为栅格数据相加的原理图,也就是对应的栅格相加,生成新的栅格数据。求均值是需要再除以栅格个数。!(https://imgblog.csd
Stella981 Stella981
3年前
R和python语言如何求平均值,中位数和众数
均值是通过取数值的总和并除以数据序列中的值的数量来计算。R语言平均值公式:mean(x,trim0,na.rmFALSE,...)\x<c(22,13,2,45,56,73,21,44,NA)\result.mean<mean(x,rim0.2,na.rmTRUE)rim0
Wesley13 Wesley13
3年前
mysql 数据库group by 按排序取值
mysql数据库groupby按排序取值 mysql5.7以后,groupby想要按照排序的顺序来取值,在子结果集中要有union,groupby等操作,不然按照id默认排序来取值示例:数据库:score表id user\_id num1 100     952 100     963
Wesley13 Wesley13
3年前
Oracle的rollup、cube、grouping sets函数
Groupby、rollup、cube、groupingsets区别oracle除了groupby基本用法之外,还有ROLLUP,CUBE,GROUPINGSETS等扩展方法,这些可以理解为GroupBy分组函数封装后的精简用法,相当于多个unionall的组合显
Wesley13 Wesley13
3年前
mysql——GROUP BY和HAVING
GROUPBY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。select子句中的列名必须为分组列或列函数,列函数对于groupby子句定义的每个组返回一个结果。某个员工信息表结构和数据如下:  id  name  dept  salary  edlevel     hiredate   1  张
Stella981 Stella981
3年前
ACT 与 Beetlsql 的搭配使用 二
第2章ACT与Beetlsql的搭配实战上一节为了便利,我们使用H2做为示例数据库,本节我们将使用国内目前最多人使用的MySQL,来实战一下.在本节里我们一起学习:1.ACT里如何连接数据库及配置多个数据源2.ACT里如何配置特定的数据库连接池3.项目的通用结构4.
Wesley13 Wesley13
3年前
mysql 分组查询教程
1.分组  分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。2.分组的特点  1.)groupby的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组  2.)groupby可用于单个字段分组,也可用于多个字段分组3分组的用法select字段名from数据表gro