作者 | 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. 一文读懂HarmonyOS服务卡片怎么换肤

    作者:zhenyu,华为软件开发工程师 关注HarmonyOS的小伙伴肯定对服务卡片已经很熟悉了.服务卡片(也简称为"卡片")是FA(FeatureAbility,元服务)的一种界 ...

  2. gin中的重定向

    package main import ( "github.com/gin-gonic/gin" ) func main() { // HTTP重定向很容易,内部.外部重定向均支持 ...

  3. docker四种模式

    1 host模式众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,MountNamespace隔离文件系统,Network Name ...

  4. 利用 Python 进行数据分析(Python 数据分析)· 第 2 版

    译者:SeanCheney 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 机器学习交流群 629470233 ApacheCN 学习资源 Sklearn 与 ...

  5. KMP 入门

    再次学习 \(\rm KMP\) 后不一样的理解. 一些概念 定义字符串 \(S\) 的真 前/后 缀为非自身的 前/后 缀. 定义字符串 \(S\) 的 \(border\) 为 \(S\) 的公共 ...

  6. 入门 - k8s伸缩应用程序 (六)

    目标 使用 kubectl 伸缩应用程序. Scaling(伸缩)应用程序 在之前的文章中,我们创建了一个 Deployment,然后通过 服务 提供访问 Pod 的方式.我们发布的 Deployme ...

  7. vue+element ui中select组件选择失效问题原因与解决方法

    codejing 2020-07-10 09:13:31  652  收藏 分类专栏: Web Vue Element UI 版权 .当表单form赋完值后,如果后续又对form中某一属性值进行操作如 ...

  8. SEL类型

    1.什么是SEL类型 SEL类型代表着方法的签名,在类对象的方法列表中存储着该签名与方法代码的对应关系 每个类的方法列表都存储在类对象中 每个方法都有一个与之对应的SEL类型的对象 根据一个SEL对象 ...

  9. Swift 学习网址精选 By HL

    虽然目前iOS大部分的项目开发语言用的不是Swift,但随着Swift的不断强大,取代Objective-C 指日可待,所以学习Swift是十分必要的.但毕竟是亲儿子,目前只有Foundation被翻 ...

  10. iOS时间处理之时间对比 by Nicky.Tsui

    通过项目需求, 服务器返回了一个 order_canceled_time 订单自动取消时间   如果我要跟当前时间做一个对比,然后生成出一个倒计时的时间  那么首先我们要知道 order_cancel ...