python 数据聚合与分组

前面讲完了字符处理,但对数据进行整体性的聚合运算以及分组操作也是数据分析的重要内容。
通过数据的聚合与分组,我们能更容易的发现隐藏在数据中的规律。

数据分组

数据的分组核心思想是:拆分-组织-合并
首先,我们了解下groupby这个函数

import numpy as np
import pandas as pddata=pd.DataFrame({'level':['a','b','c','b','a'],'num':[3,5,6,8,9]})
print(data)

结果为:

combine=data['num'].groupby(data['level'])
print(combine.mean())

结果为:

这里是以level为关键字对num进行分组,然后求平均值。当然groupby中也可以放入多个分组,用逗号隔开

print(combine.size())

结果为:

返回每个分组的频率
另外,我们也可以根据数据的所属类型对进行分组

combine=data.groupby(data.dtypes,axis=1)print(dict(list(combine)))

结果为:

这里combine的是Serise数据结构,需要转换线转换为列表,再转成字典的形式才能打印。

data=pd.DataFrame(np.random.randn(5,5),index=['li','chen','wang','zhao','qian'],columns=['a','b','c','d','e'])print(data)

结果为:

data.ix[1:3,['b','c']]=np.nan
map={'a':'ss','b':'kk','c':'ss','d':'kk','e':'kk'}
print(data.groupby(map,axis=1).sum())

结果为:

这里map是我们手工创造的字典,然后我们根据字典的对应表对data数据的行进行分组求和。

数据聚合

在各计算机语言中,聚合函数几乎都差不多,下面我们来看下python中的聚合函数

当然,我们也可以通过自定义函数来扩展方法。
跟上面直接在数据后面加聚合函数方法略有不同,聚合函数这里也可以传入agg或aggregate中

data=pd.DataFrame({'level':['a','b','c','b','a'],'num':[3,5,6,8,9]})
newdata=data.groupby('level')
print(newdata.agg('mean'))

结果为:

print(newdata.agg(['mean','sum','std']))

也可以多个聚合函数一起使用:

还能用字典的形式进行聚合运算

data=pd.DataFrame({'level':['a','b','c','b','a'],'num':[3,5,6,8,9],'num1':[2,5,9,6,8]})
newdata=data.groupby('level')
print(newdata.agg({'num':'mean','num1':'sum'}))

结果为:

接下来我们了解下transform

data=pd.DataFrame(np.random.randn(5,5),index=['li','chen','wang','zhao','qian'],columns=['a','b','c','d','e'])key=['ss','kk','kk','ss','ss']
print(data.groupby(key).mean())

结果为

正常求均值之后,会独立形成一个dataframe

print(data.groupby(key).transform(np.mean))

结果为:

而在使用transform时,在直接在原来的数据格式下形成新的均值表
这个过程中,经历了数据的拆分,求均值,然后再合并

接下来我们看下更强大的apply
之所以说apply的强大在于,可以我们通过自定义函数,实现我们任何想要的形式对数据进行聚合运算,
但这也是apply相对而言较难的地方,关键点在于如何构造自定义函数。

data=pd.DataFrame({'level':['a','b','c','b','a'],'num':[3,5,6,8,9],'num1':[2,5,9,6,8]})
def fun(data):return data.groupby('level').agg(['mean','sum'])print(data)

结果为:

print(data.groupby('level').apply(fun))

结果为:

最后,在数据分析中,我们经常要用到的一个excel功能是数据透视表,这对我们观察数据规律十分有帮助,
在python中也可以通过pivot_table实现数据透视功能

data=pd.DataFrame({'level':['a','b','c','b','a'],'key':['one','two','one','two','one'],'num':[3,5,6,8,9],'num1':[2,5,9,6,8]})
print(data)

结果为:

print(data.pivot_table(index='key',columns='level'))

结果为:

当然只有你调整参数内容就可以像excel中随心所欲的变化行列位置,这里的计数结果默认为均值,用其他聚合函数可以通过aggfunc参数进行设置。

另外还有一个用于计算分组频率的cosstab,使用方法比pivot_table要简单些,形式也类似于execl的数据透视表功能。

print(pd.crosstab(data.key,data.level,margins=True))

结果为

转自:https://www.cnblogs.com/wkslearner/p/5930760.html

python 数据聚合与分组相关推荐

  1. 【学习经典】python 数据聚合与分组运算(part 2)

    本文的前半部分:python 数据聚合与分组运算(part 1) 4. 透视表和交叉表 透视表(pivot table)是各种电子表格程序和其他数据分析软件中一种常见的数据汇总工具.它根据一个或多个键 ...

  2. Python数据聚合和分组运算(1)-GroupBy Mechanics

    前言 Python的pandas包提供的数据聚合与分组运算功能很强大,也很灵活.<Python for Data Analysis>这本书第9章详细的介绍了这方面的用法,但是有些细节不常用 ...

  3. Python之数据聚合与分组运算

    Python之数据聚合与分组运算 1. 关系型数据库方便对数据进行连接.过滤.转换和聚合. 2. Hadley Wickham创建了用于表示分组运算术语"split-apply-combin ...

  4. 【Python】GroupBy:数据聚合与分组运算

    [博客地址]:https://blog.csdn.net/sunyaowu315 [博客大纲地址]:https://blog.csdn.net/sunyaowu315/article/details/ ...

  5. 类的应用python平均分_【数据科学系统学习】Python # 数据分析基本操作[四] 数据规整化和数据聚合与分组运算...

    本篇内容为整理<利用Python进行数据分析>,博主使用代码为 Python3,部分内容和书本有出入. 在前几篇中我们介绍了 NumPy.pandas.matplotlib 三个库的基本操 ...

  6. Python数据聚合的方法

    本文主要讲解Python中的数据聚合的函数,函数主要由两个:size(),count(): size 跟 count 的区别: 1.count()方法用于统计字符串里某个字符出现的次数.可选参数为在字 ...

  7. vfp python_python foxpro数据聚合和分组运算——分组级运算和转换(3)

    数据聚合和分组运算--分组级运算和转换(3),有需要的朋友可以参考下. 1.假设我们想要为一个DataFrame添加一个用于存放各索引分组平均值的列,一个办法是先聚合再合并: >>> ...

  8. pandas数据聚合与分组

    前言 数据聚合于分组操作在众多的关系型或非关系型库中都有涉及,大体原理都是类似,根据某个或者多个业务字段将获取到的数据进行聚合操作或者分组操作,pandas提供了非常友好的分组聚合功能,可以方便使用人 ...

  9. pandas合并groupby_pandas数据聚合与分组运算——groupby方法

    简介 pandas中一类非常重要的操作是数据聚合与分组运算.通过groupby方法能够实现对数据集的拆分.统计.转换等操作,这个过程一气呵成. 在本文中,你将学到: 选取特定列分组: 对分组进行迭代: ...

最新文章

  1. 教程 | 如何在手机上使用TensorFlow
  2. Linux命令学习之nslookup
  3. 【Ubuntu】 Ubuntu16.04快速搭建环境
  4. wdcp-apache开启KeepAlive提高响应速度
  5. IOS scrollView 知识点
  6. slowfast 跑多卡的时候遇到问题
  7. 请教:如何进行存储过程的调试
  8. 由SVN的月份计算错误,谈一个月的含义
  9. 好莱坞法则_人工智能去好莱坞
  10. iOS 硬件 定位 - 详解 数据的处理
  11. cad打开卡死_cad文件不大,打开就卡死不动或打开异常慢的原因分析
  12. 渗透测试之信息收集漏洞库篇
  13. MySQL基础 创建学生表实现查询基础功能
  14. Objective-C仿映客跑车动画
  15. 【华为OD机试真题 JS】IPv4地址转换成整数
  16. 【CodeForces 332B --- Maximum Absurdity】递推
  17. 微信小程序简单实现两列瀑布流布局页面
  18. [MySQL] 零基础学MySQL 04
  19. NodeJS 知识点
  20. Excel明细生成多个word采购合同,Excel魔方完成

热门文章

  1. ES5和ES6的类的区别
  2. 删除df中值为指定值的行
  3. 基于springboot+vue(thymeleaf)+mysql下的自创音乐网站平台--CrushMusic(开发日志十三)
  4. 面试官问百万数据excel导出功能如何实现?
  5. 软件测试学习第二周--MySQL
  6. Embarcadero_Dev-Cpp_6.3_TDM-GCC 9.2_Setup
  7. 蜘蛛网(混合高速信息)
  8. VS2010中文旗舰版下载 Visual Studio 2010 Ultimate
  9. C语言 Openssl的md5使用方式
  10. 逗牙笑话网网址http://www.idouya.xin收藏