作者 | leo

早于90年代初,数据透视的概念就被提出,主要的应用场景是处理大量数据的交互式汇总查询,它实现了行或列的移动,使得行可以移到列上,列移到行上,从而根据使用者的诉求取对关注的数据子集进行排序,分组,筛选,汇总等等,它以强大而灵活的数据查询方式被广泛推广开来,人们可以自定义计算公式,展开或者折叠需要关注的结果数据集,查看数据摘要信息。

今天我们讨论的是两个均有数据透视功能的工具,也是时下最为常见和流行的数据分析工具:Excel和Python,希望能够通过本文让您加深对数据透视的理解和使用。文中也会在合适的地方讲二者进行对比,希望能对读者有一定启发。

首先我们来介绍下Excel中的数据透视表的使用方法。

01 Excel数据透视简介

数据源的基本要求:

Excel使用的数据源是有一定的格式要求的,并非任何数据都能够直接进行数据透视,这点来说,python对数据的选择则更为灵活。

● 数据源首行需要是标题行

如果没有标题行,则在后面的字段汇总就会产生问题,因此这是首要条件。

● 不能包含空行和空列

因为透视表的数据截取是以空行和空列作为停止的条件的。

● 不能包含空的单元格

数据透视主要是对数值型进行汇总、文本型计数,空的单元格会对汇总结果产生影响。

● 不能包含合并单元格

合并的单元格会导致读取失败。

● 不能包含同类字段

02 数据透视表使用方法

创建数据透视表

下面介绍如何快速建立数据透视表,首先通过ctrl+shift+和ctrl+shift+向左箭头选中数据区域,然后单击菜单栏下的插入-数据透视表,在弹出框中选择透视表的位置是在新的工作表还是现有工作表的某个区域,位置栏旁边的箭头用于设定区域。

新生成的透视表允许我们对不同的字段进行各种数学汇总,只需要将不同的维度字段拖入对应的栏目中即可,比如查看不同月份、季度的销量、销售额情况可以将销售日期字段拖入行中,将销售数量拖入值中,并选择加和汇总。

数据刷新

Excel数据透视表使用的是缓存数据,当数据源有更新时,并不会自动刷新数据,需要手动刷新数据源,根据改动类型分为:数据变动,数据区域变动。

数据变动

指的是在现有的数据区域内,对数据做了改动,需要在透视表上面进行更新。可以通过手动刷新,可以通过点击透视表选项下的刷新按钮自动更新数据。

数据区域变动

指的是有新的数据添加,此时数据区域发生了变化,无法通过手动刷新数据来实现数据的更新。此时,可以通过刷新按钮旁边的【更改数据源】选项,重新选择数据区域来实现。

数据分组

数值和文本分组

如果我们想将不同年龄段的人群进行分组,不同姓氏的人群分组,这时就需要应用到数值和文本分组了。

如下图,属于文本型分组,需要选择需要的字段,连续字段直接圈选,非连续字段可以使用ctrl键。

对于数值型分组,由于数值是有规律的,因此选择创建组之后会自动进行分组。

日期分组

在透视表上面右击日期项,根据需要的时间频度进行选择。

常用的值显示方式

Excel透视表提供值显示方式,可以满足多种不同的数据对比和数据构成计算分析。

下面介绍常用的几种计算方式:

● 总计的百分比

每个数据占所在行列总和的百分比

● 行/列总百分比

每个数据占所在行或列所有项总和的百分比

● 百分比

根据某个字段完成百分比对比计算

● 父行汇总百分比

每个数据项占该列父级项总和的百分比

● 父级汇总百分比

每个数据项占该列和行父级项总和的百分比

● 差异百分比

每个字段与固定被选取字段的差百分比

03 切片的使用

切片器是Excel2010引入的新功能,它提供了更为强大的数据交互能力,比起单纯的数据筛选,使用更加流畅和灵活。

多表联动筛选

使用前提

Excel2013版本以上,使用同一份数据源建立的透视表才能进行多表联动。

使用方法

在透视表选项卡下选择插入切片器,然后选择要呈现的字段,切片器会自动将数据加载到切片窗口。

设置多表联动,右击切片器窗口,选择报表链接,就可以选择切片器关联的透视表了。

2.1 Python数据透视功能简介

Python的数据透视功能主要通过pivot_table()函数实现,接下来主要介绍它的相关使用。

pivot_table()函数参数介绍

在python中,主要通过pandas里面pivot_table()函数来进行数据透视,让我们首先了解下该方法的主要参数功能:

完整的pivot_table()表达式如下

pd.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')

● data

数据源dataframe对象

● index

指定分组的列,相当于行索引

pt = pd.pivot_table(p_data,index=['销售日期'])

● values

需要进行聚合运算的数值字段

pt = pd.pivot_table(p_data,index=['销售日期'],values=['销售数量'])

● aggfunc

指定聚合方法,默认求和,既可以使用字典的形式对不同字段进行不同的运算方法,也可以对同个字段进行不同的运算方法,同时也可以使用自定义函数来作为聚合方法运算。

pt = pd.pivot_table(p_data,index=['销售日期'],values=['销售数量'],aggfunc=[np.mean,len])

● columns

添加列索引,更细化的展示数据的汇总情况

pt = pd.pivot_table(p_data,index=['销售日期'],columns=['产品名称'], values=['销售数量'],aggfunc=[np.mean,len])

● fill_value

用于填充缺失值

pt = pd.pivot_table(p_data,index=['销售日期'],fill_value=0,columns=['产品名称'], values=['销售数量'],aggfunc=[np.mean,len])

通过了解pivot_table()函数的基本参数,可以发现,通过index和columns参数,能够自由的选取不同字段进行Excel当中的行列互换汇总计算,比如百分比的计算,我们可以通过自定义函数,添加到aggfunc参数中,应用到所有相关字段。

高级透视功能

一旦通过上述设置得到透视数据后,就可以使用高级透视功能进行数据过滤。

比如想查看Manger字段是Debra Henley下的所有数据

pt.query('Manager == ["Debra Henley"]')

筛选status(状态)是"pending"和"won"的数据信息

pt.query('Status == ["pending","won"]')

通过以上展示,可以发现Excel在处理数据透视方便具有更好的交互性和数据呈现能力,缺点是数据的汇总相对比较固定,不具备更多的灵活度,因此对于数据分析并不复杂的应用场景,选择Excel比较合适。

而Python在处理数据透视方面,计算能力和字段的灵活组合方面远远胜于Excel,因此如果需要复杂的数据透视功能,可以通过python来实现。

此外,python相较于Excel透视更为强大的一点是python的时间处理功能,也就是时间序列的处理,对于金融从业者来说,python的时间序列处理能够更为精细化的展示数据透视结果,限于篇幅不做进一步展开。

数据透视:Excel数据透视和Python数据透视的更多相关文章

  1. Sqlserver到处数据到Excel

    转:http://www.cnblogs.com/litianfei/archive/2007/08/10/850823.html ) drop procedure [dbo].[p_exporttb ...

  2. Excel应用程序如何创建数据透视表

    原文作者:andreww 原文链接: http://blogs.msdn.com/andreww/archive/2008/07/25/creating-a-pivottable-programmat ...

  3. 个人永久性免费-Excel催化剂功能第100波-透视多行数据为多列数据结构

    在数据处理过程中,大量的非预期格式结构需要作转换,有大家熟知的多维转一维(准确来说应该是交叉表结构的数据转二维表标准数据表结构),也同样有一些需要透视操作的数据源,此篇同样提供更便捷的方法实现此类数据 ...

  4. 利用python将mysql中的数据导入excel

    Python对Excel的读写主要有xlrd.xlwt.xlutils.openpyxl.xlsxwriter几种. 如下分别利用xlwt和openpyxl将mysql数据库中查询的数据保存到exce ...

  5. python 导出数据到excel 中,一个好用的导出数据到excel模块,XlsxWriter

    最近公司有项目需要导出数据到excel,首先想到了,tablib,xlwt,xlrd,xlwings,win32com[还可以操作word],openpyxl,等模块但是 实际操作中tablib 写入 ...

  6. 【Excle数据透视表】如何显示/隐藏数据透视表字段列表

    在创建完毕的数据透视表中,若单击数据透视表中任意单元格,即可显示数据透视表字段列表窗格,用户就可以通过弹出的窗格进行字段调整 两种情况需要隐藏数据数据透视表窗格 ①数据透视表已经完成 ②失误关闭窗格 ...

  7. Python:将爬取的网页数据写入Excel文件中

    Python:将爬取的网页数据写入Excel文件中 通过网络爬虫爬取信息后,我们一般是将内容存入txt文件或者数据库中,也可以写入Excel文件中,这里介绍关于使用Excel文件保存爬取到的网页数据的 ...

  8. python 连接数据库,查询结果写入数据到excel

    使用Python链接数据库查询数据,并将查询结果写入到Excel中,实现方法上主要有两步,第一,查数据,第二,写Excel. 一.导入需要的包 import time import xlwt from ...

  9. python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...

随机推荐

  1. 【Java常用类】Instant:瞬时

    Instant:瞬时 时间线上的一个瞬时点. 这可能被用来记录应用程序中的事件时间戳,该类型是面向机器的. now():获取本初子午线对应的标准时间 Instant instant = Instant ...

  2. 【Java】方法

    文章目录 何谓方法 方法的定义 方法调用 方法重载 命令行传参 可变参数 递归 何谓方法 System.out.println(),是什么 Java方法是语句的集合,它们在一起执行一个功能 方法是解决 ...

  3. Docker 安装与常用命令

    目录 Docker 安装 1)安装 2)启动 3)镜像加速器 Docker 常用命令 1)Docker 进程相关命令 2)Docker 镜像相关命令 docker search:查找镜像仓库中的镜像 ...

  4. unity3d inputfield标签控制台打印object

    inputfield标签控制台打印object 这说明没有字符串给入 这是因为 inputfield下的text不能人为写入值,只能在game界面输入. 所以这个标签里的text做个默认值不好搞.

  5. golang反射reflect机制用法

    package main import ( "fmt" "reflect" ) type User struct { Id int Name string Ag ...

  6. 集合框架-工具类-JDK5.0特性-ForEach循环

    1 package cn.itcast.p4.news.demo; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 impo ...

  7. 带你十天轻松搞定 Go 微服务系列(七)

    序言 我们通过一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下: 环境搭建 服务拆分 用户服务 产品服务 订单服务 支付服务 RPC 服务 Auth 验证( ...

  8. C++ STL 容器概述

    在STL编程中,容器是经常用到的一种数据结构,在C++标准库中,容器分为: 序列式容器 关联式容器 二者本质区别在于,序列式容器是通过元素在容器中的位置进行顺序存储和元素访问.关联容器则是通过键[ke ...

  9. 使用 Frp 和 Docker 通过远程桌面和 SSH 来远程控制 Windows(反向代理)

    最新博客文章链接 大体思路 使用 Docker 容器,在云服务器上部署 Frps 容器来中转流量,在被控制的 Windows 上部署 Frpc 容器来暴露内网的服务,在主控制端的 Windows 上直 ...

  10. select 级联选择

    转载请注明来源:https://www.cnblogs.com/hookjc/ <script   language="javascript">   <!--   ...