Pivot allows you to transform or reshape data.
Pivot 可以帮助我们改变数据的格式, 下面两个例子可以作为参考:

下面来看下具体实现, 首先引入一个 csv 文件(已上传)

df = pd.read_csv('/Users/rachel/Sites/pandas/py/pandas/10_pivot/weather.csv')

输出:

格式转换, 设置 'date' 为索引列, 也就让'date' 做每一行的输出依据, 然后设置'city' 为每一列输出的依据:

df.pivot(index='date', columns='city')

还可以给出第三个参数, 指定输出的内容:

df.pivot(index='date', columns='city', values='humidity')

下面来看下 pivot table:
pivot table is used to summarize and aggregate data inside dataframe.
pivot table 可以用来很好地总结整合数据. 下面通过一个例子来看一下:

df = pd.read_csv('/Users/rachel/Sites/pandas/py/pandas/10_pivot/weather2.csv')

输出:

从这个输出可以看出目前的数据结构很乱, 这时, 我们就可以用 pivot table 来做整合:

df.pivot_table(index='city', columns='date')


从结果可以看出, 这样整合之后, 取的是每天每个城市每个事件的平均值.
对于 pivot_table() 函数, 我们还可以通过第三个参数 'aggfun' 来做很多的变化, 下面分别来看下:

取和:

df.pivot_table(index='city', columns='date', aggfunc='sum')

取数据的条数:

df.pivot_table(index='city', columns='date', aggfunc='count')

求差异:

df.pivot_table(index='city', columns='date', aggfunc='diff')

求平均值, 其实如果不加这个参数, 默认也是求平均值:

df.pivot_table(index='city', columns='date', aggfunc='mean')

横向纵向分别求和的平均值:

df.pivot_table(index='city', columns='date', margins=True)

以上, 大家可以实际运行一下, 看看输出的结果.

下面介绍最后一个点, 对数据进行分组整理:
首先, 还是先引入一个文件做例子:

df = pd.read_csv('/Users/rachel/Sites/pandas/py/pandas/10_pivot/weather3.csv')

输出:

然后, 我们想实现的是把数据按照月份分组:

df.pivot_table(index=pd.Grouper(freq='M', key='date'), columns='city')

但是按照上面的代码运行, 会报错, 提示 'date' 列不是时间格式, 所以需要先把'date' 列的格式改成时间:

df['date'] = pd.to_datetime(df['date'])

最后输出结果:

以上就是关于 pivot 的常用方法, enjoy~~~

Pandas 基础(10) - 用 Pivot table 做格式转换的更多相关文章

  1. Pandas 基础(11) - 用 melt 做格式转换

    melt 也可以用来做数据格式转换, 请看下图, 我们可以用 melt 把左表转成右表的格式: 首先引入文件(已上传): df = pd.read_csv('/Users/rachel/Sites/p ...

  2. [php基础]Mysql日期函数:日期时间格式转换函数详解

    在PHP网站开发中,Mysql数据库设计中日期时间字段必不可少,由于Mysql日期函数输出的日期格式与PHP日期函数之间的日期格式兼容性不够,这就需要根据网站实际情况使用Mysql或PHP日期转换函数 ...

  3. Open xml 操作Excel 透视表(Pivot table)-- 实现Excel多语言报表

    我的一个ERP项目中,客户希望使用Excel Pivot table 做分析报表. ERP 从数据库中读出数据,导出到Excel中的数据源表(统一命名为Data),刷新Pivot table! 客户还 ...

  4. 史林枫:C#.NET利用ffmpeg操作视频实战(格式转换,加水印 一步到位)

    ffmpeg.exe是大名鼎鼎的视频处理软件,以命令行参数形式运行.网上也有很多关于ffmpeg的资料介绍.但是在用C#做实际开发时,却遇到了几个问题及注意事项,比如如何无损处理视频?如何在转换格式的 ...

  5. C# ffmpeg 视频处理格式转换和添加水印

    通过C#调用ffmpeg 将flv格式转换为mp4格式,并添加水印 C#调用ffmpeg的方法封装如下: /// <summary>/// 视频处理器ffmpeg.exe的位置/// &l ...

  6. pandas 学习 —— pivot table

    0. DataFrame 的 index.columns.values >> df = pd.DataFrame(np.arange(6).reshape(3, 2), index=['o ...

  7. 2018.03.29 python-pandas 数据透视pivot table / 交叉表crosstab

    #透视表 pivot table #pd.pivot_table(data,values=None,index=None,columns=None, import numpy as np import ...

  8. Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识

    第1节 pandas 回顾 第2节 读写文本格式的数据 第3节 使用 HTML 和 Web API 第4节 使用数据库 第5节 合并数据集 第6节 重塑和轴向旋转 第7节 数据转换 第8节 字符串操作 ...

  9. Pandas基础使用

    Pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的. 1.导入pandas import pandas as pd 2.pandas数据类型: 1)Series:一维数据类型 ...

随机推荐

  1. Spring-Boot之Redis基础

    Spring-Boot之Redis基础 准备 Redis下载地址:github.com/MSOpenTech/redis/releases Redis数据库的默认端口号是 6379 开启Redis服务 ...

  2. java Api 读取HDFS文件内容

    package dao; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import java ...

  3. TCP/IP的分层管理

    网络基础TCP/IP 我们通常所使用的网络(包括互联网)均是在TCP/IP协议族的基础上运作的.HTTP属于它内部的一个子集 TCP/IP协议族按层次分为:应用层,传输层,网络层和数据链路层(更好的划 ...

  4. 对stm32寄存器的理解(个人理解,大神轻喷)

    学习了stm32有一年了,今天想来写写自己对寄存器的理解,帮助那些有志学习stm32的朋友们少走一些弯路. ---------------------------------------------- ...

  5. go语言的安装与开发环境

    安装golang编译器: https://studygolang.com/dl 之后设置环境变量GOPATH(项目目录)  GOROOT(默认已经设置好) 安装编辑器:IDEA安装和破解 https: ...

  6. js 判断浏览器型号

    <html><head> <meta http-equiv="Content-Type" content="text/html;charse ...

  7. C#设计模式(12)——享元模式(Flyweight Pattern)(转)

    一.引言 在软件开发过程,如果我们需要重复使用某个对象的时候,如果我们重复地使用new创建这个对象的话,这样我们在内存就需要多次地去申请内存空间了,这样可能会出现内存使用越来越多的情况,这样的问题是非 ...

  8. Android -- 带你从源码角度领悟Dagger2入门到放弃(一)

    1,以前的博客也写了两篇关于Dagger2,但是感觉自己使用的时候还是云里雾里的,更不谈各位来看博客的同学了,所以今天打算和大家再一次的入坑试试,最后一次了,保证最后一次了. 2,接入项目 在项目的G ...

  9. java socket编程实例代码

    1.所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 两性话题 两性 ...

  10. 网络请求(I)

    NSURLSession 代理方法 有的时候,我们可能需要监听网络请求的过程(如下载文件需监听文件下载进度),那么就需要用到代理方法. #import "ViewController.h&q ...