前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据分析必备技能:数据透视表使用教程

数据分析必备技能:数据透视表使用教程

作者头像
张俊红
发布于 2021-01-18 03:03:48
发布于 2021-01-18 03:03:48
4.9K10
代码可运行
举报
文章被收录于专栏:张俊红张俊红
运行总次数:0
代码可运行

处理数量较大的数据时,一般分为数据获取、数据筛选,以及结果展示几个步骤。在 Excel 中,我们可以利用数据透视表(Pivot Table)方便快捷的实现这些工作。

本文首先手把手的教你如何在 Excel 中手动构建一个基本的数据透视表,最后用 VBA 展示如何自动化这一过程。

注:

  • 本文基于 Excel 2016 for Mac 完成,个别界面和 Windows 版略有差异
  • 如果要完成 VBA 的部分,Excel for Mac 需要升级到 15.38 版本以上
  • Excel 2007 及之后的顶部 Ribbon 菜单,文中简称为 Ribbon
  • 开启“开发工具”菜单的方法也请自行了解

1

源数据

Excel 提供了丰富的数据来源,我们可以从 HTML、文本、数据库等处获取数据。

这个步骤本文不展开讨论,以下是我们作为分析来源的工作表数据:

2

创建数据透视表

  • 此处将工作表重命名为sheet1
  • 首先确保表格第一行是表头
  • 点击表中任意位置
  • 选中 Ribbon 中的“插入”
  • 点击第一个图标“数据透视表”,出现“创建数据透视表”对话框

注意观察对话框中的各种选项,这里我们都采用默认值

点击“确定”后,一个空的数据透视表出现在了新工作表中:

3

数据透视表中的字段

  • “数据透视表生成器”菜单中,选择“球队、平、进球、失球、积分、更新日期”几个字段
  • 将“平”拖放至“行”列表中的“球队”上方;表示在“平局”的维度上,嵌套(nesting)的归纳了“球队”的维度
  • “更新日期”拖放至“筛选器”列表中;表示可以根据更新日期来筛选显示表格数据
  • 分别对当前“值”列表中的几个字段,点击其右侧的i图标
  • 因为本例中无需计算其默认的“求和”,故将这几个字段的“汇总方式”都改为“平均值”
  • 暂时关闭“数据透视表生成器”
  • 该窗口随后可以用“字段列表”按钮重新打开

此时一个基本的数据透视表已经成型

4

增加自定义字段

有时基本的字段并不能满足分析的需要,此时就可以在数据透视表中插入基于公式计算的自定义字段。

下面用不同的方法加入两个自定义字段:

1.简单运算的公式

首先简单计算一下各队的场均进球数:

  • 点击数据透视表中的任意位置,以激活“数据透视表分析” Ribbon 标签
  • 点击“字段、项目和集”按钮,在弹出的下拉菜单中选择“计算字段”
  • “插入计算字段”对话框会出现
  • 在“名称”中填入“场均进球”
  • “字段”列表中分别双击“进球”和“场次”
  • 以上两个字段会出现在“公式”框中,在它们中间键入表示除法的斜杠/
  • 也就是说,此时“公式”部分为 =进球/场次
  • 点击“确定”关闭对话框,数据透视表中出现了新的“求和/场均进球”字段
  • 按照之前的方法,将字段的汇总方式改为“平均值”,确定关闭对话框

2.调用 Excel 公式

再简单的评估一下球队的防守质量,这里我们假设以如下 Excel 公式判断:

= IF(净胜球>=0,2,1)

防守还不错的取 2,不佳的则标记为 1。

  • 按照刚才的方法新建一个计算字段
  • 将上述公式填入“公式”
  • 将字段的汇总方式改为“计数” -- 虽然在此处并无太多实际意义

5

利用切片器过滤数据

除了可以在“数据透视表生成器”中指定若干个“过滤器”,切片器(Slicers)也可以用来过滤数据,使分析工作更清晰化

切片器的创建非常简单:

  • 在 Ribbon 中点击“插入切片器”按钮
  • 字段列表中选择“胜”、“负”
  • 两个切片器就出现在了界面中
  • 点击切片器中的项目就可以筛选
  • 结合 ctrl 键可以多选

6

成果

至此,我们得到了一个基于源数据的、可以自由组合统计维度、可以用多种方式筛选展示数据透视表

可以在 Ribbon 的“设计”菜单中选择预设的样式等,本文不展开论述。

以上就是创建数据透视表的基本过程。

7

自动化创建

基本的数据透视表的创建和调整并不复杂,但如果有很多类似的重复性工作的话,使用一些简单的 VBA自动化这一过程,将极大提升工作的效率。

本例中使用 VBA 脚本完成与上述例子一样的任务,对于 VBA 语言仅做简单注释,想更多了解可以自行查阅官方的文档等

1.一键生成

此处我们放置一个按钮源数据所在的数据表,用于每次点击自动生成一个数据透视表。

  • 在 Ribbon 的“开发工具”中点击按钮
  • 在界面任意位置框选一个按钮的尺寸
  • 释放鼠标后弹出“指定宏”对话框
  • 此处我们将“宏名称”框填入 ThisWorkbook.onCreatePovit
  • “宏的位置”选择“此工作簿”
  • 点击"编辑"后关闭对话框
  • 将按钮名称改为“一键生成透视表”

2.脚本编写

  • 点击 Ribbon 中“开发工具”下面第一个按钮“Visual Basic”
  • 在出现的“Visual Basic”编辑器中,选择左侧的“ThisWorkbook”类目
  • 在右侧编辑区贴入下面的代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Sub onCreatePovit()
    Application.DisplayAlerts = False

    ' 声明变量
    Dim sheet1 As Worksheet
    Dim pvtTable As PivotTable
    Dim pvtField As PivotField
    Dim pvtSlicerCaches As SlicerCaches
    Dim pvtSlicers As slicers
    Dim pvtSlicer As Slicer

    ' 删除可能已存在的透视表
    Dim existFlag As Boolean
    Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.Name = "pivot1" Then existFlag = True: Exit For
    Next
    If existFlag = True Then
        Sheets("pivot1").Select
        ActiveWindow.SelectedSheets.Delete
    End If

    ' 初始化
    Set sheet1 = ActiveWorkbook.Sheets("sheet1")
    Set pvtSlicerCaches = ActiveWorkbook.SlicerCaches

    ' 指定数据源
    sheet1.Select
    Range("A1").Select

    ' 创建透视表
    Set pvtTable = sheet1.PivotTableWizard
    ActiveSheet.Name = "pivot1"
    
    ' 指定行和列
    pvtTable.AddFields _
        RowFields:=Array("平", "球队"), _
        ColumnFields:="Data"

    ' 指定数据字段
    Set pvtField = pvtTable.PivotFields("失球")
    pvtField.Orientation = xlDataField
    pvtField.Function = xlAverage
    pvtField.Name = "平均值/失球"
    Set pvtField = pvtTable.PivotFields("进球")
    pvtField.Orientation = xlDataField
    pvtField.Function = xlAverage
    pvtField.Name = "平均值/进球"
    Set pvtField = pvtTable.PivotFields("积分")
    pvtField.Orientation = xlDataField
    pvtField.Function = xlAverage
    pvtField.Name = "平均值/积分"

    ' 指定计算字段
    pvtTable.CalculatedFields.Add Name:="场均进球", Formula:="=进球/场次"
    Set pvtField = pvtTable.PivotFields("场均进球")
    pvtField.Orientation = xlDataField
    pvtField.Function = xlAverage
    pvtField.Name = "平均值/场均进球"
    pvtTable.CalculatedFields.Add Name:="防守质量", Formula:="= IF(净胜球>=0,2,1)"
    Set pvtField = pvtTable.PivotFields("防守质量")
    pvtField.Orientation = xlDataField
    pvtField.Function = xlCount
    pvtField.Name = "计数/防守质量"

    ' 指定切片器
    Set pvtSlicers = pvtSlicerCaches.Add(pvtTable, "胜", "胜_" & ActiveSheet.Name).slicers
    Set pvtSlicer = pvtSlicers.Add(ActiveSheet, , , , 300, 400)
    Set pvtSlicers = pvtSlicerCaches.Add(pvtTable, "负", "负_" & ActiveSheet.Name).slicers
    Set pvtSlicer = pvtSlicers.Add(ActiveSheet, , , , 350, 450)
        
    ' 指定过滤器
    Set pvtField = pvtTable.PivotFields("更新日期")
    pvtField.Orientation = xlPageField

    Application.DisplayAlerts = True
End Sub

3.运行程序

回到界面中,每次点击按钮就会在新工作表中生成结构和之前例子一致的数据透视表

8

总结

  • 本文简单的展示了在 Excel 中创建透视表的过程,以及其筛选、展示数据的方式
  • 通过 VBA 可以完成和手动创建一样甚至更多的功能,并大大提高工作效率
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 俊红的数据分析之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
本文作者与下述网址作者 是同一个人吗? https://blog.csdn.net/qq_38534107/article/details/90373999
本文作者与下述网址作者 是同一个人吗? https://blog.csdn.net/qq_38534107/article/details/90373999
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
机器学习实战第1天:鸢尾花分类任务
鸢尾花分类任务是一个经典的机器学习问题,通常用于演示和测试分类算法的性能。该任务的目标是根据鸢尾花的特征将其分为三个不同的品种,即山鸢尾(Setosa)、变色鸢尾(Versicolor)和维吉尼亚鸢尾(Virginica)。这个任务是一个多类别分类问题,其中每个样本都属于三个可能的类别之一。
Nowl
2024/01/18
1.7K0
机器学习实战第1天:鸢尾花分类任务
机器学习之鸢尾花-数据预处理
再次开启机器学习之路,这次选择鸢尾花案例,这个案例数据挺好玩的,可以验证无监督学习和有监督学习,有监督学习可以采用各种分类算法、决策树算法,无监督学习可以采用各种聚类,并基于目标结果进行验证准确性。
python与大数据分析
2022/03/11
1.2K0
机器学习之鸢尾花-数据预处理
seaborn常用的10种数据分析图表
seaborn内置了十几个示例数据集,通过load_dataset函数可以调用。
派大星的数据屋
2022/04/03
6870
seaborn常用的10种数据分析图表
【数据分析可视化】seaborn介绍
存在意义 是matplotlib的扩展封装 简单使用 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline /Users/bennyrhys/opt/anaconda3/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed,
瑞新
2020/07/07
5540
【数据分析可视化】seaborn介绍
鸢尾花(Iris)数据集入门
鸢尾花(Iris)数据集是机器学习领域中最经典的数据集之一。它由三种不同品种的鸢尾花的测量数据组成:山鸢尾(setosa)、变色鸢尾(versicolor)和维吉尼亚鸢尾(virginica)。 在这篇文章中,我们将使用Markdown代码格式详细介绍鸢尾花数据集的基本信息以及如何加载和探索这个数据集。
大盘鸡拌面
2023/10/20
2.8K0
我用Python的Seaborn库,绘制了15个超好看图表!
Seaborn是一个基于Python语言的数据可视化库,它能够创建高度吸引人的可视化图表。
小F
2023/08/21
9440
我用Python的Seaborn库,绘制了15个超好看图表!
实验一:鸢尾花数据集分类「建议收藏」
利用机器学习算法构建模型,根据鸢尾花的花萼和花瓣大小,区分鸢尾花的品种。实现一个基础的三分类问题。
全栈程序员站长
2022/08/02
7.8K0
实验一:鸢尾花数据集分类「建议收藏」
python机器学习实现鸢尾花的分类
鸢尾花(学名:Iris tectorum Maxim)属百合目、鸢尾科,可供观赏,花香气淡雅,可以调制香水,其根状茎可作中药,全年可采,具有消炎作用。
用户6719124
2019/11/17
6.3K0
seaborn可视化入门
【小提琴图】其实是【箱线图】与【核密度图】的结合,【箱线图】展示了分位数的位置,【小提琴图】则展示了任意位置的密度,通过【小提琴图】可以知道哪些位置的密度较高。 小提琴图的内部是箱线图(有的图中位数会用白点表示,但归根结底都是箱线图的变化);外部包裹的就是核密度图,某区域图形面积越大,某个值附近分布的概率越大。 通过箱线图,可以查看有关数据的基本分布信息,例如中位数,平均值,四分位数,以及最大值和最小值,但不会显示数据在整个范围内的分布。如果数据的分布有多个峰值(也就是数据分布极其不均匀),那么箱线图就无法展现这一信息,这时候小提琴图的优势就展现出来了!
用户2225445
2022/11/12
9790
seaborn可视化入门
​数据科学中 17 种相似性和相异性度量(上)
本文解释了计算距离的各种方法,并展示了它们在我们日常生活中的实例。限于篇幅,便于阅读,将本文分为上下两篇,希望对你有所帮助。
数据STUDIO
2022/02/18
3.7K0
​数据科学中 17 种相似性和相异性度量(上)
Python自动化办公-玩转图表
提起图表,你一定会想到 Excel 和 PPT 中的条形图、饼状图、柱状图,除此之外,还有很多其他种类的图表,比如折线图、热力图等等。但是,不管你通过哪一种图表,它们都是为了让你能够更直观、更简洁地表达自己的想法,也能让我们更好地从一堆杂乱无章的数字中找出规律。
somenzz
2021/08/19
1K0
基于鸢尾花数据集的逻辑回归分类实践
Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:
小小程序员
2023/12/25
5480
基于鸢尾花数据集的逻辑回归分类实践
【机器学习基础】(三):理解逻辑回归及二分类、多分类代码实践
我们把连续的预测值进行人工定义,边界的一边定义为1,另一边定义为0。这样我们就把回归问题转换成了分类问题。
黄博的机器学习圈子
2021/02/08
4.4K0
KNN算法应用
Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。
foochane
2019/05/23
7400
KNN算法应用
用Python演绎5种常见可视化视图
如果你想要用Python进行数据分析,就需要在项目初期开始进行探索性的数据分析,这样方便你对数据有一定的了解。其中最直观的就是采用数据可视化技术,这样,数据不仅一目了然,而且更容易被解读。同样在数据分析得到结果之后,我们还需要用到可视化技术,把最终的结果呈现出来。
朱小五
2020/05/06
2K0
决策树DTC数据分析及鸢尾数据集分析
豌豆贴心提醒,本文阅读时间7分钟 今天主要讲述的内容是关于决策树的知识,主要包括以下内容: 1.分类及决策树算法介绍 2.鸢尾花卉数据集介绍 3.决策树实现鸢尾数据集分析 希望这篇文章对你有所帮助,尤其是刚刚接触数据挖掘以及大数据的同学,同时准备尝试以案例为主的方式进行讲解。如果文章中存在不足或错误的地方,还请海涵~ 一. 分类及决策树介绍 1.分类 分类其实是从特定的数据中挖掘模式,作出判断的过程。比如Gmail邮箱里有垃圾邮件分类器,一开始的时候可能什么都不过滤,在日常使用过程中,我人工对于每一封
小小科
2018/05/02
1.8K0
决策树DTC数据分析及鸢尾数据集分析
机器学习之鸢尾花-逻辑回归
逻辑回归模型是一种广泛使用的统计模型,在其基本形式中,使用逻辑函数来模拟二进制 因变量; 存在更复杂的扩展。在回归分析中,逻辑回归是估计逻辑模型的参数; 它是二项式回归的一种形式。在数学上,二元逻辑模型具有一个具有两个可能值的因变量,例如通过/失败,赢/输,活/死或健康/生病; 这些由指示符变量表示,其中两个值标记为“0”和“1”。在逻辑模型中,对数比值(在对数的的可能性),用于标记为“1”的值是一个线性组合的一个或多个自变量(“预测”);自变量可以是二进制变量(两个类,由指示符变量编码)或连续变量(任何实际值)
python与大数据分析
2022/03/11
1.2K0
机器学习之鸢尾花-逻辑回归
Python数据可视化-seaborn Iris鸢尾花数据
首先介绍一下Iris鸢尾花数据集,内容摘自百度百科:Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。“Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类”。
拓端
2020/07/28
2.1K0
Python数据可视化-seaborn  Iris鸢尾花数据
数据科学 IPython 笔记本 8.17 使用 Seaborn 的可视化
Matplotlib 据证明是一种非常有用和流行的可视化工具,但即使狂热的用户也会承认它经常会有很多不足之处。有几个对 Matplotlib 的有效的抱怨常常出现:
ApacheCN_飞龙
2022/05/07
1.4K0
数据科学 IPython 笔记本 8.17 使用 Seaborn 的可视化
基于 Python 的数据可视化
来源:bea_tree 英文:kaggle 链接:blog.csdn.net/bea_tree/article/details/50757338 原文采用了kaggle上iris花的数据,数据来源从上面的网址上找噢 如果没有seaborn库 安装方法如下 http://www.ithao123.cn/content-10393533.html 正式开始了~~~ # 首先载入pandas import pandas as pd # 我们将载入seaborn,但是因为载入时会有警告出现,因此先载入w
小莹莹
2018/04/23
1.4K0
基于 Python 的数据可视化
相关推荐
机器学习实战第1天:鸢尾花分类任务
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验