逆向透视表 python_Python实现数据的透视表
在处理数据时,经常需要对数据分组计算均值或者计数,在Microsoft Excel中,可以通过透视表轻易实现简单的分组运算。而对于更加复杂的分组运算,Python中pandas包可以帮助我们实现。
数据
交叉表分类计数
其它透视表运算
1 数据
首先引入几个重要的包:
import pandas as pdimport numpy as npfrom pandas import DataFrame,Series
通过代码构造数据集:
data=DataFrame({'key1':['a','b','c','a','c','a','b','a','c','a','b','c'],'key2':['one','two','three','two','one','one','three','one','two','three','one','two'],'num1':np.random.rand(12),'num2':np.random.randn(12)})
得到数据集如下:
datakey1 key2 num1 num20 a one 0.268705 0.0840911 b two 0.876707 0.2177942 c three 0.229999 0.5744023 a two 0.707990 -1.4444154 c one 0.786064 0.3432445 a one 0.587273 1.2123916 b three 0.927396 1.5053727 a one 0.295271 -0.4976338 c two 0.292721 0.0988149 a three 0.369788 -1.157426
2 交叉表—分类计数
按照不同类进行计数统计是最常见透视功能,可以通
(1)crosstab
#函数:crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, dropna=True, normalize=False)crosstab的index和columns是必须要指定复制的参数:pd.crosstab(data.key1,data.key2)
结果如下:
key2 one three twokey1a 3 1 1b 0 1 1c 1 1 1
想要在边框处增加汇总项可以指定margin的值为True:
pd.crosstab(data.key1,data.key2,margins=True)
结果:
key2 one three two Allkey1a 3 1 1 5b 1 1 1 3c 1 1 2 4All 5 3 4 12
(2)pivot_table
#函数:pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
使用pivot_table函数同样可以实现,运算函数默认值aggfunc=’mean’,指定为aggfunc=’count’即可:
data.pivot_table('num1',index='key1',columns='key2',aggfunc='count')
结果相同:
key2 one three twokey1a 3 1 1b 1 1 1c 1 1 2
(3)groupby
通过groupby相对来说会更加复杂,首先需要对data按照key1和key2进行聚类,然后进行count运算,再将key2的index重塑为columns:
data.groupby(['key1','key2'])['num1'].count().unstack()
结果:
key2 one three twokey1a 3 1 1b 1 1 1c 1 1 2
3 其它透视表运算
(1)pivot_table
pivot_table(data, values=None, index=None, columns=None,aggfunc='mean', fill_value=None, margins=False,dropna=True, margins_name='All')
要进行何种运算,只需要指定aggfunc即可。
默认计算均值:
data.pivot_table(index='key1',columns='key2')
out:
num1 num2key2 one three two one three twokey1a 0.193332 0.705657 0.203155 -0.165749 2.398164 -1.293595b 0.167947 0.204545 0.661460 0.555850 -0.522528 0.143530c 0.496993 0.033673 0.206028 -0.115093 0.024650 0.077726
分类汇总呢并求和:
data.pivot_table(index='key1',columns='key2',aggfunc='sum')
结果:
num1 num2key2 one three two one three twokey1a 0.579996 0.705657 0.203155 -0.497246 2.398164 -1.293595b 0.167947 0.204545 0.661460 0.555850 -0.522528 0.143530c 0.496993 0.033673 0.412055 -0.115093 0.024650 0.155452
也可以使用其它自定义函数:
#定义一个最大值减最小值的函数def max_min (group):return group.max()-group.min()
data.pivot_table(index='key1',columns='key2',aggfunc=max_min)=
结果:
num1 num2key2 one three two one three twokey1a 0.179266 0.0 0.000 3.109405 0.0 0.000000b 0.000000 0.0 0.000 0.000000 0.0 0.000000c 0.000000 0.0 0.177 0.000000 0.0 1.609466
(2)通过groupby
普通的函数如mean,sum可以直接应用:
data.groupby(['key1','key2']).mean().unstack()
返回结果:
num1 num2key2 one three two one three twokey1a 0.193332 0.705657 0.203155 -0.165749 2.398164 -1.293595b 0.167947 0.204545 0.661460 0.555850 -0.522528 0.143530c 0.496993 0.033673 0.206028 -0.115093 0.024650 0.077726
逆向透视表 python_Python实现数据的透视表相关推荐
- 表单及数据提交、表单的作用、服务端接收提交的数据、php处理数据流程、文件域及文件域中数据处理、php展示数据(响应)
表单及数据提交: 表单的作用: 用于收集相关信息:html中有专门提交数据的标签,可以很容易的收集用户输入的信息,这个标签有两个重要的属性:action表单提交的地址和method以什么方式提交表单, ...
- mysql--创建表,插入数据,修改表名,删除表,简单查询/内连接、左/右连接
创建表mm: 其中id为主键且自增长 create table mm(id int(10) primary key not null unique auto_increment,name varch ...
- Mysql复制表两种方式(复制表结构、复制表结构和数据、复制表中的部分数据、复制表中的部分数据并起别名)
需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等. 如果仅仅使用CREATE TABLE - SELECT 命令,是无法实现的. 本章节将为大家介绍如何完整的复制MySQL数据表,步骤如 ...
- MYSQL复制表结构及数据到新表
1.复制表结构及数据到新表 select * into 目的数据库名.dbo.目的表名 from 原表名 select * into my0735home.dbo.infoMianTest from ...
- mysql创建备份表sql_sql创建备份表和复制数据到备份表
1.复制表结构及数据到新表 CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable ...
- 按照下面的页面做一个用户注册的Sevlet,要求自己设计表,并将表单的数据写入到表中。
按照下面的页面做一个用户注册的Sevlet,要求自己设计表,并将表单的数据写入到表中. 表单代码如下:(register.html) <!DOCTYPE html> <html la ...
- 管理表空间和数据文件——维护表空间——改变表空间的读写状态和改变表空间名称...
默认情况下表空间是处于可读写状态,用户不仅可以查询表空间上的对象数据,而且可以在表空间上执行dml 和ddl 操作.如果表空间只用于存放静态数据,那么为了便于管理和备份恢复,应该将其转变为只读状态:另 ...
- 管理表空间和数据文件——维护表空间——设置默认表空间和删除表空间和删除数据文件盒临时文件...
1.设置数据库默认表空间 当建立数据库时,使用default tablespace 选项可以设置数据库的默认表空间.在建立了数据库之后,使用alter database default tablesp ...
- 管理表空间和数据文件——建立表空间——建立字典管理表空间和建立加密表空间...
字典管理表空间是为了与早期版本兼容而保留的空间管理特性.当使用字典管理方式时,区数据字典进行管理. 注意:如果建立字典管理表空间,那么要求system表空间必须采用字典管理方式,并且建立时,需要指定e ...
最新文章
- 用python创建一个目录
- Spring Cloud微服务实战:手把手带你整合eurekazuulfeignhystrix
- 关于C#调用API的理解(汇多考勤机HD4K)
- 【c】‘声明’和malloc不要重复开辟空间
- mydate97设置时间
- udp文件服务器,UDP客户端服务器文件传输
- 江苏大学c语言程序设计,江苏大学201级C语言课程设计要求及题目.doc
- java怎么写自定义布局_java-Android设置自定义首选项布局
- ssh免密码登陆远程服务器(3种方式)
- 使用avalon2 去构建一个 app-route
- 面向对象程序设计——基于JML的地铁系统
- USB总线-Linux内核USB3.0设备控制器驱动框架分析(四)
- Android 动画之 View动画 和 帧动画
- 海贝音频384khz_海贝音乐app下载-海贝音乐最新版下载v4.0.1-IT168下载站
- Hibernate学习文章
- 欧姆龙NX1P2编程学习(1)-编写功能块注意事项
- 红海厮杀的超融合 泽塔云竟用GPU云开辟一片蓝海
- java -p_javap的作用是什么?
- 转《魏炜的举世无双大博客》
- Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/practi
热门文章
- 数据库 查询XML XQuery
- javascript读取用户名和计算机名
- 如何优雅地本地化构建Mybatis源码
- C语言---快速排序
- MATLAB程序详细解析,遗传算法——matlab代码解析
- centos6.5卸载和安装mysql_Linux CentOS 6.5 卸载、tar安装MySQL的教程
- matlab中上下光标的作用,当鼠标移动到按钮上时改变光标形状
- 分布式系统监视zabbix讲解十之监控tomcat--技术流ken
- python 迭代器相关知识
- 2.4. myisamchk — MyISAM Table-Maintenance Utility