大数据可视化案例分析_Tableau数据可视化分析案例

0x00 Tableau简介

Tableau是一款定位于数据可视化敏捷开发和实现的商务智能展现工具,可用来实现交互的、可视化的分析和仪表盘应用。

Tableau提供了体验感良好且易用的使用界面,在处理大规模、多维数据时,可以即时从不同角度看到数据呈现的规律。操作简单,大大降低了技术门槛,但其呈现出来的效果却十分优秀。

本文围绕一个使用Tableau进行可视化的实例,介绍了Tableau中一些基础概念和绘图的简单操作,下面一起开始可视化之旅吧~

0x01 奥运会数据集可视化

数据来源:Kaggle"120 years of Olympic history: athletes and results"数据集。

包括athlete_events.csv和noc_regions.csv两个文件,有从1896年雅典奥运会到2016年里约奥运会的每一届奥运会的数据。

athlete_events.csv文件包含15个字段、271116条记录。每一条记录对应一位在一项奥运会项目中参赛的运动员。具体字段及对应含义如下:

  • ID - 运动员ID编号
  • Name - 运动员姓名
  • Sex - 性别
  • Age - 年龄
  • Height - 身高(cm)
  • Weight - 体重(kg)
  • Team - 队伍名称
  • NOC - 国家奥委会编码
  • Games - 奥运会年份和季节
  • Year - 年份
  • Season - 季节
  • City - 主办城市
  • Sport - 体育运动
  • Event - 比赛项目
  • Medal - 获奖情况(金、银、铜、未获奖)

noc_regions.csv描述的是国家奥委会编码与具体的国家(/地区)名称的对应关系。包含3个字段,分别是NOC国家奥委会编码、regions国家(/地区)具体名称及notes备注。

1 数据连接与管理

打开Tableau,会进入到数据源界面,可进行如下几个操作:

数据连接

Tableau可连接Excel、文本文件、JSON文件、空间文件(Shapefile、GeoJSON文件等)、统计文件等多种本地数据源。在连接数据源时,如果仅需要使用部分数据,也可对数据进行筛选。

数据整合

Tableau可对来自不同数据表的数据实现多表合并(行)、多表联接(列)及多个数据源的融合。

行合并通过【新建并集】实现,使用并集合并的表需要有相同的结构,即相同字段数,且相关字段名称和数据类型匹配。

列合并通过【联接】实现,需要选择同名字段作为关联字段,有四种联接类型,即内部、左侧、右侧、完全外部联接,默认是内部联接。

注:在2020.2之后的版本中,数据源使用的数据模型具有两个层:一个逻辑层(在其中关联表),一个物理层(在其中联接或合并表)。更推荐使用【关系】来连接数据,关系是一种更灵活、动态的方式,根据关联字段确定联接可能性,而不创建新的固定表。

数据加载

Tableau有两种加载数据的方式,一是实时连接,从数据源获得查询结果;另一种是数据提取,将数据提取到Tableau数据引擎中进行管理。

350d11454888af0f999c76dd7cf3e30c.png

将两张表的数据加载至Tableau,会基于NOC字段自动进行连接。在数据源界面可查看前1000行数据,并进行一些重命名、排序等基本操作。数据预处理导入完毕,下面就可以大展身手,正式开始可视化啦!

2 图表绘制

1) 折线图

基于运动员的ID和年份字段,来绘制一个各届参赛运动员数变化的折线图。

新建一个工作表。可以看到如下几个功能区。

495eb8aaad6bada182d4cdc339b06460.png

数据窗口

导入Tableau的数据会被自动划分为【维度】和【度量】。在连接数据时Tableau会对各个字段评估划分,如果分配与实际情况不符,例如运动员ID被认为是度量,可右键进行转换。

维度通常是分类、时间等定性的离散数据,将其拖放至功能区不会被计算,而会对视图进行分区。度量通常是数值数据,拖放至功能区会默认进行聚合计算(总和、平均值、计数等)。

Tableau支持多种字段类型,维度中包括文本、日期、日期和时间、地理值、布尔值;度量中包括数字、经纬度(当数据包含地理类型名称会自动生成)。

行列功能区

对应X、Y轴数据。

将Year拖至列,运动员ID拖至行,ID被默认为离散类型,生成的图表如下:

c25f7ca0cbba1ed8ced8e04763ac9a81.png

下面将ID的类型改为度量→计数(不同),Y轴即为每届奥运会运动员的总人数。但由于原文件夏季奥运会和冬季奥运会数据是混合的,故折线图形状明显异常。

43b8d60835882bb8236ba639f886eca3.png

标记卡

Tableau中,定义图表中的形状、颜色、大小、标签等属性,通过标记卡完成。

【颜色】和【大小】会根据放入字段数值相应改变。颜色和大小只能放入一个字段,但是【标签】可放入多个。

【详细信息】会根据拖放的字段对视图细化。

【工具提示】即可“对当光标移到视图某个标记显示的标记信息”的内容进行编辑。

将Season拖至标记卡中的【颜色】,就能看到夏季和冬季的数据分成了两条折线,每个类型对应一种颜色,并自动生成图例,完成了一幅基本的折线图。

f1c7b62c3fdda08e7cdc0857081d0b09.png

对图表标题、颜色、坐标轴标签、坐标轴范围等进行设置,只需点选预览即可。最终效果如下:

d973af4abc548eb66fe642a20a030c42.png

同理绘制各届赛事项目数、各界参与国家数折线图。

13da8700a5866453b8a73bffa1418132.png

df107f6cf0f8e3f5a1fb672a60d380a2.png

2) 堆叠面积图

生成过程与折线图基本相同,只需修改图表类型。在Tableau界面右端有一个【智能推荐】按钮,可快速创建基本图形,光标移动到图形上就会显示字段要求。

效果如下:

590c568121a8506c0497e60828e3d08d.png

3) 柱状图/条形图

以绘制奖牌数排名前15国家的得奖情况的柱状图为例。

首先将Medal和Region分别拖入行列功能区,Medal类型改为度量→计数。因为国家数太多,生成的柱状图太长,图表不便于查看,下面基于新建计算字段对显示的国家进行筛选。

dd783a0db8336b342bfb87541aafb04a.png

计算字段

计算字段是根据数据源字段使用运算符和函数构造公式来定义字段。

运算符支持加减乘除等所有运算符。函数包括数字、字符串、日期、类型转换等各类Tableau自带计算函数。

因为预处理对Medal的空缺值进行了填充,若直接对其进行计数,实际上结果等于“各国参与运动员数”,与期待的“各国奖牌数”不符。故先基于Medal新建一个计算字段Medal_Num。在数据区域Medal上右击创建→计算字段,输入表达式如下,然后对Medal计数即可。

b974c933d01eacade18d536b9b98d081.png

7ea490966bc3367d79e8a76a02316620.png

筛选器

筛选器可对全量数据进行筛选,有常规、通配符、条件、顶部四种,可根据各种需要对数据进行筛选。

这里只筛选显示奖牌数前15的国家。将Region拖入筛选器,自动弹出筛选器对话框,选择顶部。按Medal_Num字段,计数,筛选出前15个国家。然后再将国家基于Medal_Num字段降序排序。

311bb3497441616e6c03736cfefa521f.png

将Medal拖入标记卡中的颜色,即可生成堆叠柱状图,其中金银铜及未获奖按不同颜色显示。再将Medal拖入筛选器,选择不显示"No Medal";在筛选器上右键,选择显示筛选器,筛选器就在视图左侧显示。堆叠柱状图效果如下:

cd7cc7095e613502471db07772721b94.png

各届男女运动员人数柱状图、奥运会奖牌数条形图绘制类似。由于时间跨度长,可添加一个基于Year的筛选器,只展示特定时间区间的数据。

4) 箱线图

箱线图可以反映数据的基本统计特征,包括最大最小、上下四分位数、中位数等。以绘制各届奥运会运动员身高分布的箱线图为例。

将Year和Height分布拖入行列功能区,在视图右侧智能推荐选择箱线图,会得到一些离散分布的线。

81ad355bd0eef9f02e4b7cec41473bfc.png

需要在菜单分析栏,取消聚合度量,即可生成一幅箱线图。观察到数据集中于图表上部,对纵轴的坐标范围进行设置,还可添加基于性别的筛选器,最终效果如下:

0ed9a42e8599d956b7377b28da9f0e00.png

5) 饼图

以男女运动员比例饼图为例。

在标记卡中选择饼图,将字段ID拖入角度,数据类型改为度量→计数(不同),会生成一个圆形,但是还未显示男女比。继续将Sex拖入颜色和标签,添加Year筛选器,效果如下:

85c442ee3ee757a3dc785e4a85bdcce4.png

3 图表组合、布局

将上面绘制的图表,按照相似主题,组合成仪表板。

仪表板支持在单一面板多个工作表的集合,便于同时比较监测数据,通过添加筛选器、突出显示等操作,还可实现数据的下钻,交互性更强。

在Tableau中,文本、图像、网页、空白都可被当作对象添加至仪表板中。

【布局容器】是仪表板布局的框架,分为水平和垂直两种,用来放置工作表、筛选器、图例、文本等。

【布局方式】有平铺和浮动两者。默认的平铺方式,即所选工作表或对象平行分布,互不遮盖。浮动布局则更为自由,可随意调整对象大小及位置,以实现更好效果。

布局流程一般是,添加布局容器,然后在容器中添加内容,再添加另一布局容器。

89ee0a2fb8ab82f6c238e183c8757fc2.png

下面以各项目运动员分布情况仪表板为例,其余布局类似。

首先新建仪表板,拖入一个水平容器,添加"参与人数前15的运动项目"气泡图,会默认添加气泡图及图例。然后在下面再添加一个水平容器,添加各届男女运动员人数条形图及比例饼图,如下:

b8cf8263c70786875f5bc300aff74095.png

注:Tableau布局容器和工作表间的包含、并列关系需要小心琢磨,有时候看似一样的布局结构,但是其背后的布局逻辑却是不相同的。

设置仪表板上筛选器的作用范围,应用于仪表板上的所有表,单一筛选器即可对该仪表板上的所用表进行筛选。

172539b8baa884216ae9892133be11ae.png

还可对仪表板上的某一工作表"使用筛选器",那么单击该表部分,其余表则会相应显示该部分的数据。如选中"Swimming",那么另外两个图表则会相应显示Swimming项目各届男女运动员参与人数及比例。

8408d86f905688f0e21cf0cd8c78a047.png

4 可视化结果

经过上面一系列简单的图表绘制、组合的操作,主要围绕奥运会总体情况概览、奖牌总数前15名国家情况、各项目运动员分布情况、运动员身体情况四个主题来创建仪表板,就可以得到以下结果啦!

a. 总体情况概览

d1e2f83246928f4c7e72f32e81834fa8.png

b. 奖牌总数前15名国家情况

bacf8d71fea1e1e823a7113ce70ee650.png

c. 各项目运动员分布情况

cd3e5c45ca1adb1479354f312129e354.png

d. 运动员身体情况

3aca560144e768bc92ec47f56d9a5bc5.png

0x0F 总结

Tableau对数据的管理、呈现类似Excel中的数据透视表,操作简单、易上手,仅需要拖拽字段就可进行可视化分析,效果美观,因此广受欢迎。

本文仅介绍了最基础的部分,实际上Tableau还可进行创建分组、集、聚类分析、回归分析、时间序列等高级操作,大家可以继续探索学习~

其官网提供了丰富的学习资源,对初学者非常友好。不仅如此,学习的另一途径就是模仿优秀作品,Tableau还拥有活跃的、高质量的社群,各路可视化大神都会在上面交流分享自己的作品,对我们开拓思路、精进可视化效果都有很大帮助。

注:本文的Tableau工作簿已经上传至Tableau Public,感兴趣的朋友可以前往查看~

网址:https://public.tableau.com/profile/meetywy#!/vizhome/120yearsofOlympichistory_16069878256050/120yearsofOlympichistory

2829d9b644aeeade3064151120fa6e17.gif·················END·················

推荐阅读

  1. 说说心里话

  2. 写给所有数据人。

  3. 从留存率业务案例谈0-1的数据指标体系

  4. NB,真PDF神处理工具!

  5. 超级菜鸟如何入门数据分析?

b7e056939ed0d1fc863b74bb3e061372.png

欢迎长按扫码关注「数据管道」

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

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

相关文章

PyTorch深度学习实战(27)——变分自编码器(Variational Autoencoder, VAE)

PyTorch深度学习实战(27)——变分自编码器 0. 前言1. 变分自编码器1.1 自编码器的局限性1.2 VAE 工作原理1.3 VAE 构建策略1.4 KL 散度1.5 重参数化技巧 2. 构建 VAE小结系列链接 0. 前言 变分自编码器 (Variational Autoencoder, VAE) 是一种生成模型&…

基于百度AI+jquery-webcam+servlet实现人脸识别登录,兼容各主流浏览器

1、注册百度AI账号,获取到AI开发资格 详情参见个人博客:你的第一个人脸识别demo(http://www.cnblogs.com/guo-eric/p/8109411.html) 2、环境准备 首先按照第一步说明将百度的AI类文件和用到的三方类文件下载到本地,需要…

杨辉三角java代码_【LeetCode】118. 杨辉三角(Pascal#x27;s Triangle)解题思路

题目如下(题目链接戳我):给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 备注:在杨辉三角中,每个数是它左上方和右上方的数的和。示例: 输入: 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],…

Django项目创建图解

注:创建完views.py(也可以不做编写直接测试)就可以运行 python manage.py runserver 来检测服务器是否创建成功了(打开浏览器输入提示的网址即可) 项目创建解析:http://www.cnblogs.com/monkpy/p/8377190.…

索引会自动更新吗_mysql的B+树中数据存放结构和索引常见问题你会吗?

问题如何理解mysql中 数据存放在B树的叶子节点而不是其他非叶子节点?(InnoDB中)B树的叶子节点一定存放全部的真实数据吗?辅助索引和聚集索引的B树有什么区别?联合索引的B树中数据又有啥区别呢?MyISAM中的索引是什么样的&#xff1…

pandas-事例练习

补充:  DataFrame.dropna(axis0, howany, threshNone, subsetNone, inplaceFalse)功能:根据各标签的值中是否存在缺失数据对轴标签进行过滤,可通过阈值调节对缺失值的容忍度参数:axis : {0 or ‘index’, 1 or ‘columns’},或 …

扒一扒TCP协议与UDP协议

TCP服务的特点 (1)面向连接:使用TCP协议通讯的双方必须先建立连接,然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。TCP链接是全双工的,即双方的数据读…

linux 查看共享磁盘_如何可视化地查看 Linux 系统磁盘使用情况?

本文介绍一个可视化地查看 Linux 系统磁盘使用情况的工具——Duc。Duc 是一个工具集,可以在类 Unix 操作系统上建立索引、检查和可视化系统的磁盘。与其它相似工具相比,它可以正常工作在超大规模的文件系统上。测试表明,Duc 可以毫无问题地工…

mysql git下载安装_xshell、python、git、mysql安装(玩阿里云的第二天)

2、因为放弃了图形化桌面,所以要找清自己的位置。不清楚自己刚进去时在哪个目录,先ll、ls、cd ..试试3、python安装安装python失败,同时发现自带了2个python版本(python2.7和python3.6);卸载python:sudo apt-get remov…

Tomcat端口冲突

在编码时&#xff0c;有时候会一步小心多开了一个tomcat&#xff0c;而且端口也没改&#xff0c;这个时候就会造成端口冲突问题&#xff1a; 解决冲突问题也很简单&#xff1a;打开 dos窗口&#xff1a;netstat -ano|findstr <端口号> 输入netstat -ano|findstr 加上被冲…

vscode html 格式化_详解VSCode 格式化不符合预期的问题

一句话总结不同格式化程序执行时长不一样&#xff0c;导致文件格式好后和预期不符。请务必保持校验&#xff08;Lint&#xff09;规则和格式化&#xff08;Format&#xff09;规则一致&#xff0c;不然格式化后还是不符合预期是非常讨厌的。本篇主要讲解怎么调教VSCode的保存时…

C#总结(四)调用C++动态库

由于公司很多底层的SDK&#xff0c;都是C开发&#xff0c;上层的应用软件却是C# Winform程序。在实际工作的过程中&#xff0c;就经常碰到了C# 程序调用C 动态库的问题。最近一直在和C 打交道&#xff0c;C# 怎么调用C 类库函数。也遇到了一些问题&#xff0c;所以就来总结总结…

mysql外码内码定义_中文编码杂谈(转) - CodeAxe的个人页面 - OSCHINA - 中文开源技术交流社区...

编码问题的例子在windows自带的notepad(记事本)程序中输入“联通”两个字&#xff0c;保存后再次打开&#xff0c;会发现“联通”不见了&#xff0c;代之以“&#xfffd;&#xfffd;ͨ”的乱码。这是windows平台上典型的中文编码问题。即文件保存的时候是按照ANSI编码(其实就…

python re.split_python re模块re.split将字符串分割后返回列表

re.splitsplit 方法按照能够匹配的子串将字符串分割后返回列表&#xff0c;它的使用形式如下&#xff1a;re.split(pattern, string[, maxsplit0, flags0])参数&#xff1a;参数描述pattern匹配的正则表达式string要匹配的字符串。maxsplit分隔次数&#xff0c;maxsplit1 分隔一…

python自动化控制设备有限公司_华为 Python网络自动化

哈喽&#xff0c;大家好&#xff01;我是艺博东 &#xff0c;是一个思科出身、专注于华为的网工&#xff1b;好了&#xff0c;话不多说&#xff0c;我们直接进入正题。光棍二十年&#xff0c;不知道情人节是什么鬼东西。还是好好学技术吧&#xff01;努力、奋斗吧&#xff01;为…

vue组件 Prop传递数据

组件实例的作用域是孤立的。这意味着不能(也不应该)在子组件的模板内直接引用父组件的数据。要让子组件使用父组件的数据&#xff0c;我们需要通过子组件的props选项。 prop 是单向绑定的&#xff1a;当父组件的属性变化时&#xff0c;将传导给子组件&#xff0c;但是不会反过来…

python视图函数是什么意思_Flask初学者:视图函数

视图函数返回html模板&#xff1a;使用“from flask import render_template”&#xff0c;在函数中传入相对于文件夹“templates”html模板路径名称字符串即可&#xff0c;flask会自动到项目根目录的“templates”文件夹(创建flask项目时&#xff0c;pycharm会自动创建两个空文…

kendo Grid json解析的问题

新建立了一个 页面&#xff0c;在grid中使用了dropdownlist&#xff0c;总是显示companyId is not defined &#xff0c;以前这个问题解决过了&#xff0c;忘记记录了额&#xff0c;现在不知道怎么办了 下面的这个解决方法是错误的razor语法中的renderScript移动到scrip前面去解…

人工蜂群算法python_教程 | 用人工蜂群算法求解k-分区聚类问题

原标题&#xff1a;教程 | 用人工蜂群算法求解k-分区聚类问题选自towarddatascience作者&#xff1a;Pedro Buarque参与&#xff1a;Pedro、刘晓坤群体智能算法是一类受生物群体智能行为的启发而发展出来的算法&#xff0c;社会性动物例如蚂蚁、蜜蜂、鱼等&#xff0c;个体的简…

java遍历树_Java实现遍历N级树形目录结构

最近挺忙&#xff0c;一直在做项目&#xff0c;然后有个树形目录结构需要返回给前端&#xff0c;这里给大家说一下实现的思路。具体达到的效果类似&#xff1a;一级目录A&#xff1a;二级目录A&#xff1a;三级目录&#xff1a;四级目录&#xff1a;文件.txt二级目录B&#xff…