用python做透视表_用Python实现数据的透视表的方法

用Python实现数据的透视表的方法

来源:中文源码网    浏览: 次    日期:2019年11月5日

【下载文档:  用Python实现数据的透视表的方法.txt 】

(友情提示:右键点上行txt文档名->目标另存为)

用Python实现数据的透视表的方法在处理数据时,经常需要对数据分组计算均值或者计数,在Microsoft Excel中,可以通过透视表轻易实现简单的分组运算。而对于更加复杂的分组运算,Python中pandas包可以帮助我们实现。

1 数据

首先引入几个重要的包:

import pandas as pd

import numpy as np

from 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)})得到数据集如下:

data

key1 key2 num1 num2

0 a one 0.268705 0.084091

1 b two 0.876707 0.217794

2 c three 0.229999 0.574402

3 a two 0.707990 -1.444415

4 c one 0.786064 0.343244

5 a one 0.587273 1.212391

6 b three 0.927396 1.505372

7 a one 0.295271 -0.497633

8 c two 0.292721 0.098814

9 a three 0.369788 -1.1574262 交叉表—分类计数

按照不同类进行计数统计是最常见透视功能,可以通

(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 two

key1

a 3 1 1

b 0 1 1

c 1 1 1想要在边框处增加汇总项可以指定margin的值为True:

pd.crosstab(data.key1,data.key2,margins=True)结果:

key2 one three two All

key1

a 3 1 1 5

b 1 1 1 3

c 1 1 2 4

All 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 two

key1

a 3 1 1

b 1 1 1

c 1 1 2(3)groupby

通过groupby相对来说会更加复杂,首先需要对data按照key1和key2进行聚类,然后进行count运算,再将key2的index重塑为columns:

data.groupby(['key1','key2'])['num1'].count().unstack()结果:

key2 one three two

key1

a 3 1 1

b 1 1 1

c 1 1 23 其它透视表运算

(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 num2

key2 one three two one three two

key1

a 0.193332 0.705657 0.203155 -0.165749 2.398164 -1.293595

b 0.167947 0.204545 0.661460 0.555850 -0.522528 0.143530

c 0.496993 0.033673 0.206028 -0.115093 0.024650 0.077726分类汇总呢并求和:

data.pivot_table(index='key1',columns='key2',aggfunc='sum')结果:

num1 num2

key2 one three two one three two

key1

a 0.579996 0.705657 0.203155 -0.497246 2.398164 -1.293595

b 0.167947 0.204545 0.661460 0.555850 -0.522528 0.143530

c 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 num2

key2 one three two one three two

key1

a 0.179266 0.0 0.000 3.109405 0.0 0.000000

b 0.000000 0.0 0.000 0.000000 0.0 0.000000

c 0.000000 0.0 0.177 0.000000 0.0 1.609466(2)通过groupby

普通的函数如mean,sum可以直接应用:

data.groupby(['key1','key2']).mean().unstack()

返回结果:

num1 num2

key2 one three two one three two

key1

a 0.193332 0.705657 0.203155 -0.165749 2.398164 -1.293595

b 0.167947 0.204545 0.661460 0.555850 -0.522528 0.143530

c 0.496993 0.033673 0.206028 -0.115093 0.024650 0.077726以上这篇用Python实现数据的透视表的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持中文源码网。

亲,试试微信扫码分享本页! *^_^*

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言编程用进退法求搜索区间代码,用c对函数进行优化的问题

//多维无约束优化软件设计#include #include #include double det1e-5; //计算精度double det11e-3; //梯度判断精度double ak3e-3; //搜索步长double dx1e-4; //梯度计算步长/*目标函数(n维)入口参数:x :n维数组,自变量返回值 :函…

python关闭指定浏览器页面_Python自动关闭浏览器关闭网页的方法

在py编辑窗口中输入代码: from selenium.webdriver.chrome.options import Options from selenium import webdriver __browser_url rC:\Users\Administrator\AppData\Roaming\360se6\Application\360se.exe chrome_options Options() chrome_options.binary_loca…

ubuntu 安装kde桌面_在Ubuntu 20.04系统上安装KDE Plasma Desktop的方法

本文介绍在Ubuntu 20.04系统上安装KDE Plasma Desktop的方法。Plasma Desktop是KDE创建的一种流行且功能强大的桌面环境,主要用于Linux系统。KDE Plasma的当前版本是5,它是KDE Plasma 4的后续版本,旨在帮助您以高效的方式完成工作。当Plasma强…

c语言将字母的acsaii,C语言上机实验 答案

《C语言上机实验 答案》由会员分享,可在线阅读,更多相关《C语言上机实验 答案(31页珍藏版)》请在装配图网上搜索。1、实验一 上机操作初步(2学时)一、实验方式:一人一机二、实验目的:1、熟悉VC语言的上机环境及上机操作过程。2、了…

python怎么调用列表_Python中列表的使用

python中的列表与java中的数组非常类似,但使用方法比java中数组简单很多,python中的数据类型不需要显示声明,但在使用时必须赋值,列表元素下标从0开始 初始化列表(初始化一个包含五个元素的列表和一个空列表&#xff0…

videowriter最小的编码格式_cv2.VideoWriter() 指定写入视频帧编码格式

今天用opencv保存的视频文件超级大,被小伙伴们嘲笑,哈哈,原来是视频帧编码格式导致的,这里记录下常用的保存视频编码格式。编码参数:cv2.VideoWriter_fourcc(‘I‘,‘4‘,‘2‘,‘0‘)---未压缩的YUV颜色编码&#xff…

C语言和JAVA可以互相转换吗,求助大神!!!JAVA转换成C语言

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼//此处不要看,c应该内置了这个函数,不需要自定义Array.prototype.remove function(val) {var index this.indexOf(val);if (index > -1) {this.splice(index,1);}};//名称:获取当天上班的人//参数&…

windows消息队列C语言,08年计算机二级C语言辅导:vc操作微软消息队列的方法

定义IMSMQQueuePtr qDest; // Represents Destination QueueIMSMQQueueInfoPtr qInfo; //Represents an open instance of the destination queueIMSMQQueueInfoPtr qRead;IMSMQMessagePtr qMsg; //Represents the message初始化qDest NULL;CoInitialize(NULL);try{qInfo.Crea…

jwt重放攻击_【干货分享】基于JWT的Token认证机制及安全问题

一步一步教你基于JWT的Token认证机制实现,以及如何防范XSS攻击、Replay攻击和中间人攻击。文章目录一、几种常用的认证机制1.1 HTTP Basic AuthHTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth…

jquery find 找到frame select_简述jQuery

jQuery 是一个高效、精简并且功能丰富的 JavaScript 工具库。它提供的 API 易于使用且兼容众多浏览器,这让诸如 HTML 文档遍历和操作、事件处理、动画和 Ajax 操作更加简单。一、获取元素jQuery的核心设计思想就是获取元素,然后对其操作;因此…

求中位数中回文数之和C语言,一些算法题及答案

1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums [2, 7, 11, 1…

自然哲学的数学原理_物理起源点,牛顿《自然哲学的数学原理》

1687年 英国艾萨克牛顿(Sir Isaac Newton,1643—1727),英国物理学家、数学家、天文学家、自然哲学家和炼金术士。1687年他发表《自然哲学的数 学原理》,阐述了万有引力和三大运动定律,奠定了此后三个世纪里力学和天文学的基础&…

如何将另外一个表里的数据与联动_跨境电商(亚马逊)后台财务数据包

亚马逊后台的财务数据包是刚进这个行业的财务人员最希望能了解熟悉的,这块也是相对于国内财务比较有难度的内容,主要难点是亚马逊平台是新的东西,国内财务对规则,费用内容,流程都比较懵,另外就是各项资料都…

java和python混合编程_浅谈C++与Java混合编程

在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多Java学习,请登陆疯狂java官网。现实的情况是,真实的项目中,通常是涉…

无法在源表中获得一组稳定的行_行输出变压器的结构、符号及电路分析

行输出变压器又称逆程变压器、回扫变压器,俗称行输出,它是电视机、显示器中的一个重要变压器。1.行输出变压器结构行输出变压器的全部绕组和高压整流管均密封在其中,底部引出各个绕组的引脚,高压输出采用高压引线直接送至显像管的…

c语言中bluetooth函数,C语言中的低功耗蓝牙-使用Bluez创建GATT服务器

小编典典我得到了运行BlueZ 5.31的示例GATT服务器(截至本文的最新信息):我的环境: 作为来宾OS(版本14.04 32位操作系统)的VagrantVirtual BoxUbuntu Trusty Tahr更新到linux内核3.19已安装的软件包:libglib2.0-dev libdbus-1-devlibudev-dev …

c++ map是有序还是无序的_c++ unorder_map的用法

1、unorder_map与map不同:map的KEY值是有序的,而unorder_map则是无序的;2、unorder_map自定义的KEY值时需要注意思下面两点: KEY为一个类时,需要重载符号; 需要自定义一个HASH类,至于为什么&…

pid调节软件_非常实用的PID算法和PID控制原理

点击箭头处“工业之家”,选择“关注公众号”!PID控制原理和特点工程实际中,应用最为广泛调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器问世至今已有近70年历史,它以其结构简单…

c语言的有趣小程序,一个有趣的小程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼源码:#include #include #include #include #include HINSTANCE g_hInstance 0;LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nSh…

对pca降维后的手写体数字图片数据分类_【AI白身境】深度学习中的数据可视化...

今天是新专栏《AI白身境》的第八篇,所谓白身,就是什么都不会,还没有进入角色。上一节我们已经讲述了如何用爬虫爬取数据,那爬取完数据之后就应该是进行处理了,一个很常用的手段是数据可视化。通过数据可视化&#xff0…