Groupby 操作延伸|学习笔记

简介: 快速学习 Groupby 操作延伸

开发者学堂课程【Python 常用数据科学库:Groupby 操作延伸】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/546/detail/7491


Groupby 操作延伸

内容介绍

一、groupby 基本操作

二、groupby 索引的层级概念

三、pandas 结构中的还有多层索引

一、groupby 基本操作

1、之前说了 groupby 的一些基本用法,还有一些其他知识点,看看该怎么样给它们融合在一起。首先构造 df,再执行一下这样的一个 df 格式就出来了,abcd 四个列,然后分别有一些指标。按照习惯一开始输入 grouped,然后把数据传进来,以 A为键,然后算一个值,执行一下,可以看一下 group 之后它的 count 的值,count 值相当于是以 A 为键,A 里只有两个值,我们可以分别统计一下这两个值在 BCD 当中出现的次数,当进行 groupby 操作的时候,不光可以指定一个键,也可以指定两个,比如说传进来一个序列,这个序列里写两个东西一个 A 另一个 B,以两个为键也可以,看一下结果,只不过这个结果当中有一些候选项,相当于一共有六种选择,六种选择对应这六个不同的值,这就是最基本的 group by 的操作。

2、在 group by 操作的时候,也可以写上一些自定义的东西。比如说在这里定义一个函数,这个函数可以得到当前的 type 值。比如说把 letter 传进去,传进去之后,如果 letter 的小写在 aeiou 当中,就 return 一个值 a,如果不是就返回 b,这样写完了自定义的函数

def  get_letter_type(letter):

if letter.lower() in 'aeiou':

return 'a'

else:

return 'b'

grouped = df.groupby(get_letter_type,axis =1)

grouped. count

再来看一下它的结果,就是 groupby 之后,可以进行 return。如果说满足第一种会return a,如果说满足第二种就会 return b,就完成这样的操作,也可以自定义一些操作,自定义完之后,你想让它返回什么,它就给  你返回出来你自己定义的值,这些我们都是可以自己去设计的。        

                                                                 

二、groupby 其实有索引的层级的概念

1、groupby 其实有索引的层级的概念。比如说随便指定一个 Series,在 Series 结构当中,有一些值比如说是123123,然后接下来再来一些值875875,写完了打印出来,得到当前的数据,groupby 的时候可以指定一个l evel,它这里相当于我们不光可以指定一个索引,也可以指定多个索引, level 默认它是从零开始,然后执行一下可以去看它的一些属性,比如说可以看它的 first,结果只出现了一个578,这相当于groupby 之后,它是有些重复的,first 相当于是当中的第一部分,不光可以点 first,也可以点 last,有重复值的时候我们就可以执行这样的操作。

2、group 不光可以指定 level 索引的级别,还可以去指定 first 、last 看一下它具体的值。group 完结果也可以求它的 sum 值,相当于进行了求和的操作。刚刚执行操作的时候,实际上它进行排序,原始是875,它默认会进行自动的排序,但是如果不想要它排序,就给 sort 指定成 False 就可以了。然后我这里还可以再构造一个结构,指定一个 df2=pd.DataFrame

DataFrame 里再传进去一些东西,比如说传进去一个 X 等于 ABAB 这样四个值,然后传进去一个 Y,等于四个值1234,  

执行一下 XY 就出来了。重新写一下 df2.groupby 把 X 传进去,X 有 AB 值,你想关注哪一点可以去 get 一下 group 值,可以关注 A 也可以关注 B,这里 group 完之后就光关注 A 的值,如果写 B 它就会光关注 B,相对来说,你得到这个结果之后,你想要它关注什么它就会帮你去关注什么。


三、pandas 结构中的还有多层索引

1、在 pandas 结构当中,还有多层索引的概念,直接写这样的 arrays 结构

arrays = ['bar','bar', baz',baz','foo',foo','qux',qux'].

['one','two',' one', 'two','one','two','one','two']

然后在这里再指定一个索引 index,在 pandas 当中,还可以构造一个多重索引,Multi 的 index 值,然后.from,再从 from 当前构造出来的 arrays 进行构造,然后再把 arrays 传进去就可以了,传进去之后可以指定它的名字,name 一个等于 first、一个等于 second,这样就构造了一个多重索引,然后执行一下,执行完之后构造一个 Series 结构的结构,s=pd. Series,随便传进来一些数np.random.randn(8),index=index 这就构造出s 了,执行结果前面就是索引,有first、secomd,它是有这样的索引结构的。

2、接下来还是执行 group by 的操作。grouped=s.groupby(),里面可以传进来level, level 是等于零的,然后执行一下看结果。结果就出现一个 first,然后 first 后面对应一些值,这是 level 等于零的时候,接下来 level 指定成一,结果有 one two。所以说当在 group by 的时候,其实可以用多重索引来做这个事,一个数据当中不光可以有一个索引的,也可以指定多索引,当指定多索引的时候,在 group by时也可以自己去指定当前的一个索引是用哪个。如果不写 level 等于零等于一,不知道谁是第一个,谁是第二个,也可以写名字,在这里不是指名字了吗?指定 first 或者 second 结果也可以出来,所以说你可以把所有的名字指定进来,然后你指定 level等于零或者一这些都是可以的。

3、对于构造出来的 DataFrame,还可以对它执行一些特定的操作,特定的操作就需要跟 np 结合在一起,比如说在这里可以调 np.sum,这里还要进行 group的 操作,grouped=df.groupby(),把 AB 传进来,相当于 np 当中有些操作我们可以直接拿过来用了,这样就得到了当前的一个结果。

这就是一个以 AB 为键,执行了一个求 sum 和的操作。在这里还可以指定另外一种格式,在 grouped=df.groupby() 后再指定 as_index=False,这样就相当于把所有的行都列出来了。如果不指定就是一个行一个行地列,相当于一个全部版。  

4、在 groupby 里执行完一些操作之后,grouped=df.groupby(),可以去求和再reset 一下原来的 index 值,直接执行一下这样就出现结果了。就是说我还可以重新去构建一个索引,从0-5这几个数,在我们执行的时候,也可以指定这样的索引。还直接打印 size 值,grouped.size 执行一下,它的 size 值就出来了,就是可以看一下个数,这样就得到 size 的属性,算了组合的次数。还可以算很多东西,比如说group.describe().head,算它的统计特性值,通过 groupby  的操作得到的结果可以去算很多个属性,对咱们当前这个结果我可以去执行很多个操作, grouped=df.groupby(‘A’),它针对于某一个属性 C 来说,算它的一些统计特性值,比如说 np.sum,np.mean,np. std 标准差,执行结果可以统计出很多的特性,展示的时候,也可以给它再指定一个名字,就是麻烦一些,需要给它指定成一个字典结构。指定一个自定义的函数也可以,用一些匿名函数去指定这些都是没有问题的。

相关文章
|
4天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
15天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1309 5
|
1天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。
|
14天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1343 87
|
1天前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
3天前
|
弹性计算 安全 数据安全/隐私保护
2025年阿里云域名备案流程(新手图文详细流程)
本文图文详解阿里云账号注册、服务器租赁、域名购买及备案全流程,涵盖企业实名认证、信息模板创建、域名备案提交与管局审核等关键步骤,助您快速完成网站上线前的准备工作。
189 82
2025年阿里云域名备案流程(新手图文详细流程)