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月前
|
Python
|
1月前
|
Python
|
29天前
|
Python
Pandas 常用函数-数据合并
Pandas 常用函数-数据合并
35 1
|
1月前
|
索引 Python
Pandas 常用函数-数据排序
10月更文挑战第28天
11 1
|
1月前
|
Python
Pandas 常用函数-查看数据
Pandas 常用函数-查看数据
14 2
|
1月前
|
SQL JSON 数据库
Pandas 常用函数-读取数据
Pandas 常用函数-读取数据
15 2
|
29天前
|
Python
Pandas 常用函数-数据选择和过滤
Pandas 常用函数-数据选择和过滤
11 0
|
1月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
66 0
|
3月前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
84 0
|
1月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
40 2