在将数据集准备好了之后,通常的任务是计算分组统计或生成透视表。

pandas提供了groupby功能,可以自然地对数据集进行切片、切块和摘要。

在本章中,我们将会学到:

1根据一个或多个键(函数、数组或DataFrame列名)拆分pandas对象

2.计算分组摘要统计,如计数、平均值,标准差

3.对DataFrame的列应用各种各样的函数

4.计算透视表或交叉表

5.执行分位数分析以及其他分组分析

groupby技术——“split-apply-combine”(拆分-应用-合并)

分组键可以使用:

1.列表或数组

2.表示DataFrame某个列名的值

3.字典或Series,会与待分组轴的值进行一一对应

4.函数,用于处理轴索引或索引中的各个标签

如果按key1分组,可以:

如果一次传入多个分组的数组,那么会根据分组数最多的结果显示,并与其他分组相对应:

可以使用unstack方法,将多重索引展开:

分组键也可以是任意长度适当的数组:

也可以是DataFrame的列名:

如果某一列不是数值数据,会从结果中排除这一列的聚合结果。

groupby有size方法,可以返回含有分组大小的Series:

对分组进行迭代:

其中,name将被赋值索引,groupby被赋值分组后的数值

一个有用的运算:将df.groupby('key1')对象做成字典。

选取一个或一组列

只对data1和data2进行分组聚合。

通过字典或Series进行分组:

创建字典:

将字典传入groupby即可作为分组键

Series也有同样的功能,如果将Series作为索引,则pandas会检查Series以确保索引和分组轴是对齐的。

通过函数进行分组

如果想根据索引的长度进行分组,可以只传入获取长度的函数len:

将函数跟数组、列表、字典、Series混用也可以。

根据索引级别分组

层次化索引数据集能够根据索引级别进行聚合,只需要通过level关键字传入级别编号或名称即可:

hier_df.groupby(level='cty',axis=1).count()

数据聚合

GroupBy会高效地对Series进行切片,然后对各片调用piece.quantile(0.9),最后将这些结果组装成最终结果。

如果要使用自己对聚合函数,只需传入agg方法即可:

有些非聚合函数如describe也可以使用:

----自定义聚合函数将比python自身优化后的函数要慢很多---

如果传入的是优化函数和自定函数吗,那么还是要调用agg方法:

如果传入一组函数,那么得到的DataFrame会自动以相应的函数命名:

但并非一定要接受Groupby自动提供的列名。如果传入的是由(name,function)元组组成的列表,则各元组的第一个元素会被用于DataFrame的列名。

对于DataFrame,可以定义不同的列应用一组函数,也可以对不同的列应用不同的函数。

如果想要对不同的列应用不同的函数,具体的办法是向agg传入一个从列名映射到函数的字典:

transform函数:

transform函数会将一个函数应用到各个分组,然后将结果放置到适当的位置。如果各分组产生的是标量值,那么该值将被广播出去。

apply:一般性的“拆分-应用-合并”

transform函数和aggregate函数一样有着严格的条件:传入的函数只能产生两种结果,要么是一个可以广播的标量值(比如np.mean),要么产生一个相同大小的结果数组。

最一般化的groupby方法是apply。apply会将待处理的对象拆分成多个片段,然后对各片段调用传入的函数,最后尝试将各片段组合到一起。apply函数的威力取决于编码者的创造力,因为它只负责将函数在DataFrame的各个片段上调用,然后结果由pandas.concat组装到一起,最后返回一个pandas对象或标量值。

如果不需要将分组标志作为最后结果的索引,将group_keys=False传入groupby即可禁止该效果。

分位数和桶分析

透视表和交叉表

透视表是对各种电子表格程序和其他数据分析软件中一种常用的数据汇总工具。它根据一个或多个键对数据进行聚合,并根据行和列上对分组键将数据分配到各个矩形区域中。

现在用法改了,rows改为index,cols改为columns

python 整合同类数据求分位值_【利用python进行数据分析】数据聚合与分组运算...相关推荐

  1. python为啥爬取数据会有重复_利用Python来爬取“吃鸡”数据,为什么别人能吃鸡?...

    原标题:利用Python来爬取"吃鸡"数据,为什么别人能吃鸡? 首先,神装镇楼 背景 最近老板爱上了吃鸡(手游:全军出击),经常拉着我们开黑,只能放弃午休的时间,陪老板在沙漠里奔波 ...

  2. python 实现对地图的点击_利用python和百度地图API实现数据地图标注的方法

    如题,先上效果图: 主要分为两大步骤 使用python语句,通过百度地图API,对已知的地名抓取经纬度 使用百度地图API官网的html例程,修改数据部分,实现呈现效果 一.使用python语句,通过 ...

  3. python数据对比找不同_利用Python读取文件的四种不同方法比对

    利用Python读取文件的四种不同方法比对 大家都知道Python 读文件的方式多种多样,但是当需要读取一个大文件的时候,不同的读取方式会有不一样的效果.下面就来看看详细的介绍吧. 场景 逐行读取一个 ...

  4. access数据放到list中_利用Python提取视频中的字幕(文字识别)

    我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...

  5. python按某列拆分excel表格_利用Python+Pandas实现从一个excel表中提取列形成新表

    简要 利用python实现把一个工作表中的某些列,和其中单独的一列,提取成为一个个新表. 如图(处理前)蓝色部分是需要保留的列,红色是需要一项一项分出来作为单独表格的列. 其中,第一行的名字是用的回车 ...

  6. python脚本下载钉钉的文件_利用python下载钉钉群直播视频

    今年因为疫情的原因不能开学,所以很多学校都使用钉钉进行在线授课,但是在钉钉里面点击下载群直播回放的时候却发现: 真好,管理员设置了不允许下载回放. 这就完了吗?NoNoNo!既然正常途径下载不了,那么 ...

  7. python自动化测试脚本可以测php吗_利用Python语言实现实验室自动化

    作为一名系统和应用工程师,得益于自动化仪器和软件,我已经节省了不计其数的日日夜夜;例如LabVIEW,这是一款系统设计平台和开发环境,支持可视化编程语言.LabVIEW支持用户利用友好的图形用户界面( ...

  8. python怎么画出圆润的曲线_利用python画出AUC曲线的实例

    以load_breast_cancer数据集为例,模型细节不重要,重点是画AUC的代码. 直接上代码: from sklearn.datasets import load_breast_cancer ...

  9. 下面哪个python库不能用于提取网页信息_利用python的webscraping库采集抓取爱帮网电话号码...

    利用python的webscraping模块抓取爱帮网电话号码,本文采集该页面的标题和2个电话号码, 具体的python代码: # -*- coding: UTF-8 -*- ''' Created ...

  10. python将excel转换成图片格式_利用python将图片转换成excel文档格式

    前言 本文主要介绍了关于利用python将图片转换成excel文档的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 实现步骤 读取图像,获取图像每个像素点的RGB值: 根据 ...

最新文章

  1. Nginx-出现-403-Forbidden
  2. jQuery --- 实现 checkbox 样式的单选框
  3. 【学习笔记】16、常用内置函数(Built-in Functions)
  4. java面试题37 关于对象成员占用内存的说法哪个正确?( )
  5. 11篇SCI论文,多次跨专业,武大物理博士敲开美国顶尖生命医学研究中心大门...
  6. 用express、mongodb、nodejs开发简单的登陆
  7. 挣值管理:PV,AC和EV
  8. 解决小目标检测问题的几个途径
  9. Python3 threading的多线程管理中的线程管理与锁
  10. 高效分页存储过程代码
  11. 如何商业智能平台BI的成本
  12. rip协议中周期性广播路由信息的报文_关于RIP的一点小笔记--华为
  13. 加密+拜占庭将军_简单读懂拜占庭容错
  14. 物联网设备接入流程与平台架构
  15. 宾馆如何实现WiFi无线上网短信认证?
  16. 正向代理与反向代理的区别
  17. VS2008简体中文版下载及安装破解
  18. 【JZOJ4847】【NOIP2016提高A组集训第5场11.2】夕阳
  19. Paper reading (三十一):Personalized Nutrition by Prediction of Glycemic Responses(overview)
  20. opcode加密php代码,总结Opcode缓存和PHP代码的加密

热门文章

  1. 关闭浏览器后Session失效原因分析
  2. 寻找自己的道路——与技术同胞共勉 一种划分为七个阶段的道路:自信=意志=布局=切入点=团队=渠道=产品...
  3. this kernel requires an x86-64 CPU, but only detected an i686 CPU
  4. oracle 查询判断语句
  5. 用SandCastle为注释生成chm文档
  6. 11.企业安全建设指南(金融行业安全架构与技术实践) --- 互联网应用安全
  7. 5. phpstorm 快捷键
  8. 前端面试宝典(4)——必掌握
  9. php中file文件操作函数readfile fread fgets fgetc以及不需要加fopen的file_get_contents file_put_contents file()
  10. MySQL将一张表的某些列数据,复制到另外一张表,并且修改某些内容