Pandas 数据分组 中|学习笔记

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

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

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


Pandas 数据分组 中

 

内容介绍:

一、Merging on index (在 index 上做归并)

二、Iterating Over Groups(对组进行迭代)

 

一、Merging on index (在 index 上做归并)

这上面的例子中,group key 全都是 series,即数据框(dataframe)中的一列,那么 group key 只要长度正确,不一定是一列,可以是任意的数组,这个地方需要大家好好理解。

一般可能平时也见过这样的操作,在这里定了一个安排的数组,这里面有美国的两个州,然后下面再定一个数组【2005,2006】,注意对应有五个数据。然后下面看到在 data1的 series 上面的系列做分组,传到两个刚刚做的安排数组,这里要注意分组使用的 key,就这列表里的这两个数组,它并不是在数据里的,这样的 df 数据里面并没有这两个 key 的,但是这也可以做,下面看看结果。

这也是大家要特别注意的,那么结果就是前面相当于是第0级索引,然后后面 Years 作为第1级索引,也是相当于分层索引的结果,再后面是它的平均值,这里数据有五条,所以就相当于是在数据左边插了一列作为第1级索引,states 再插了一列相当于作为第1级索引连。然后后面再是分组汇总的聚合求平均值,要注意这样理解。

那么来看数据来理解一下,先看做聚合以后,它也是一个 Pandas 的一个 group by 对象,然后看数据的原始数据内容。

Pandas.core.groupby.generic.series group by object at 0*000001426E72748

注意看 data1,为什么这里按照这两个新的单排数组,分组以后求平均值变成了上面的结果?对应的查看【ohio,california,california,ohio,ohio】这五个名字。

那么 california 应该是第一第二,第一第二应该对应的是2005和2006,第一对应2005,第二对应2006,所以 california 里面的1对应2005,california 的2对应2006,然后后面是相应的值。

看一下相应的值在第一个位置为0,然后第二个位置是1对应0.618383,再下面是2对应-1.425223,因为它是和自己做平均,因为其没有多的元素,所以注意看结果,要明白结果是怎么来的。

那么再运行显示原始的数据框,在数据框里面再去对应。

分组信息实际不在数据里面,就是用 state 和 years 数组作为索引,就是作为 group key 的方式很特别,但大多数时间里索引的 key 要传到其列名,就是索引用的 key 是在数据框里面的,那么就像下面的例子。

在数据框里面,key1 是数据框里的一列,然后求平均值,这是正常的,比较容易理解,但刚刚有特别的是 group by 后面的 key不在数据里,所以那个例子特别要注意一下。

这是直接用到数字框,没有使用里面的某一列,所以它将两列都得到了。这里需要注意这两列一定是可以做数据的,是有数值性的。然后再看下面用两个 key 来做 groupby。那么结果有第一分组和第二分组,然后后面是 df,并且没有指定某一列,所以说明两列都有。这是这样的分组内容。

注意在前面例子里面,df.groupby(‘key1’).mean()的结果里没有 key2这一列,它只用 key1,而下面使用了 key1和 key2,这两个是都进行了显示。所以注意像这样的,如果说它既不是像 data1和 data2这样的数值型数据,然后又不是 key ,一般就不会显示,称这种列为nuisance column(有碍列、有害列、麻烦列),这种列一般不会出现在结果中,这也是一个概念。

然后下面再看一个很特别的 groupby 的分组,这个分组是求其后面的元素数目:df.groupby(【‘key1’,‘key2’】).size,后面等于是跟随了函数,而前面是求平均值,这个例子的代码是求 size。可以看到每个分组然后它每一个元素的数量。

 

二、Iterating Over Groups(对组进行迭代)

group by 对象支持迭代,相当于它是两个元素的元组,迭代都知道很多时候是用 for 或者 in 来遍历的:For name,group in df group by(‘key’),按照 key 进行分组,这个结果就是 group by 对象,它是支持迭代的,它里面产生的内容是两个元素构成一个元组,一个是组的名字,一个是组的数据、它的数据块。

这里显示结果,大是按照 key1里面的值,因为 key1里面的值就是a 和 b,所以得到的print(name)就是 a,然后最下面就相当于数据框,也就是group、数据块。

然后是第二个分组 b 以及它的数据块,如果需要区分,可以把第二个使用 # 注释。先执行 print(name),name 就是 a 和 b,然后可以把注释去掉。所以这里要接受这种概念,就是其得到结果,这个group是一个数据块,也可以理解为其是数据框。那面对多个 key 的情况,元组中的第一个元素会被作为另一个元组的 key值,也就是理解成多个 key,资料中给出的翻译,可能有些地方读出来还有点不通顺,希望大家自己理解一下,因为翻译的速度非常快,可能是通过谷歌翻译,百度翻译,然后进行 copy,这导致同学直接看英文会花费很多时间,中文可以没有完全的进行整理。

下面是两个 key,分组可以按照两个 key 来分组,所以在前面迭代时,前面的话也就是(key1,key2)作为一组,然后才是 group,这时需要注意的地方。同样道理,显示其里面组的名字,然后再显示组区块,这显示的 key1和 key2相当是一个排列组合,就是 key1和 key2里面的内容,按照排列组合后得到的每一个结构(a,one、a,two、b,one、b,two),看结果这是分组对象的迭代,下面可以对数据,也可以对数据一部分进行各种操作,这个用法可以用一个字典来表示。那就用一个含有数据片段的字典,作为指令。来看下面的例子,先是通过前面的 groupby然后把它转换成列表,然后再给字典这样一个对象(dict),然后得到一个字体。

可以看出来这是字典,在大括号中的字典,其里面的 key 一个是 a,一个是 b,后面是其value,它的 value 相当于是一个小的数据框。

这地方的差别大家可以看出来,这时需要取字典里的某一个 key,这个 key 是 b,注意 pieces 的含义为字典,然后【‘b’】的书写是取 key(键),然后 key 后面是它的 value,这里的 value 相当于是一个组。

需要了解分组时,groupby 默认是对行(axis=0)进行分组的,但是也可以指定任意的坐标轴或列。另外还可以按照 dtyple 来对列进行分组。dtyple 是列的数据类型或者数据类型。

接下来看看数据框的数据类型,属性它会显示每一列的数据的类型。key1和 key2是叫对象,data1和 data2是数据。然后下面的分组操作:df.groupby(df.dtypes,axis=1),用这个内容来协助进行分组,另外 key 也不一定是数据里面的列,也可以是自己指定的数据,然后要指定坐标图是在列上。

最后看结果,给其做个便利显示以后,可以看到它 group 里面的名字是 dtype,然后数据块就是 group,分别显示一下。

它的数据类型就是名字float64,下面就是数据块,再一个数据类型,然后加上数据块。

相关文章
|
1月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
372 0
|
6月前
|
数据采集 安全 数据挖掘
Pandas数据合并:10种高效连接技巧与常见问题
在数据分析中,数据合并是常见且关键的步骤。本文针对合并来自多个来源的数据集时可能遇到的问题,如列丢失、重复记录等,提供系统解决方案。基于对超1000个复杂数据集的分析经验,总结了10种关键技术,涵盖Pandas库中`merge`和`join`函数的使用方法。内容包括基本合并、左连接、右连接、外连接、基于索引连接、多键合并、数据拼接、交叉连接、后缀管理和合并验证等场景。通过实际案例与技术原理解析,帮助用户高效准确地完成数据整合任务,提升数据分析效率。
621 13
Pandas数据合并:10种高效连接技巧与常见问题
|
9月前
|
数据采集 数据可视化 数据处理
Pandas高级数据处理:数据仪表板制作
《Pandas高级数据处理:数据仪表板制作》涵盖数据清洗、聚合、时间序列处理等技巧,解决常见错误如KeyError和内存溢出。通过多源数据整合、动态数据透视及可视化准备,结合性能优化与最佳实践,助你构建响应快速、数据精准的商业级数据仪表板。适合希望提升数据分析能力的开发者。
254 31
|
9月前
|
缓存 数据可视化 BI
Pandas高级数据处理:数据仪表板制作
在数据分析中,面对庞大、多维度的数据集(如销售记录、用户行为日志),直接查看原始数据难以快速抓住重点。传统展示方式(如Excel表格)缺乏交互性和动态性,影响决策效率。为此,我们利用Python的Pandas库构建数据仪表板,具备数据聚合筛选、可视化图表生成和性能优化功能,帮助业务人员直观分析不同品类商品销量分布、省份销售额排名及日均订单量变化趋势,提升数据洞察力与决策效率。
213 12
|
9月前
|
消息中间件 数据挖掘 数据处理
Pandas高级数据处理:数据流式计算
在大数据时代,Pandas作为Python强大的数据分析库,在处理结构化数据方面表现出色。然而,面对海量数据时,如何实现高效的流式计算成为关键。本文探讨了Pandas在流式计算中的常见问题与挑战,如内存限制、性能瓶颈和数据一致性,并提供了详细的解决方案,包括使用`chunksize`分批读取、向量化操作及`dask`库等方法,帮助读者更好地应对大规模数据处理需求。
205 17
|
9月前
|
数据采集 存储 数据可视化
Pandas高级数据处理:数据报告生成
Pandas 是数据分析领域不可或缺的工具,支持多种文件格式的数据读取与写入、数据清洗、筛选与过滤。本文从基础到高级,介绍如何使用 Pandas 进行数据处理,并解决常见问题和报错,如数据类型不一致、时间格式解析错误、内存不足等。最后,通过数据汇总、可视化和报告导出,生成专业的数据报告,帮助你在实际工作中更加高效地处理数据。
278 8
|
9月前
|
数据采集 并行计算 数据可视化
Pandas高级数据处理:数据报告生成实战指南
数据报告生成面临数据质量、计算性能、呈现形式和自动化等核心挑战。常见问题包括缺失值导致统计失真、内存溢出及可视化困难。解决方案涵盖数据清洗、分块处理、安全绘图模板等。通过模块化设计、异常处理机制和性能优化策略,如使用`category`类型、并行计算等,可大幅提升效率。最佳实践建议建立数据质量检查清单、版本控制和自动化测试框架,确保系统具备自适应能力,提升报告生成效率300%以上。
239 12
|
1月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
226 0
|
3月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
345 0
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
327 1