Pandas 数据分组 下|学习笔记

简介: 快速学习 Pandas 数据分组 下

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践Pandas 数据分组 下】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15399


Pandas 数据分组 下

 

内容介绍:

一、Selecting a Column or Subset of Columns(选中一列,或列的子集)

二、Grouping with Dicts and Series(用 dicts 和 Series 进行分组)

三、Grouping with Functions(用函数进行分组)

四、Grouping by index levels(按索引层级来分组)

 

 

一、Selecting a Column or Subset of Columns(选中一列,或列的子集)

下面来学习分组,分组对于整个数据框分组完了以后,可以取里面的一列或是几列,本节主要是这个意思。

如果一个 GroupBy 对象是由 DataFrame 创建来的,那么通过列名或个包含列名的数组来对 GroupBy 对象进行索引的话,就相当于对列取子集做聚合(column subsetting for aggregation) .这句话的意思是:

df.groupby(‘key1’)【‘data1'】

df.groupby(‘key1' )【[‘data2']】

上面的代码其实就是下面的语法糖(Syntactic sugar)

df【‘data1'】.groupby(df【‘key1'】)

df【[‘data2']】.groupby(df【‘key1'】)

语法糖 Syntacticc sugar 是由 Peter J. Landin(和图灵一样的天才人物,是他最先发现了Lambda演算, 由此而创立了函数式程创造的一个词语,它意指那些没有给计算机语言添加新功能,而只是对人类来说更甜蜜的语法。语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读。不过其并没有给语言添加什么新东西。

尤其是对于一些很大的数据集, 这种用法可以聚集一部分列。 例如,在处理一个数据集的时候,想要只计算data2列的平均值,并将结果返还为个DataFrame,我们可以这样写

先看数据,也就是数据框,先在下面做一下分组,这里是在整个数据框上做分组,然后它的key 是 key1和 key2。这里只允许显示其中的一份数据,也就是 data1以及 data2,然后再求其平均值,这就是取一列或取几列的含义。

那么得到需要的结果,也可以先得到一个分组对象,注意其后面没有做汇总,也没有做聚合。这是仅仅得到分组的 groupby 对象,然后在对象上需要求 data2的汇总。

注意这里情况没有显示,但是在下面的名字是 data2。所以这样的操作方式也可以,所以刚刚的内容意思是整个数据框分组以后,可以选其中的一列或几列。

 

二、Grouping with Dicts and Series(用 dicts 和 Series 进行分组)

下面可以用 dices 或者 series 进行分组,用字典和系列进行分组,

下来看这样的例子,这是五行五列的数据框,然后有列的名字、行的索引,运行使其显示数据,发现有列的名字:a、b、c、d、e,行的索引是这些名字(joe、steve、wes、jim、travis),然后可以用 iloc这是索引查找数据的。其中 i 表示用的是数字的,那么行是选2:3行(不包括第三行),那等于就是第2行,同时列是0,列是逗号就包括了这两列 b 和 c 等于把这两个数字变成空:np=nan,那么选择执行,再运行看到这两个数就变成了空,那么先看一下此数据。

然后假设有一个组,对应多个列,而且想要按照分组把这些列的和计算出来,然后看下面的例子:

Mapping={‘a’:‘red’,‘b’:‘red’,‘c’:‘blue’,‘d’:‘blue’,‘e’:‘red’,‘f’:‘orange’}

本来 a、b、c、d、e、f 是列,然后其对应了红、蓝、橙这样的分组,等于要把里面的列再按照颜色去分组,也就是说有一个分组,它的颜色会对应多个列,然后想用颜色把这些列统计、汇总出来。

开始操作:这部分讲是用字典和系列联合进行操作,那么可以在分组时,把字典传给 groupby 函数作为 key,所以在这个数据的框里面 groupby,刚刚做的字典,然后在列上进行操作,然后它就会用这个字典去映射列的名字。再把它分除,所以这个功能就强大了,在其上面进行汇总函数,最后就变成两种颜色,也就是上面数据中的A、B、C、D、E,变成了红色和蓝色,所以得到红色和蓝色的汇总,这种方法也可以适用于 series。刚开始在数据框上做操作,直接用 series 做也可以,构建 series,然后在groupby里面用 series,也一样可以得到两种颜色。

所以这样的技巧,就可以把列的名字还有有很多字段,就是有些数据

、分析项目里面几十个、几百个的字段。但是这些字段、列名它也可以分组,那么这里就不需要去改变式数据,直接可以用字典的方法来进行映射 market 操作,这个技巧大家要掌握一下。

 

三、Grouping with Functions(用函数进行分组)

然后学习用函数进行分组。比起用 dict 或 series 定义映射关系,使用 python 的函数是更通用的方法。任何一个作为 group key 的函数,在每一个 index value (索引值)上都会被调用一-次,函数计算的结果在返回的结果中会被用做 group name.更具体-点,考虑前一个部分的 DataFrame, 用人的名字作为素引值。假设我们想要按照名字的长度来分组;同时我们要计算字符串的长度,使用 len 函数会变得非常简单:

先看下面的实验,刚刚的数据 groupby 其中key 值为函数len派生的内置函数,然后再汇总求和,那么这个函数它会作用在哪里呢?这个函数其实是对索引,对行的名字进行操作。从前面的数据可以得知行的名字是人名。

前面一直做行名字的批注,那么所以 len 是作用在行的名字,所以需要测人名的长度,字母的长度,那么人名里面有三个字母、五个字母、六个字母的,但是列是不变的,所以这是汇总的结果。

这里可以执行显示 people,显示数据来看一下,发现人名 joe 是三个字母,wes 也是三个字母,jim 也是三个字母,所以意味着这些三个字母的就可以被分组到一起。

然后可以对照其数据是否对应,那么这里还有五个字母或是留个字母的,也就是字母长度为5或6。所以看一下此功能:可以用函数作用在索引上,然后可以混合不同的函数数组、字典、或者系列都可以。

接下里定一个列表。里面是为one、two的五个值。接下来做分组的复杂度提高了,key 有两个,一个是函数长度,测长度其作用在行的名字(index)上;另外一个是按照给的数据给的列表、数组得到下下面这样一个结果,结果里面是汇总是求最小值,那是作用在名字上面,名字的长度是3,5,6。

One,two 则是相相当于是在原来的数据左边加了一列,这里有五条记录,对应 one、one、one、two、two,然后再进行汇总,在群里面的最小值,可以去对照最小值数据。

 

四、Grouping by index levels(按索引层级来分组)

在分组的时候,可以来索引层级来分组。就是层次索引或者多索引,再复杂就是多索引问题的分组。接下来看这样的数据,构造一个列名,这个列名定义成多索引,从数组里面来得到的,它的名字有两个,一个 city,另一个是 tenor,上面是城市,下面是数值。这是在列上面,显示一下这是 multiindex 类型,然后下面来构建数据框,四行五列的数据列名字是刚刚定义的,它相当于是多索引。然后执行显示,行的索引是默认的0、1、2、3,列的名字是层级索引、多索引,其第零级是上面城市的名字,第一级是 tenor,这里可以进行对应。

然后进行分组,分组时可以通过使用 level 的关键字,Level=city的话,就会按照第零级的 city 去做分组来指明这是在列上面。

这里城市有两个,并且有五个值,但是最终它的分组只有两个组:Us和 JP,这是得到的这样结果。

这里给大家讲述了 pandas 的分组内容,这个分组可能比常规的分组要增加了很多新的内容,希望大家通过这个文件,能够加深对 pandas 分组理解,熟练掌握分组是做数据分析的一个基本的内容。

相关文章
|
4月前
|
数据采集 安全 数据挖掘
Pandas数据合并:10种高效连接技巧与常见问题
在数据分析中,数据合并是常见且关键的步骤。本文针对合并来自多个来源的数据集时可能遇到的问题,如列丢失、重复记录等,提供系统解决方案。基于对超1000个复杂数据集的分析经验,总结了10种关键技术,涵盖Pandas库中`merge`和`join`函数的使用方法。内容包括基本合并、左连接、右连接、外连接、基于索引连接、多键合并、数据拼接、交叉连接、后缀管理和合并验证等场景。通过实际案例与技术原理解析,帮助用户高效准确地完成数据整合任务,提升数据分析效率。
377 13
Pandas数据合并:10种高效连接技巧与常见问题
|
7月前
|
数据采集 数据可视化 数据处理
Pandas高级数据处理:数据仪表板制作
《Pandas高级数据处理:数据仪表板制作》涵盖数据清洗、聚合、时间序列处理等技巧,解决常见错误如KeyError和内存溢出。通过多源数据整合、动态数据透视及可视化准备,结合性能优化与最佳实践,助你构建响应快速、数据精准的商业级数据仪表板。适合希望提升数据分析能力的开发者。
157 31
|
7月前
|
缓存 数据可视化 BI
Pandas高级数据处理:数据仪表板制作
在数据分析中,面对庞大、多维度的数据集(如销售记录、用户行为日志),直接查看原始数据难以快速抓住重点。传统展示方式(如Excel表格)缺乏交互性和动态性,影响决策效率。为此,我们利用Python的Pandas库构建数据仪表板,具备数据聚合筛选、可视化图表生成和性能优化功能,帮助业务人员直观分析不同品类商品销量分布、省份销售额排名及日均订单量变化趋势,提升数据洞察力与决策效率。
118 12
|
7月前
|
消息中间件 数据挖掘 数据处理
Pandas高级数据处理:数据流式计算
在大数据时代,Pandas作为Python强大的数据分析库,在处理结构化数据方面表现出色。然而,面对海量数据时,如何实现高效的流式计算成为关键。本文探讨了Pandas在流式计算中的常见问题与挑战,如内存限制、性能瓶颈和数据一致性,并提供了详细的解决方案,包括使用`chunksize`分批读取、向量化操作及`dask`库等方法,帮助读者更好地应对大规模数据处理需求。
151 17
|
7月前
|
数据采集 存储 数据可视化
Pandas高级数据处理:数据报告生成
Pandas 是数据分析领域不可或缺的工具,支持多种文件格式的数据读取与写入、数据清洗、筛选与过滤。本文从基础到高级,介绍如何使用 Pandas 进行数据处理,并解决常见问题和报错,如数据类型不一致、时间格式解析错误、内存不足等。最后,通过数据汇总、可视化和报告导出,生成专业的数据报告,帮助你在实际工作中更加高效地处理数据。
177 8
|
12月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
251 1
|
10月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
301 0
|
10月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
202 2
|
11月前
|
机器学习/深度学习 并行计算 大数据
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
278 3
|
11月前
|
数据采集 数据挖掘 API
Python数据分析加速器:深度挖掘Pandas与NumPy的高级功能
在Python数据分析的世界里,Pandas和NumPy无疑是两颗璀璨的明星,它们为数据科学家和工程师提供了强大而灵活的工具集,用于处理、分析和探索数据。今天,我们将一起深入探索这两个库的高级功能,看看它们如何成为数据分析的加速器。
136 1