开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践:Pandas 数据分组 上】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1067/detail/15396
Pandas 数据分组 上
下面来学习 pandas 中数据分组聚合与透视。关于第五个内容:pandas 数据可视化,就看给大家提供的资料,以及在线平台上放的数据可视化的视频资料。
pandas 数据分组聚合与透视,第一部分有四小节内容,主要来介绍第一节和第四节。
第一节就是一般的分组GroupBy Mechanics,是数据框系列要对数据进行分组;然后第二节是将数据聚合Data Aggregation,在分组上面再做一些聚合统计,汇总函数,这部分就没时间讲了,可以看提供的资料;
第三部分主要是将 apply:general split-apply-combine 函数用在分组上面,这个也自己了解;第四节内容是讲数据透视表和交叉表,同学们如果用过电子表格就知道把这个透视表是很重要的一个内容。
Data aggregation and group operations
那么下面来看看第一节数据分组,那么开始把整个第六部分的内容介绍一下。就是做数据的汇总、分组操作:
(1)包括把 pandas 对象也就是数据对象(serious或者dataframe),按照关键字段(key)进行分组。
(2)然后在分组上做各种汇总。比如计数,平均值,标准差等等,也可以是用户自定义的函数。
(3)然后应用组内转换和其他一些操作,比如标准化,线性回归,排序,子集选择。
(4)计算透视表和交叉列表。
(5)进行分位数的分析和一些统计组分析。
先看第一节 pandas 的分组机制,分组机制这有编辑语言库的作者。其描述的很经典,分组主要就是做三个阶段的工作:一个将数据进行分割 split,然后分割上面再做应用,应用用一些汇总统计函数。然后再做结合合并,结合合并就是函数作用以后会产生一些结果,这个结果又是一个单独的数据对象,那么这里知道它是要在一些关键字段上进行处理,所以这个关键的分组字段很重要,它可以是单独的一列也可以是多列,也可以是数据里面没有的名字,也可以是索引,所以key 的的形式很多。
习惯上认为 key 就是某一类,某一个属性。但是在实际应用里,key 就是一种类型,它可能有多种类型,后面的实验里面会给大家相关例子。
下面来先加载相关包,然后创建一个四列的数据框,有 key1,key2,data1,data2,这个创建的数据有四列,然后中间都是创建的数据,key1是a,b;key2是 one,two 的值,data1,data2里面是具体的数值。
那么我现在假设想用 key1作为一个 label、关键词、标签来求 data1的平均值,因为 key1要作为 label,它里面有两个值,分别是a和b,那么需要求每个 label 的平均值就要用到分组汇总的方法。
这里可以在 data1上去调用分组,也可以在真题上做分组,有很多方法可以做到刚刚的要求,一种是在 data1列上做操作,当然也可以在整体数据上做操作。先看在 data1这一列上做操作,数据框里面取一列,列的名字放在中括号中,然后用分组的函数 groupby,括号里要指定按照什么关键字进行分组,用的是 key1这一列,在数据框里面取某一列,是数据框的名字加中括号,然后用这个列名加引号引起来,也可以用df【‘key1’】。但是要求规范化、标准化,还是用中括号来取某一列。
这里来进行执行,大家看执行的结果,得到一个 grouped 的分组,这 group 的分组是 pandas 的 groupby 对象,它是一个叫group by的 object,在得到这个分组以后,可以在分组方面做应用,应用一些会统计函数。所以分组、应用、合并这三个过程,还是要强化在脑子里面,下面看看在它上面使用应用函数。
这个分组带来很多汇总函数用平均值,可以在分组对象.后面按 tab键,然后这里面就有很多分组汇总函数,而且基本都是英文单词。
如果想要用的时候可以看帮助,帮助怎么看,操作方法就是在列的名字后面加问号,那比如 mean 的帮助怎么看,在上面可以加单元格,注意加单元格把光标放在这这一行上面,点击字母 a,那么在上面会加一个空的单元格,如果按 b 会在下面加空的单元格。那么 group mean 复制粘贴到上面的空单元格并且在后面加问号,注意问号一定是英文状态下的,然后练习一下,下面就提供了其帮助以及示例,那么这就是说在学 Python 的应用过程当中,没有必要像学英语一样去记住那么多的东西,只要知道逻辑、线索,然后会查帮助,那这是给大家讲的方法。
那么下面再看这是在分组上面求汇总(平均值),当然其 key1还在这里,然后 a 标签就是它的平均值,这就是给大家看的结果。
然后 group key 这个分组的键,按照 key1键对数据series进行了聚合,这也导致其产生了一个新的 series,就此运行的结果看下面的显示,它本身也是一个 series,而且这个 series 的索引就是 key1列中的不同值。
也可以用下面方法,得到的结果中,index 索引也有key1,因为使用了df【‘key1’】作为它groupby上面的 key,那么可以传入多个数组做 list,然后再看下例子。
还是要在 data1的 series 数据框里面选第一列,然后做分组。但是分组传的是一个列表,里面有两个字段 key,然后求其平均值。最后看结果,结果是一个层次索引、分层索引了,有 key1和 key2,然后再是其平均值,前面学过的层次缩影,或者叫多层索引、分层缩影,就很容易理解了。
那么第0级的 key 是 key1,第1级的 key 是 key2,它会产生不同的键。对于这种层次索引,分层索引,可以把它展开,展开以后就是第0级,第0级索引还是保留在它那里,第1级索引变成列上去,最后来看结果。