TowardsDataScience 博客中文翻译 2020(八百三十三)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

表格计算—简介

原文:https://towardsdatascience.com/tableau-calculations-an-intro-9e89f92a3f68?source=collection_archive---------42-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由 奥列格马尼发自Pexels

这篇博客是我正在进行的“教学场景”博客的第三篇文章。在之前的文章中,我展示了如何从头到尾创建一个基本的仪表板,以及如何使用过滤器。本周的教程将复习“计算”。什么是计算?看起来很简单,但是 Tableau 对计算有三个定义。计算可以作为对数据源进行的查询的一部分写入,也可以在查询之后写入。这一秒钟后会更有意义。有基本计算、细节层次表达式(LOD)和表格计算。基本计算可以是聚合计算,如对整个数据集进行求和或求平均值,也可以通过计算单个行对数据源进行操作。基本计算是查询的一部分。LOD 表达式也是 Tableau 查询的一部分。Tableau 表示,它们允许我们“计算不在视图细节级别的聚合”。通过使用 EXCLUDE、INCLUDE 和 FIXED 函数,LOD 表达式可以在更详细的级别上工作。表计算写在查询之后,这意味着它们对作为查询结果计算的值进行操作。

虽然我们绝对有能力写出冗长复杂的计算,但有时简单的就足够了。如果我们点击一个药丸,并选择“快速表格计算”,有现成的表格计算供我们选择。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这种数据分析的蝙蝠侠工具带应该永远是你的首选。如果这些还不够,那么我们需要发挥脑力,进行更详细的计算。该字段可能不会显示,因为药丸可能只能使用基本计算。请记住,基本计算是在数据源上进行的,而表计算是根据查询结果在本地进行的。当我们有一个包含各种字段的可视化时,我们称之为“字段集”。例如,你可能有各种可以被分解的类别。我们可以把钢琴、吉他和贝司作为我们的“类别”。这些类别可以细分为“细分”,如声学和电气,其中包含总销售额等值,我们称之为“数量”。可以应用表格计算,但我们需要记住,当我们添加和删除字段时,表格计算也会相应地调整。

我们如何进行计算?首先,单击下面显示的下拉菜单,选择“创建计算字段”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这将把你带到计算屏幕。在顶部字段中为您的计算命名。在这个例子中,我们希望看到所有超过 100 个单词的评论。对于这样的计算,基本的计算功能就可以了。其语法如下:IFTHEN【else IF<expr 2>THEN<THEN 2>。。。】【ELSEEND。使用这种语法,我们将在计算字段中键入:IF[Num Words]>100 THEN ">100 " ELSE "<100 " END,如下图所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Tableau 会在你输入的时候自动填充建议,所以如果你忘记了你的选项,这是一个很好的提醒。如果你真的不知道有哪些选项可用,你可以点击计算字段右边的三角形,在那里会出现另一个包含所有聚合函数的窗口供你浏览。花些时间浏览选项是熟悉可用工具的好方法,因为每个功能都有精彩的摘要。现在我们有了我们的计算,我们可以点击 OK,这将添加一个药丸到左边的数据窗格与我们的标题。现在,我们所要做的就是将适当的药丸添加到行和列部分,并构建我们的计算图表。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

添加我们计算的药丸将我们的图表分割成一个图表,所有评论少于 100 个单词。另一种快速计算方法是双击列或行部分的字段,这将允许您直接输入计算结果。在这里,你甚至可以将药丸从数据窗格拖到字段中,这样你就不必把它们打出来。

让我们看一个 LOD 表达式的例子。对于这个例子,我将使用来自 Kaggle.com 的电子商务数据集。你可以在这里找到:链接假设我们想要一个月中每天的平均销售额。我们的图表看起来像这样:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果我们仔细观察数据,我们可以看到,对于每个会话,用户可能会购买同一商品的多个实例或几个不同的商品。如果我们想找到每个会话的平均销售额,看看一个普通用户在某一天花了多少钱。为此,我们可以执行一个 LOD 表达式。首先,我们调出表格计算菜单。在输入字段中,我们可以写入以下表达式**{ INCLUDE[User Session]:SUM([Price])}**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这将给我们一个新的药丸,我们可以移动到行部分,并建立我们的图表。现在,我们需要做的就是从药丸的 Measures 下拉菜单中将聚合函数更改为 AVG。我们可以看到下面对比的表格。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

语法以花括号开始和结束。LOD 表达式可以使用 INCLUDE、EXCLUDE 和 FIXED。我们在这里使用 include 是因为我们希望计算考虑视图中的日维度。FIXED 和 EXCLUDE 的区别在于,FIXED 是在维度筛选之前计算的,而 EXCLUDE 是在维度筛选之后计算的。它们不会像 INCLUDE 那样考虑视图中的尺寸。

我希望这个关于表格计算的基本概述能激起你对一些数字运算的兴趣。这些计算会变得相当复杂,所以花时间练习是绝对必要的。我也想给 Pris Lam 的博客一些关于 LOD 表达式的信息。在这里查看他的一些作品:链接

Tableau 数据分析技巧和窍门

原文:https://towardsdatascience.com/tableau-data-analysis-tips-and-tricks-775b48f04ac7?source=collection_archive---------48-----------------------

探索 Tableau 的一些隐藏和最有用的技巧,使您的分析更快更有趣

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

卢克·切瑟在 Unsplash 上的照片

Tableau 是最强大和最流行的数据分析工具之一。Tableau 拥有几乎 14% 的商业分析软件行业市场,拥有最高满意度的客户群。

这是 Tableau 提示和技巧系列之一,在这里我将告诉你一些数据分析的省时快捷方式。

我有一些技巧和提示,每个 tableau 用户都可以应用,使他们的分析更快更有效。所以让我们开始吧。

Tableau 技巧和快捷方式

复制并粘贴

这是一个神奇的工具,它允许你复制并粘贴你的数据,以便更快地进行分析。(Windows: Ctrl + C 表示复制,Ctrl + V 表示粘贴)(Mac: Command + C 表示复制,Command + V 表示粘贴)

拖放

Tableau 允许对 Tableau 数据提取连接的平面文件执行拖放功能。

快速聚集

将用于分析的度量/维拖到视图中时单击鼠标右键,以获得快速聚集选项。

分析-重用-重复

要重复和重复使用已存在于显示中的测量,请在移动它时按住 CTRL 键(Mac 命令)。

共同特性

Tableau 是一个强大而智能的工具,我们可以使用分母 K 和 M(K-千,M-百万),而不是键入大量的零(千或百万)。

放大快捷方式

使用Ctrl+Shift+区域选择在查看大量时间数据时快速轻松地放大。

度量交换

要交换视图中的测量值,请遵循以下步骤:“分析(菜单栏)”—“循环字段”。

初始仪表板

使用“ ESC ”键移除应用于分析仪表板的所有过滤器,以恢复其初始状态。

格式化仪表板

菜单栏→“格式”→“格式化仪表板”以更改仪表板中的标题和文本

小贴士:

像专业人士一样偷

Tableau 有一个巨大的社区,成千上万的分析爱好者在这里回答问题,并向公众发布他们自己的仪表盘以供参考和使用。从头开始制作仪表板需要大量的时间和大量的创造力,但如果我们能够将我们的数据与公开可用的仪表板相匹配,那么我们的工作就减少了一半。

我建议考虑一下。选择一个您喜欢的仪表板,并尝试以创造性的方式整理您的分析数据。

网格布局

当我们创建仪表板时,使用网格布局使其更具可读性和吸引力。网格布局还为最终用户增加了仪表板的可读性。它还为他们提供导航布局。

字体和颜色

当你为你的仪表板选择颜色的时候要小心,因为它是值得注意的。我推荐你在这里看一看以获得更好的视觉练习。

当我们在仪表板中使用多种字体时,最好的做法是对仪表板的不同分析级别使用层次结构。这种方法将增加破折号的可读性。

合作

数据科学世界在不断发展,我们也需要进化自己以适应变化。正如所说的

“也许正是我们的不完美让我们如此完美!”— 道格拉斯·麦克格兰斯

与他人合作,找出我们的不足之处,并做出相应的改进。这里有一些资源,你可以与其他 tableau 极客合作,提高你的数据分析和仪表板表示技能。

Tableau 用户组:加入一个群组,发布您的分析仪表板,并接收群组成员的意见,或者您可以创建自己的群组并邀请其他人。

Tableau 社区:加入社区,提出问题,接受行业专家和社区专家的解答。

这个博客到此为止。希望大家都喜欢,为之鼓掌。

我将带着更多的数据科学项目逐步指南的博客回来。

敬请期待!!

Tableau 桌面专家认证(提示和指南)

原文:https://towardsdatascience.com/tableau-desktop-specialist-certification-a-quick-guide-3b4650245c3f?source=collection_archive---------38-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Unsplash 上由 Carlos Muza 拍摄的照片

这个月早些时候,我通过了 Tableau 桌面专家考试。为了大家的利益,我愿意分享我的愉快经历。此外,我发现的学生有权获得高额奖金!

我把我的分享分成 5 个部分:

  1. 什么和为什么
  2. 准备
  3. 考试形式
  4. 考试经历
  5. 结果和提示!

什么和为什么

拥有 Tableau 桌面专家证书表明你有扎实的基础技能和至少三个月的经验。如果你是专家,还有更高级的证书。

我不认为参加这个考试是必不可少的,只要你能够证明你熟练使用 Tableau。例如,你可以在 Tableau Public 上发布你的一些可视化效果。然而,准备这个认证会让你学会正确的方法:基本概念

准备

还有什么比向画面的创造者学习更好的方法呢!好消息是,学生可以在Tableau e-Learning获得一个免费账户。你可以先注册你的 一年免费学生许可证 ,这也使你有权使用 Tableau Desktop。对于非学生,您需要付费):

[## 学生用桌子

我们提供免费的一年 Tableau 许可证,通过我们的 Tableau 认证的学术机构的学生…

www.tableau.com](https://www.tableau.com/academic/students#form)

考试前,我完成了桌面一桌面二。尽管如此,推荐的课程只是桌面 I。这些课程涵盖了从最基本的概念到高级概念,以一个非常清晰的分步视频&教程。

对我来说,最大的收获是学习基本概念和不太明显的功能,如果我自己探索 Tableau,我不会知道这些。

除了参加在线学习,还有一些其他有用的资源可以帮助检查您的理解水平:

考试形式

  • 时间 : 60 分钟。事实上,你有 5 分钟的额外时间来阅读说明。
  • 30 多项选择题 (4 项选择)
  • 及格分数 : 70%
  • 涵盖的主题 : 1。连接并准备数据,请按 2。探索和分析数据,3。分享见解,4。理解 Tableau 概念
  • 有些问题需要动手环节来回答。
  • 费用:100 美元。然而,学生可以节省 20 美元!只需使用您学校的电子邮件地址注册,折扣将自动生效。

考试经历

我按时接通了监考老师(监考老师)。在开始考试之前,我们花了将近 30 分钟来验证身份,检查互联网连接,房间条件和解释规则。

  • 我被要求展示我房间的 360 度视图,确保周围没有纸张、双显示器(需要关闭)或其他电子设备。最好的方法是有一张干净的桌子。
  • 考试是这样进行的,我连接到一个虚拟机,我可以在那里做任何事情(例如,打开 Tableau 桌面,使用考试 Excel 文件等。).屏幕是共享的,所以监考人可以看到我在做什么。
  • 我在一个 12 英寸的小屏幕上做测试,因此不方便,因为我必须挤压分屏视图(一个用于问题,一个用于 Tableau 桌面)。如果你有大屏幕,就用它。

如果你想跳过一些问题,你可以标记它,以后再回来。我很早就结束了,还剩 15-20 分钟。所以肯定没必要急!每个问题有 2 分钟,有些问题可以在几秒钟内回答(特别是如果不是动手操作的问题)。

结果&提示

在你提交考试之后,结果会立即弹出。之后,你还会收到一封关于你的证书的电子邮件,并详细说明你在这四个方面的分数。我得了 95 分——我的大部分错误来自于对 Tableau 概念的理解部分。

最佳提示:你可以谷歌一下!这对于检查概念,甚至检查如何在 Tableau 中进行某些操作特别有用!

结论

我希望我的分享能提供一些有用的见解。一旦你做好了适当的准备,通过考试绝对不是一件令人生畏的事情。最终,重要的是我们学习和提高。

干杯,祝你学习愉快!

查看我的其他文章:

[## 文字云中的圣经

只需点击几下鼠标,即可获得圣经的主题概述

medium.com](https://medium.com/illumination/the-bible-in-word-clouds-6a7dc3bb38ab) [## 混乱矩阵解释

用例子、技巧和成本矩阵简单解释。

towardsdatascience.com](/confusion-matrix-explained-5d42122a04d6)

加入我的电子邮件列表,每当我发布新帖子时都会收到通知!

[## 在这里加入我的电子邮件列表,我一发表你就会收到通知!

在这里加入我的电子邮件列表,我一发表你就会收到通知!你也可以点击下面,如果你想…

nathanthandoko.medium.com](https://nathanthandoko.medium.com/subscribe)

使用形状文件进行数据可视化的公共 Tableau

原文:https://towardsdatascience.com/tableau-public-for-data-visualization-using-shape-files-1782c9930f9?source=collection_archive---------40-----------------------

分析行人交通量——墨尔本群组

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片致谢—由作者使用 Tableau 开发

问题背景

行人活动在任何国家都是生气勃勃和充满活力的象征。正如人们常说的,“步行对一个城市很重要”,步行活动是一个城市经济繁荣、安全和人们生活便利的标志。墨尔本市开发的自动行人计数系统实现了信息库的开发,该信息库可用于分析城市不同部分居民的活动。安装在城市不同位置的行人计数传感器将数据传输到中央服务器,然后可以用于更好的决策和未来规划。该项目旨在深入研究使用这些传感器收集的数据,以解决两个关键问题:

  1. 墨尔本不同地区的行人交通量如何变化?
  2. 星期几和时间如何影响整体行人交通量?

分析方法

从数据收集、属性综合、数据争论、假设生成和数据可视化开始的五步迭代过程被用于获得关于手头问题的关键发现和见解。下面的图 1 概述了相同的详细过程。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图一。说明了回答分析问题上下文所遵循的分析过程。请注意,用于此问题内容的数据已经过整理,并已提前提供。图片致谢—由作者使用 Power Point 开发

数据整理和属性综合

用于此分析的两个独立数据集概述如下:

  1. 行人计数系统-传感器位置:这包含位于墨尔本市周围的行人传感器设备的空间坐标,从 data.melbourne.vic.gov.au 提取
  2. 行人计数系统-2019:这包含 2019 年期间每个传感器的每小时行人计数,从 data.melbourne.vic.gov.au 提取

数据字典,即关于不同数据属性的信息包含在 Jupyter 笔记本中,也可以在这里找到。行人计数系统-传感器位置数据集位于传感器 ID 级别(主键),而行人计数系统-2019 数据集位于传感器 ID、日期-时间级别(主键)。

数据争论

数据争论被定义为将数据结构化、清理并转换为一种格式的过程,这种格式有助于在更短的周转时间内做出更好的决策。数据是以表格形式获得的,因此不需要重组。然而,一个 Jupyter 笔记本被开发来寻找数据异常、缺失值、异常值和其他数据问题。争论的结果概述如下:

缺失值和异常值

行人计数系统传感器位置 csv 文件包含 66 个不同传感器 id 的信息,其中四个传感器的方向信息缺失。在进一步的深潜中,发现这些传感器要么被移除,要么不起作用。关于这些传感器的信息可以在下面的图 2 中看到。“注释”栏中缺少大多数传感器的值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图二。direction_1 和 direction_2 列缺少信息的传感器快照。图片来源——由作者使用 Jupyter 笔记本开发

speedman _ Counting _ System _ 2019 . CSV 数据集中没有任何列缺少值。数字列的快速描述/汇总统计表明这些数字在范围内。“每小时计数”栏表示行人计数的显著偏斜。记录的行人数量的第 75 百分位和最大值明显不同,这可归因于事件、假期、季节趋势等。异常值至少为-7%的传感器静态汇总如下图 3 所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方框图——图片来源——作者使用 Jupyter 笔记本开发

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3。异常值为 7%的传感器的汇总统计数据和箱线图。注:为简单起见,7%被认为是一个阈值。由于行人数量会因时间、季节、事件和其他因素而有所不同,因此我们不会在本次分析中处理异常值。图片来源——由作者使用 Jupyter 笔记本开发

传感器 ID —不匹配

在进一步深入研究中,获得了 8 个传感器 id,它们是行人 _ 计数 _ 系统 - 传感器 _ 位置. csv 数据集的一部分,但是它们在行人 _ 计数 _ 系统 _2019.csv 数据集中不存在。调查结果如下:

  1. 最初被识别为已移除或未激活的传感器 IDs 16、38、32 和 13 在行人 _ 计数 _ 系统 _2019.csv 数据集中没有行人计数信息
  2. 传感器 IDs 63、64、65 和 66 安装于 2020 年,因此没有 2019 年的行人计数信息,因此在行人计数系统 2019.csv 数据集中缺失
  3. 传感器 IDs 15(州图书馆)和 33(弗林德斯街-斯普林街(西))标记为 R(已移除)和 I(未激活),但从 2019 年起具有行人量。假设这些传感器最近被移除,则保留这些传感器

假设公式

自上而下的方法用于将问题分解为多个因素(假设)。然后根据数据可用性,使用 Tableau 中的可视化工具分析这些因素,以确定关键发现或趋势。假设综合的树形图可以在这里找到。

Tableau 中的数据浏览

使用可视化方法在 Tableau 中研究数据,以检查数据异常。图 4 示出了由传感器收集的行人交通量向左倾斜,并且箱线图还示出了异常值的存在。如前所述,异常值不会被视为多个因素,如季节性、事件、时间和一周中的某一天会影响记录的行人流量。图 5 显示,一些传感器没有记录行人流量,例如传感器 32、63-66 等。如下面的条形图所示。由于大多数分析是基于地区和日期时间的行人流量,这些传感器没有被丢弃。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4。记录的行人流量直方图和箱线图。大多数数据向左倾斜,表明存在异常值。任何超出 Q1-1.5 倍和 Q3+1.5 倍的都被视为异常值。Q1 和 Q3 是四分位数,IQR 表示四分位数范围。图片致谢—由作者使用 Tableau 开发

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5。郊区的传感器数量(#表示计数)和传感器 id 的行人数量。图片致谢—由作者使用 Tableau 开发

数据可视化

人口统计学对行人交通量的影响

处理后的数据与两个 shapefiles 一起上传到 Tableau,以了解人口统计、郊区和感兴趣的区域对 2019 年行人计数的影响。使用下面的图 6、7 和 8 来表示可视化效果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 6。说明了 2019 年墨尔本各地传感器记录的行人数量。密度代表 2019 年的总行人量。图片致谢—由作者使用 Tableau 开发

调查结果:

  1. 数据集中仅显示了 58 个传感器的行人交通量,这些传感器大部分位于 CBD 及其周围

*2。土地用途可以大致分为娱乐、交通、农业、住宅和商业。*与其他区域相比,商业和娱乐区域的客流量更大。与上图 6 所示的其他区域相比,2019 年记录的 CBD 及其周边地区的行人密度要高得多。拉筹伯街和尤里卡塔之间的地区是几家跨国公司和娱乐场所的所在地,2019 年的行人数量高于周边地区

3.与其他传感器点相比,靠近地铁站(如南十字车站和墨尔本中心车站)的传感器具有更高的行人计数

4.活动中心区(ACZ)是指导和促进活动中心土地使用规划的首选工具。下图 7 显示了分析区域周围的活动中心。内地铁和内东南区域有更多的活动中心,并在 2019 年观察到更高的行人流量,这是由这些区域及其周围的传感器捕捉到的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 7。活动中心位于放置传感器的区域及其周围。使用 shapefile(澳大利亚政府,未注明)绘制活动中心。图片致谢—由作者使用 Tableau 开发

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 8。展示了传感器记录的郊区平均行人数量。由于不同的郊区安装了不同数量的传感器,因此考虑使用平均值来确保苹果与苹果之间的比较。调查结果与我们之前讨论的一致,与所有郊区相比,墨尔本郊区(墨尔本市)和 South Wharf 的平均行人流量更高。与帕克维尔、北墨尔本、卡尔顿和东墨尔本相比,码头区的客流量稍高。图片致谢—由作者使用 Tableau 开发

星期几和时间对行人交通量的影响

下面的图 9 和图 10 分析了一周中不同时间的行人流量变化。基于通常的预期量,一天中的时间被分类为不同的时段。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 9。条形图和树形图分别说明了 2019 年不同日期和时间的行人流量变化。图片致谢—由作者使用 Tableau 开发

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 10。说明了 2019 年每个传感器捕捉的一天不同时间的平均行人流量。“一天中的时间”的定义如下。此外,请注意,该图通过使用周数和所考虑的传感器数量对平均行人交通量进行归一化,从而对其进行比较。图片致谢—由作者使用 Tableau 开发

一天中的时间:0-6:从中午 12 点到早上 6 点,6-8:清晨,8-12:高峰上午,12-16:下午,16-18:傍晚,18-20:高峰晚上,20-24:晚上。

调查结果:

  1. 与周末相比,工作日的行人交通量更高(参见图 10)
  2. 与其他时段相比,下午、早高峰和晚上(早高峰和晚高峰)的行人流量更高(参见图 10)
  3. 高峰早上和晚上的人流量预计会更高,但是由于数据是在一周的所有日子中进行整理的,然而由于周末由于娱乐和其他活动而在下午经历人流量,行人的总流量在下午时段会更高
  4. 有趣的是,与一周中的其他日子相比,周五和周六晚上的行人流量要高得多(参见图 11)
  5. 行人流量的增加可归因于周末的娱乐活动,尤其是周五和周六晚上
  6. 在工作日,不同时段的行人流量趋势保持不变(分别针对不同时段),例如,周一至周五早上高峰时段的行人流量保持不变
  7. 周六和周日“12 点后至 6 点”的行人流量明显较高,表明周末墨尔本夜生活的受欢迎程度(参见图 11)

参考

1.澳大利亚政府(未标明)。搜索。[在线]data.gov.au。可从以下网址获得:https://data . gov . au/dataset/ds-DGA-af 33 DD 8c-0534-4e 18-9245-fc 64440 f 742 e/details

2.环境部,法律(未注明)。空间数据。【www.planmelbourne.vic.gov.au 在线】地点:【https://www.planmelbourne.vic.gov.au/maps/spatial-data】T4

关于作者:高级分析专家和管理顾问,帮助公司通过对组织数据的商业、技术和数学的组合找到各种问题的解决方案。一个数据科学爱好者,在这里分享、学习、贡献;可以和我在 上联系 推特

Tableau 服务器影响分析报告:访问元数据

原文:https://towardsdatascience.com/tableau-server-impact-analysis-reports-accessing-metadata-9e08e5fb5633?source=collection_archive---------44-----------------------

TABLEAU REST API: TABLEAU-API-LIB 教程

一个关注使用交互式可视化工具跟踪数据传承来提高团队生产力的系列

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

元数据可以帮助你跟踪你的场景环境(图片由 Aron VisualsUnsplash 上拍摄)

所有好的冒险都始于第一步。在本教程中,我们为 Tableau Server 构建影响分析报告的第一步是收集有关工作簿、视觉效果和底层数据库资产之间关系的信息。

如果你不知道我在说什么,花几分钟看看的介绍文章,这是一系列教程的开始,展示了我们如何为 Tableau 构建影响分析报告。

总而言之,我们的目标是提取存在于每个 Tableau 生态系统中的有价值的元数据,并为如何将这些数据转化为洞察力提供一个大纲。这一切都是为了提高我们的数据团队的生产力,并提供关于我们的数据谱系的定制的可视化信息,任何能够点击鼠标的人都可以轻松地与之交互。

所以让我们开始吧!

我们在本教程中完成了什么

我想尽快进入如何进入,但是解释什么是很重要。我们的第一步要求我们获得一些关键信息,以便回答这些类型的问题:

  1. 如果特定的数据库资产出现故障,我们有多少视觉效果会受到影响?我们如何才能确切地知道什么数据进入了我们的 Tableau 服务器环境?
  2. 受影响的视觉效果是仪表板还是工作表?它们有什么类型的连接,这些连接是嵌入在单个工作簿中还是发布的?
  3. 为了更好的可伸缩性和治理,我们是否有许多可以整合到已发布的数据源中的重复连接?
  4. 考虑到我们使用的所有数据库连接,哪些特定的表是最关键的?有多少 Tableau 工作簿引用了这些表?

我们可以继续,但我想你明白了。这些问题的重复主题是:工作簿、数据源和数据库表。

让我们深入本教程的任务:从元数据 API 中提取数据,并将其塑造成能让我们更接近回答上述问题的东西。

有不止一种方法来修饰…元数据

俗话说,“剥猫皮的方法不止一种。”我一直喜欢猫,所以一直不爱这个词组。我提出这个问题的原因是,它非常适合我们使用 Tableau 的元数据 API 的情况。

对于初学者来说,你可以采用无代码的方法,或者你可以反过来用代码做所有的事情。是的,每个人都有适合自己的东西。

我们将从无代码方法开始。您可以使用它来快速证明概念,或者依赖它作为您的首选数据收集方法,如果它提供了您所需要的,并且您不介意一点手工劳动的话。

在介绍了无代码方法之后,我们将扩展我们的 Python 肌肉,为您将元数据 API 集成到自动化工作流中铺平道路。走 Python 这条路还可以让我们做一些漂亮的事情,比如用其他来源的上下文信息丰富我们的元数据。

无论您选择哪种方法,您都需要安装 Tableau Server 2019.3 或更高版本才能使用元数据 API。如果你使用 Tableau Online,你就可以了。你知道你可以通过加入他们的开发者社区来申请一个免费的 Tableau 在线沙盒网站吗?现在你知道了。

这涵盖了本教程的范围,尽管我想我会在最后加入一两个基本的画面来证明我们提取的数据是真实的,并强调隐藏在其中的价值。

在未来的教程中,Python 将继续作为一个熔炉出现,成为我们查询元数据、存储库数据库和创建。超提取物为我们最终的影响分析仪表板提供燃料。

获取元数据的无代码方法

无需编写脚本来验证 Tableau 服务器环境并获取信息,您可以访问以下 URL 来访问您的元数据:

https://<your-tableau-server>.com/metadata/graphiql

您将被提示像往常一样使用您的用户名和密码进行验证,但是您将看到内置的 GraphQL 界面,而不是通常的界面。顺便说一下,这不是上面的样本链接中的错别字。它是“graphiql ”,里面有一个“I”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

欢迎使用 GraphQL 元数据 API 沙箱

从这里开始,您可以自由构建一些基本的 GraphQL 查询。我之前说过没有代码吗?别担心,你会没事的。请随意复制并粘贴这些示例查询。如果你是喜欢冒险的类型,去的元数据 API 文档去掌握所有的东西。

例如,运行这个基本查询将获取您站点上的所有工作簿名称、工作簿 id 和工作簿所有者:

{
  workbooks {
    name
    luid
    owner {
      name
      email
    }
  }
}

响应将以 JSON 格式出现在 GraphQL 界面的右半部分。我的输出如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可怕的蓝色是我屏蔽了我的超级秘密邮件地址。

你知道你可以直接连接 Tableau 桌面到 JSON 文件吗?是的,将元数据放入仪表板就是这么简单。只需复制 JSON 输出并将其粘贴到文本文件中。用. json 扩展名保存文件,就可以了。

下面你会发现整个过程在运行,用一个更高级的查询代替上面提供的玩具例子。该查询可以在 this Github Gist 中找到:

使用这个查询来跟进。

将生成的 json 数据存储到. JSON 文件后,打开 Tableau Desktop 并连接到该文件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

创建一个新的数据连接,并选择 JSON 文件选项

选择中所有可用的模式。json 文件,然后单击“确定”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

只需这么多,数据就在您的手中!

使用 Python 的另一种(更好的)方法

手动做事并不适合每个人,包括我自己。让我们来看看如何使用代码获得与上面相同的结果。当我们展望未来的教程时,这将为我们设置几乎无限的定制,所以我强烈建议投入时间到 Python 路线中。

在我的 tableau 服务器自动化工作流中,我广泛使用了 tableau-api-lib 和 pandas Python 包,所以如果您正在跟进,那么您会希望在命令行中运行这个命令:

pip install --upgrade tableau-api-lib
pip install --upgrade pandas

与本节相关的完整 Python 脚本可以在GitHub Gist中找到:

不熟悉 Python?下载它,开始新的生活。

简要总结一下 Python 代码中发生的事情,我们将建立一个到 Tableau 服务器(或 Tableau Online)站点的连接,并针对元数据 API 运行 GraphQL 查询。本教程中的查询以工作簿、视图及其底层数据库资产为目标。您当然可以扩展这些查询,我鼓励您这样做。我们肯定会在后面的教程中重新讨论这个问题,并在这里所涵盖的基础上进行构建。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里我们有一个熊猫数据框,里面有关于我们练习册的信息

GraphQL 查询返回 JSON 数据。虽然我们可以直接将其输入 Tableau,但让我们提前计划我们这个项目的未来里程碑,我们希望将我们的元数据与其他数据来源结合起来,例如存储库数据库,它将提供各种上下文,包括上次有人与我们的视觉效果进行交互的时间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里我们有一个熊猫的数据框架,包含了我们的观点

为了将来的成功做好准备,有必要花时间将我们的 JSON 数据整理成多个规范化的表,然后将它们合并成一个“非规范化”的表。这将与其他一次性元数据 API 查询和我们将在后续教程中使用的各种 PostgreSQL 查询配合得非常好。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后,我们将 JSON 数据像煎饼一样展平,准备好迎接来自不同来源的其他数据。

现在,让我们来看看这些数据能为我们做些什么。

如果我们没有加入至少一个视觉元素,就不会有这样的场景

为了感受这些数据在创建影响分析报告方面可以为我们提供的价值,我们已经有了很多制作有用的东西所需的原材料。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示:每个底层数据库资产的视觉效果的不同计数

通过三十秒的拖放操作,我们已经创建了如上所示的工作表!我们可以使用底层数据来构建定制的数据沿袭审计,让我们最不喜欢的业务部门因使用更多工作表而不是仪表板而感到羞愧,等等。

我们现在已经能够回答本教程前面提出的问题了。我们制作了一个手电筒,可以照亮我们的 Tableau 生态系统中最黑暗的角落。

包装它

这是我们在 Tableau 中构建详细的交互式影响分析报告的第一个里程碑。我们已经接入了 Tableau 的元数据 API,并提取了足够的数据来构建视觉效果,描述为我们的 Tableau 视觉效果提供信息的底层数据库资产。我们演示了两种收集数据的方法:通过内置的‘metadata/graphisql’接口手动收集,或者使用 Python 脚本等可重复的过程收集。

我希望这个教程能让你比刚开始的时候过得更好!收听下一个教程,我们将把重点转移到存储库数据库(内部 PostgreSQL 数据库)上,从中提取一些真正有用的信息,包括用户访问内容的次数以及每个工作簿或视图的最近交互日期。

我们收集的数据已经很有价值,但将它与 PostgreSQL 数据库的输出结合起来,将使我们能够更完整地描绘出 Tableau 生态系统中正在发生的事情。

我们的最终用户最常访问哪些视图和数据库?是否有任何内容过时且未被使用?放弃 John 四年前构建的旧数据库表安全吗?我们将在下一个教程中做的工作将帮助我们回答这些问题!

即将到来的里程碑

里程碑 2 (ETA 是 4/29/2020):在里程碑 1 的基础上,使用来自 Tableau 服务器存储库的补充数据,提供与每个工作簿(视图和仪表板)、数据源和流程相关联的交互数量。

里程碑 3 (ETA 为 5/6/2020):使用 hyper API 将里程碑 1 和 2 的组合输出转换为. Hyper 提取,并将内容发布到 Tableau 服务器(或 Tableau Online)。

里程碑 4 (ETA 是 5/13/2020):使用里程碑 3 中发布的数据源构建我们的第一个影响分析仪表板。

里程碑 5 (TBD)

Tableau 服务器影响分析报告:构建定制的交互式视觉效果

原文:https://towardsdatascience.com/tableau-server-impact-analysis-reports-building-customized-interactive-visuals-85ce4798dead?source=collection_archive---------60-----------------------

TABLEAU REST API: TABLEAU-API-LIB 教程

一个关注使用交互式视觉跟踪数据传承来提高团队生产力的系列

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

更好地了解你的场景环境(照片由乔丹·麦克唐纳Unsplash 上拍摄)

在本文中,我们从前面的影响分析里程碑中停下来的地方开始,基于我们之前的工作生成的数据来构建交互式视觉效果。

作为更新,以前的里程碑将来自 Tableau 的元数据 API 和内部 PostgreSQL 存储库数据库的数据结合起来,将这些数据转换成 Tableau 超级摘录,并将这些数据发布到 Tableau 服务器。

如果这是您第一次关注这个系列,为了方便起见,下面是以前的里程碑:

  1. 构建 Tableau 服务器影响分析报告:为什么和如何
  2. Tableau 服务器影响分析报告:访问元数据(里程碑 1)
  3. Tableau 服务器影响分析报告:将元数据与 PostgreSQL 结合(里程碑 2)
  4. 构建一个 Tableau Hyper extract 并将其发布为数据源(里程碑 3)

我们在本教程中完成了什么(里程碑 4)

这个里程碑是关于使用 Tableau Desktop(同类中最好的该死的数据 viz 工具)将我们的原始数据转化为有意义的东西。

这听起来可能很奇怪,但在某些方面,构建数据可视化就像做饭一样。你做的东西很大程度上取决于你现有的原材料。变质的肉不会成为任何获奖的菜肴,变质的数据也不会让你在 Tableau 用户中赢得多少人气。类似地,就像你用盐和香料给你的食物添加味道一样,你可以通过格式化和仔细的展示来放大你的数据可视化的价值。

既然我们已经把这个类比放在你面前,我想澄清一下我们在这篇文章中在做什么。这不是选美比赛。我们不是在烹饪一些异国情调的顶级厨师菜肴,我们也不是在构建性感和疯狂的实验数据可视化。虽然设计和制作漂亮的视觉效果是很有价值的技能,但这个系列本质上主要是功能性的,在本文中,我们将构建满足我们需求的交互式视觉效果。

我在这里的目标是向您介绍我能够非常快速地构建的报告,这些报告展示了 Tableau 的核心交互元素,以便您看到在我们之前的里程碑基础上构建仪表板,为您的运营团队增加巨大价值是多么容易。在未来的教程中,我们可能会更多地关注视觉效果的流行,但今天我们将重点放在构建一个工具,为我们提供所需的信息,以便我们继续我们的生活。

说到这里,让我们开始吧!

重要的事情先来

在我们构建任何东西之前,我们需要连接到我们在前一个里程碑中发布的 Hyper extract。

我们可以通过打开 Tableau Desktop 并建立到我们的 extract 的数据连接来做到这一点。在我的例子中,摘录位于 Tableau 服务器上,所以我将在那里查找:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

没错,我们使用 Tableau 来构建我们对 Tableau 的影响分析。

这是我的数据窗格在连接后的样子。虽然这是另一个教程的主题,但我认为最好的做法是按文件夹组织我的计算字段,而不是让数据窗格成为一个混乱的噩梦(是的,我在这里充满了意见)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作为我如何组织我的数据面板的速成班,我喜欢把我所有的原始字段放入名为“/ Original / ”的文件夹中。

我通常从不使用任何原始字段。在 Tableau 领域进行了多年的大量咨询之后,您学会了如何保护自己免受数据源交换或者将数据源从一个表指向一个视图之类的事情的影响。我喜欢为自己省去修复损坏的数据源字段引用的麻烦,所以我倾向于从不在我的视觉效果中使用原始字段。相反,我创建了引用这些字段的其他计算,这样我所有更高级的计算都不会与原始的“原始”字段引用结合在一起。

如果这令人困惑,让我们继续前进吧!您可以随时获取更多信息。

床单是我们的建筑材料

每一个画面仪表板都是建立在巨人的肩膀上。床单是无名英雄,让我们为他们唱首快歌。

让我们把一些简单的表放在一起,即使它们不是仪表板的一部分,也是有用的。一旦我们构建了这些表,我们可以将它们组合在一个仪表板中,Tableau 对交互式视觉效果的本地支持将使它们更加有用。

数据库表的高级影响

我的测试环境没有超级多样的数据库表,但是我们有一些。即使您的 Tableau 环境中有数百或数千个表,同样的视觉效果也可以快速地为您提供关于表影响了多少资产的信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那不是我真正的雪花主机名!

在我的测试环境中,看起来 TMDB 火车雪花表提供了大约 15 个视觉效果。就视觉效果的数量而言,这显然是最有影响力的数据库表。

然而,查看浏览量只是故事的一个方面。我们可以将用户的查看次数添加到 marks 卡上的“颜色”中,以便从不同的角度观察事物,例如用户查看与这些数据库表相关的资产的次数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在此图中,用户交互决定了每个条形的颜色渐变。

对于该特定视觉,用户视图与视觉资产的数量一致。对于其他视觉效果,我们将看到情况并非总是如此。

Tableau 项目的影响

让我们构建一个单独的工作表,显示我们的可视化资产是如何分布在我们的各种 Tableau 项目中的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

“默认”项目包含了最多的视觉效果。如果我们添加用户交互(视图)作为颜色渐变的驱动力,这种视觉效果会发生变化吗?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这很微妙,但仔细观察就会发现,“测试”项目比“测试替代”项目有更少的视觉效果和更多的用户互动。

让我们构建几个更基本的视觉效果,这样我们就可以将它们一起放到一个仪表板中。

Tableau 数据源的影响

这是视觉效果的普通版本。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下面我们看到的是用户交互(视图)决定颜色渐变的版本。我知道我在这一点上犹豫不决,但我觉得这很重要。尤其是一旦我们在交互式仪表盘中整合视觉效果,引入微妙的视觉元素可以完全改变你的仪表盘讲述的故事,在不增加不必要的混乱的情况下完成这一点更像是一门艺术而不是科学。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在,虽然这个视觉结构与没有颜色渐变的视觉结构相同,但这个新的视角告诉我们一些我们无法从原始视角获得的东西:仅仅因为一些东西与更多视觉相关,并不一定意味着它重要。您可能有 100 个工作簿受到一个后端表的影响,但是如果这 100 个工作簿只有 5 个用户交互会怎么样呢?这 100 个工作簿比一个有 894 个视图的工作簿更重要还是更不重要?

上图向我们展示了一些数据源产生了相对较少的视觉资产,但这些资产有时会带来相对较高的用户流量。

就这样,我将停止关于聪明使用颜色渐变的争论。我在野外经常遇到并且不推荐的一件事是用指示条的大小的相同度量来着色。例如,下面的视觉效果没有添加任何新信息,颜色渐变只是分散注意力,而不是增加价值:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不添加任何值的颜色渐变示例。这真的只是一道不令人兴奋的彩虹。

这种视觉现在是丰富多彩的,但毫无意义。作为一个在我多年咨询生涯中的某个时刻违反了所有视觉最佳实践的人,请从我的错误中吸取教训。

不要因为工具可用就随意从数据可视化工具箱中抓取工具。对你使用的工具要明智,我的建议是你总是尽量做到简约。不要成为有 1000 个切片的饼状图,没有人能读懂。成为条形图,立即告诉人们他们需要知道什么。

按视图的用户交互

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

另一个香草视觉,但香草是一个经典!

这里没有什么新的东西,但是有了这个可视化,我们现在有了四个表,它们一起将为我们提供一个关于后端数据资产如何影响我们的 Tableau 可视化的相当全面的理解!

把拼图拼在一起

在构建仪表板时,我非常喜欢 z 模式。也就是说,将用户应该首先交互的内容放在仪表板的左上方,然后以 z 模式(左上->右上->左下->右下)跟踪他们的交互,这样他们的最终交互就在仪表板的右下方。

在这个简单的影响分析报告中,我将根据我所称的信息层次来确定工作表放置的优先级。我希望最高级别的信息(层次结构的顶部)在左上角,最细粒度的信息(层次结构的底部)在右下角。

考虑到这一点,我决定将我的数据库表列表放在左上角,将我的 Tableau 项目列表放在右上角,将我的数据源列表放在左下角,最后将我的工作簿和视图列表放在右下角。

它看起来是这样的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就像我之前说的,这个仪表板没有赢得任何设计比赛。但是如果它没有告诉我我需要知道的东西,我会被诅咒的,特别是在增加了一些交互性之后!

这也是在不到一个小时的时间内完成的,所以总要考虑权衡。我确信,如果我们花一个月的时间美化它,我们可以使这个仪表板适合一个美术博物馆,但是这种果汁值得榨吗?随着经验的增长,我发现自己更喜欢实用性而不是外表。但那是个人喜好。出于类似的原因,我也开丰田车。

添加仪表板操作

我已经教授了数百门 Tableau 培训课程,我总是在开始的几分钟内在观众面前建立一个交互式仪表板,展示在 Tableau 中建立一些动态的东西来回答你的问题是多么容易,甚至可能引发你没有考虑过的更重要的问题。

在 Tableau 中,你的工具箱中最好的交互工具之一是动作过滤器(技术上来说是‘过滤动作’,但我认识的每个人都说‘动作过滤器’)。

这些为什么这么棒?它们允许你点击一个工作表中的一个条目,然后 Tableau 自动地过滤其他工作表来反映与你点击的条目相关的数据。

添加动作过滤器有多简单:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

看到我在右上角画的那个可怕的圆圈了吗?单击该按钮。

一次点击,宝贝。您只需点击一下鼠标,就能让您的仪表板完全互动。

单击该按钮后,让我们看看当我们单击该工作表中的某个内容时会发生什么:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这就缩小了范围。

现在我们知道了如果从我们的数据生态系统中删除 TMDB 测试表会发生什么。就 Tableau 而言,这将影响(a)我们的“测试替代”项目,(b)我们的“twb _ 测试(公共)”数据源,以及©我们的“twb _ live _ 雪花”工作簿。

看起来最多有 10 个用户会为此心碎,但在你我之间…我是唯一使用我的测试网站的人,所有 10 个用户都是我。

因此,这是您的速成课程,学习如何使用我们在之前的里程碑中构建的内容来整合交互式影响分析!在今天结束之前,让我们仔细看看我们创建的动作过滤器。

动作过滤器的神秘秘密(队列戏剧音乐)

听着,动作过滤器并不复杂。不要让任何人告诉你他们是。我们点击一个按钮,一个动作过滤器就出现了。如果您想对您的动作过滤器做什么、过滤哪些字段或过滤哪些工作表有更多的控制,那么这一部分正好适合您。

即使我们点击了一个按钮来自动生成我们的动作过滤器,我们也可以从头开始构建它。

在我们的 Tableau 仪表板上,我们可以点击“仪表板”,然后点击“操作…”来查看幕后为我们构建了什么(或者我们自己从头构建)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里没有魔法,只是一个简单的东西,你可以学会为自己所用!

这是为我们生成的内容:“过滤器 1(已生成)”

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果我们点击“编辑”查看一下内部,我们会发现一些关于此过滤器行为的详细信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因此,我们可以看到过滤器的源(触发器)是“数据库表”表,过滤器的目标是仪表板上的所有内容。该过滤器通过在相关源表上的“选择”动作(点击)来执行。

差不多就是这么多了。如果你想自定义你的工作表如何互相过滤,只需在这里编辑这些关系!您可以构建几个操作过滤器(咳咳,过滤操作)并为每个过滤器指定不同的规则。

走之前最后看一眼

为了证明我不是一个只会构建条形图的机器人,让我们来演示一下我创建的另一个可视化工具。我喜欢这个,因为它让您能够看到最近与哪些视觉资产进行了交互。

影响分析过程的一部分是确定什么受到影响,但这最终会变成受影响的资产是否重要的问题。重要性的一个代表是:这个东西在过去的一个月里被使用过吗?过去的半年怎么样?怎么样…永远?

这里有一种方法可以回答这些问题:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

呀,这么多红色。

哎哟。看起来我创造了很多我珍爱的用户(我)从未使用过的内容。我把它归咎于冬天!

包装它

在本文中,我们利用了我们在以前的里程碑中生成的数据,并开始构建交互式数据可视化,以帮助回答各种假设场景。

如果那张桌子倒了怎么办?有多少视觉资产会受到影响?哪些项目?哪些数据来源?这些受影响的视图有多受欢迎?这些视觉效果还在使用吗,或者它们是来自一个失落文明的古老遗迹?

这绝不是一个停止点。这是对你的一个启发,让你把你所看到的应用到你自己的环境中。我坚信任何公司的影响分析报告都不应该是相同的。每个团队都有独特的环境和独特的工作流程,他们用来做决策的工具应该反映这一点。

感谢收听!下次见。

即将到来的里程碑

里程碑 5 (ETA 是 5/20/2020):演示如何从所有站点提取元数据。在里程碑 1 中,我们从元数据 API 中提取数据。默认情况下,该数据特定于您通过身份验证进入的站点。使用 REST API,我们可以遍历所有可用的站点,并提取整个服务器的元数据。

里程碑 6 (ETA 为 5/27/2020):探索 Tableau 新的’ metrics '特性,为方便的 KPI 分析打开了大门。我们将了解一种 KPI 分析方法来查看我们的影响分析数据。

Tableau 服务器影响分析报告:将元数据与 PostgreSQL 相结合

原文:https://towardsdatascience.com/tableau-server-impact-analysis-reports-combine-metadata-with-postgresql-47447b830513?source=collection_archive---------40-----------------------

TABLEAU REST API: TABLEAU-API-LIB 教程

一个关注使用交互式可视化工具跟踪数据传承来提高团队生产力的系列

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用 Tableau 的 PostgreSQL 存储库数据库发送(图片由 Bundo KimUnsplash 上拍摄)

就其本身而言,Tableau 服务器存储库对于任何想要深入 Tableau 环境的人来说都是一座金矿。但是今天,PostgreSQL 数据库并不孤单。在本教程中,我们将探索存储库数据库如何通过元数据 API 为可用的补充数据增添美味,从而构建强大的影响分析报告。

这篇文章继承了我们在之前的教程中的地方,在那里我们演示了如何访问关于工作簿、视图和底层数据库资产的信息(以及它们之间的关系)。

如果你一直怀疑你已经错过了一些重要的东西,那么就去看看这个系列的原始帖子来了解我们正在努力的方向。

让我们开始吧。

我们在本教程中完成了什么(里程碑 2)

在本系列的前一阶段(里程碑 1) ,我们深入到元数据 API 中,为影响分析报告构建了一个坚实的基础。作为复习,这些影响分析报告是 Tableau 可视化,我们可以与之交互,以探索我们的 Tableau 内容和支持该内容的数据源之间的关系。

我们在前面的教程中看到,元数据 API 是一个收集动态信息阵列的优秀工具,能够提供高层次的概述和对细节的细粒度内省,具体到我们的视觉效果所引用的确切数据库列。

虽然元数据 API 自己做了很多工作,但 Tableau 的内部 PostgreSQL 数据库(也称为存储库数据库)中仍然存在大量有价值的数据。

就本教程的范围而言,我们将带着两个非常具体的目标来处理存储库数据库:

  1. 计算用户查看我们每一个视频的次数。
  2. 确定最近的互动日期。

当我说这只是 PostgreSQL 数据库所提供的价值的皮毛时,我一点也不夸张。就个人而言,存储库数据库和元数据 API 都是强大的工具。将它们结合起来,为获得极其有价值的见解和创建专门的交互式影响分析报告的能力铺平了道路。

访问 Tableau 服务器的 PostgreSQL 数据库

如果您在 Tableau Online 上,在撰写本文时(2020 年 4 月),您无法访问内部 PostgreSQL 数据库。

对于 Tableau 服务器上的人来说,你们很幸运!我们将直接使用这个数据库,跳过一些具体的细节。如果你想要更深入的信息,请随意跟随这篇教程,学习如何使用 Python 查询 Tableau 的存储库数据库。

我建议至少看一看上面链接的教程。为了不在本文中重复整篇文章,我们将简单地继续下面步骤,并假设您已经有了用 Python 设置 PostgreSQL 连接的经验。

了解我们正在使用的 PostgreSQL 表

在 Tableau 的内部 PostgreSQL 数据库中有许多表可供我们使用。在我写这篇文章的时候,我计算出我正在使用的“只读”帐户有 235 个可用的表。

这些表中的每一个都发生了什么?如果你是一个 SQL 迷,并且真的想获得内幕消息,那就深入 Tableau 的数据字典中的一些文档。

为了避免分析瘫痪,让我们专注于我们的目标,并解释与我们在本教程中需要的内容相关的表格。当你自己开始玩这个的时候,以后有足够的时间被所有的可能性麻痹。

我们这里的目标是识别任何给定内容的最近交互日期,以及用户与该内容交互的总次数。

我们在上一个教程中提取的元数据是以工作簿和视图(以及它们的底层数据库资产)为中心的,所以让我们放大每个视图(工作表)并提取与该视图最近交互的日期,以及用户访问该视图的总次数。

说到点子上

关于 Tableau 内部 PostgreSQL 数据库的更详细的解释可以写满多篇文章,所以让我们直奔主题,将我们需要的数据放入 Python,这样我们就可以将它加入到我们在上一篇教程中生成的元数据中。

使用这个 GitHub 要点作为相关 SQL 代码的参考:

这个查询只是实现相同目标的许多可行方法之一。

将这些结果与我们的元数据整合

参见本文末尾的合并代码,获取将 PostgreSQL 结果与上一教程中的元数据 API 输出相结合的工作示例。

简而言之,我们将把新数据加入到第一个里程碑中生成的元数据中。两个数据集都被设计为有一个共同的“view_id”列,这使得连接成为可能。

可视化结果

让我们根据综合数据来看看一些基本的视觉效果。这些并不是为了赢得任何选美比赛(我们将把这一点留到后面的教程中),而是展示了我们现在如何获得信息,否则很难获得这些信息。

事实上,我们将这些数据放在一个交互式的 Tableau 仪表板中,这代表了它为桌面带来的大部分价值。有很多假设场景通常是非常乏味的,现在可以通过与 Tableau 中的数据交互来回答。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上面的仪表板允许我们放大至少 60 天没有互动的内容,提供一些关于我们服务器上哪些内容可能过时的见解。我们可以更深入地研究,以发现我们的数据源、表和单个视图的含义。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

也许是时候淘汰一些用红色突出显示的陈旧内容了…

在未来的教程中,我们将会花更多的心思来构建我们的视觉效果。在这里,我们只是展示了一些我们已经取得的快速胜利,现在我们已经结合了我们的元数据和只是我们的 PostgreSQL 数据的味道。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

看来雪花数据从我这里得到的爱最多,但是超市数据紧随其后!

包装它

本教程将我们在第一个里程碑(从元数据 API 获取数据)中学到的知识与从 Tableau 的内部 PostgreSQL 数据库中提取的数据结合起来。这两种信息来源各有特色,将它们结合在一起给我们带来了视角,如果我们局限于使用单一来源,我们就不会有这样的视角。

从这里,我们可以开始构建真正动态的影响分析报告和其他交互式视觉效果,展示 Tableau 生态系统的内部工作方式。

即将到来的里程碑

里程碑 3 (ETA 为 5/6/2020):使用 hyper API 将里程碑 1 和 2 的组合输出转换为. Hyper 提取,并将内容发布到 Tableau 服务器(或 Tableau Online)。

里程碑 4 (ETA 是 5/13/2020):使用里程碑 3 中发布的数据源构建我们的第一个影响分析仪表板。

里程碑 5 (TBD)

合并代码

使用这个 GitHub 要点作为实现第二个里程碑的模板。请记住,这里的代码只是完成工作的一种可能的方法,您可以根据自己的需要修改它。

Tableau 服务器影响分析报告:收集所有站点的数据沿袭

原文:https://towardsdatascience.com/tableau-server-impact-analysis-reports-harvesting-data-lineage-for-all-sites-7c207eef9ca5?source=collection_archive---------53-----------------------

TABLEAU REST API: TABLEAU-API-LIB 教程

一个关注使用交互式视觉跟踪数据传承来提高团队生产力的系列

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

马库斯·斯皮斯克在 Unsplash 上的照片

本系列中的前三个里程碑生成了 Tableau Hyper extract,其中包含来自元数据 API 的数据血统信息、来自 Tableau Server 内部 PostgreSQL 数据库的用户交互信息。第四个里程碑(我们之前的文章)基于该摘录构建了一个交互式 Tableau 仪表板。

在本文中,我们回到第二个里程碑,从元数据 API 中提取数据血统信息。在这里,我们将重新审视这个过程,并将范围扩大到包括 Tableau Server 上所有可用站点的数据沿袭信息。最初,该流程只为我们认证的活动站点提取数据。

如果这是您第一次关注这个系列,为了方便起见,下面是以前的里程碑:

  1. 构建 Tableau 服务器影响分析报告:原因和方式
  2. Tableau 服务器影响分析报告:访问元数据(里程碑 1)
  3. Tableau 服务器影响分析报告:将元数据与 PostgreSQL 结合(里程碑 2)
  4. 构建一个 Tableau Hyper extract 并将其发布为数据源(里程碑 3)
  5. 在 Tableau 中构建交互式影响分析仪表板(里程碑 4)

我们在本教程中完成了什么(里程碑 5)

到目前为止,Tableau 的 REST API 已经为我们扮演了一个使能器的角色。它是我们发布元数据 API 查询的网关,也是我们用来将 Hyper extract 发布到 Tableau 服务器(或 Tableau Online)的网关。

在本教程中,我们将利用’切换站点’端点来遍历服务器上所有可用的站点。这样做允许我们从不同的站点多次执行相同的元数据 API 查询。一旦我们检索了所有站点的数据沿袭信息,我们只需合并结果来构建整合的数据沿袭细节。

如果您习惯于手工从 GraphiQL 接口提取数据,而不是通过 REST API 发出元数据 API 查询,那么这里概述的过程可能会说服您转向 Python。为什么?因为在无代码方法中,您一次只能提取单个站点的数据。通过构建执行代码的自动化流程,我们能够自动化涉及切换站点和对多个站点重复相同查询的过程。

请注意,您的 Tableau 帐户只能看到您有权访问的网站。如果您的目标是为整个服务器构建准确的影响分析,请验证您是服务器管理员。如果您不是服务器管理员,请注意,由于您的用户没有分配相关权限,某些内容可能会对您隐藏。

在我们开始之前,有一个小问题…

即使你是这些教程的专家,在下面的步骤中使用最新版本的库也无妨。

pip install --upgrade tableau-api-lib

扩展我们现有的元数据收集流程

为了避免重复不必要的内容,我将坚持新的内容,并假设您已经熟悉我们在本教程系列的第二个里程碑中完成的内容。

这个里程碑给我们留下了这个 GitHub 要点,我们将在本文中详细阐述。

我们这里的主要目标是将前面代码中的逻辑放入一个循环中,该循环将为我们的每个 Tableau 服务器站点执行。为了让这个迭代过程工作,我们首先需要获得我们想要遍历的站点。一旦我们有了这些网站,我们将建立一个类似这样的过程:

for site in sites:
    <switch the active connection to this site>
    <execute site-specific query>
    <append site-specific results to a server-wide object>

获取要迭代的站点列表

我喜欢使用 Python 库 tableau-api-lib 来处理这样的任务。图书馆里有一个方便的功能,可以拉出一个熊猫数据框,里面有我们网站的详细信息。

from tableau_api_lib import TableauServerConnection
from tableau_api_lib.utils.quering import get_sites_dataframe# establish a connection as seen in the milestone 2 GitHub Gistsites_df = get_sites_dataframe(conn)

产生的 sites_df 看起来像这样:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们真正需要的是名为“contentUrl”的列。当我们调用“切换站点”端点时,这是 REST API 需要的值。在我们的服务器环境中,每个站点的“contentUrl”值都是唯一的。请注意,这与网站名称是而不是相同的东西,尽管在某些情况下它们是相同或非常相似的。

过滤到站点子集(可选)

我发现自己在这个服务器上有多个站点,但是这些站点中有许多与我无关。如果您希望您的服务器上的每个站点都包含在您的分析中,请跳过这一步。然而,如果你只关心网站的一个子集,那么这一部分就是为你准备的。

将我们的数据存储在熊猫数据框架中带来了某些便利。例如,我们可以根据逻辑条件轻松地修剪数据。下面的代码块演示了如何在查询相关元数据之前定义站点子集。

my_sites = ['estam', 'estam2', 'estam3', 'estam_temp']sites_df = sites_df[sites_df['name'].isin(my_sites)]

以下是我的结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

重构我们现有的逻辑并构建循环

虽然我不会去张贴这个重构过程的截图,但请注意,本文末尾的合并 GitHub 要点是我们在第二个里程碑中使用的要点的重构版本。

我将大部分代码放入函数中,努力将我们在这个里程碑中的注意力集中在循环本身上。

下面是最终代码的循环部分:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上面的代码执行以下操作:

  1. 我们定义了一个空的数据帧来存储每个站点的数据
  2. 我们开始一个 for 循环来迭代我们的 sites_df 数据框架中的所有站点
  3. 对于每个站点,我们将 Tableau 服务器连接切换到该站点
  4. 我们发布我们想要的元数据 API 查询
  5. 我们处理并组合这些查询的输出
  6. 我们将单个站点的输出附加到 all_sites_combined_df

下面是一个屏幕截图,显示了多个站点所需的数据现在如何存在于单个 Pandas 数据框架中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下一步是什么?

既然我们可以为多个站点提取元数据,我们可以简单地用这个里程碑的输出替换第二个里程碑的输出。

在我们完成的第三个里程碑中,我们从 Tableau Server 的内部 PostgreSQL 数据库中提取信息。它已经有了我们所有站点的数据,所以当我们将这个输出与那个里程碑的输出相结合时,结果将是我们在这里看到的所有站点的数据。

本教程到此为止!我们已经扩展了我们的原始元数据里程碑,现在我们可以访问所有 Tableau 站点的数据,而不仅仅是我们认证的站点。

这是一个好消息,因为我们现在可以构建覆盖所有网站的影响分析报告,并在 Tableau 服务器上的一个集中位置发布这些报告!当您登录 Tableau Server 时,一次只能看到一个站点的数据沿袭。现在,您已经拥有了构建单个报告的必要工具,该报告在一个位置提供了所有信息。

合并代码

使用这个 GitHub 要点作为将本教程集成到您自己的工作流程中的起点。

即将到来的里程碑

里程碑 6 (ETA 为 5/27/2020):探索 Tableau 新的“指标功能,这为方便的 KPI 分析打开了大门。我们将了解一种 KPI 分析方法来查看我们的影响分析数据。

Tableau 服务器影响分析报告:元数据、发布和使用 API

原文:https://towardsdatascience.com/tableau-server-impact-analysis-reports-metadata-publishing-and-using-apis-54b203fdd183?source=collection_archive---------49-----------------------

TABLEAU REST API: TABLEAU-API-LIB 教程

一个关注使用交互式视觉跟踪数据传承来提高团队生产力的系列

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Tableau 元数据现在就在你的手中(图片由 Rohan MakhechaUnsplash 上拍摄)

在本系列的前三篇文章中,我们介绍了 Tableau 的元数据 API 和内部 PostgreSQL 数据库,并展示了如何将它们结合起来构建强大的数据集,从而推动我们的影响分析工作。

如果这是您第一次关注这个系列,为了方便起见,下面是以前的里程碑:

  1. 构建 Tableau 服务器影响分析报告:为什么和如何
  2. Tableau 服务器影响分析报告:访问元数据(里程碑 1)
  3. Tableau 服务器影响分析报告:将元数据与 PostgreSQL 结合(里程碑 2)

我们完成的最后一个里程碑留给我们一个 CSV 文件,它包含元数据 API 输出(我们的影响分析的核心)和 PostgreSQL 输出(增加了额外的味道,包括用户查看次数和最后交互日期)。

我们在本教程中完成了什么(里程碑 3)

本文探讨了一些相关的后续步骤:一旦我们获得了想要的数据,我们应该如何存储这些数据?我们能否发布数据,以便其他 Tableau 用户可以自由构建自己的交互式报告?

处理这些数据的一个可行的方法是将其转换成 Tableau。超提取并发布到 Tableau 服务器。这是我们将在下面的章节中关注的。

到本文结束时,我们将有一个建立在先前里程碑基础上的工作流,将数据打包成一个表格。hyper 提取并发布数据到我们的 Tableau 环境中。

认识你的新朋友:Tableau 的 Hyper 和 REST APIs

两个新工具进入本文:Tableau 的 Hyper APIREST API 。请注意,如果您以前有过使用 Tableau 的遗留提取 API 或遗留 Tableau SDK 的经验,那么 Hyper API 是您今后(Tableau 10.5 以上)构建提取文件时应该使用的。

Hyper API 允许我们创建高性能的数据提取,并允许我们从这些提取中添加或删除数据。的。hyper extract 文件是 Tableau 世界中的一等公民,所以与继续使用 CSV 或 JSON 文件的替代方案相比,这对我们来说是一种升级。

你可以去寿司店点通心粉和奶酪,但是谁会这么做呢?Tableau 中的数据存储也是如此。Tableau 已经构建了一个完整的提取引擎,为什么还要在 Tableau 服务器上使用 CSV 呢?超级文件?点该死的寿司。

一旦我们有了。hyper extract 文件准备就绪,我们将把接力棒传递给 Tableau 的 REST API,将摘录作为数据源发布在 Tableau 服务器(或 Tableau Online)上。

这里没有什么特别的,只是两个简单的用例,它们建立在 Tableau dev 团队提供的一些优秀工具的基础上。向 #DataDev 社区大声喊出来!

从我们离开的地方继续

如果您需要赶上进度,请随意向上滚动到顶部,然后单击将带您完成早期里程碑的步骤的文章。

在下面的部分中,我们从第二个里程碑结束时停止的地方继续。我们拥有构建定制影响分析报告所需的核心数据,现在我们希望将这些数据放入. hyper extract 中,并将其发布到 Tableau Server(或 Tableau Online)。

使用超级 API

本着将所有各种工具放在一个屋檐下的精神,我使用 Python 作为编排所有各种工具的霸主。下面是我们如何使用 Hyper API 将现有数据转换成. hyper extract。

让我们首先定义一个本地文件路径。hyper 文件将被存储(这建立在之前的里程碑中已经开发的 Python 代码之上——完整代码请参见本文末尾的综合 GitHub 要点):

PATH_TO_HYPER = 'tableau/datadev_round2/workbooks_and_owners.hyper'

我从 Hyper API 文档中借用了一些模板代码,并对其进行了修改,以构建熊猫数据帧的摘录,如下面的 GitHub 要点所示。本文末尾包含了包含整个过程的合并代码。

这个 GitHub 要点涵盖了与本节相关的代码片段,但是请注意,单独运行它是行不通的(请使用本文末尾的合并 GitHub 要点)。

在我自己的测试中,我还需要对数据帧进行一些清理,以使 Hyper API 不会抱怨某些输入为空。特别是,当从 pandas DataFrame 转移到. hyper extract 时,datetime 和 date 列一直是我的眼中钉,所以我倾向于强制 date 列键入“str ”,然后在 Tableau 中将该文本转换回日期。这样就避免了担心日期是用日期、日期时间、时间戳还是任何其他特定的日期格式来表示的麻烦。

正在发布。您的 Tableau 环境的超级文件

现在我们有了提取文件,让我们把它推送到 Tableau 服务器(或者 Tableau Online)。这里我将使用的库是 tableau-api-lib ,它是我开发和维护的。它被设计成镜像在 Tableau 的 REST API 引用上找到的 REST API 端点。

这个库与其他 Python / Tableau REST API 库(比如 Tableau 自己的 Tableau 服务器客户端库)的主要区别在于,这个库的设计使得如果您在 Tableau 文档中看到一个端点,那么该端点将使用相同的命名约定来实现。

例如,现在我们需要发布一个数据源。查看 Tableau Server REST API 参考,我们找到了期望的端点:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

“发布数据源”端点的 tableau-api-lib 实现为我们提供了一个实例方法,我们可以这样调用:

conn.publish_data_source(<arguments to function go here>)

让我们把摘录出版吧!但是在我们发布它之前,我们需要知道我们要发布到的项目(更重要的是,项目 ID)。

我们可以使用 tableau-api-lib 轻松地获取有关项目的信息(注意,示例代码中的“conn”表示到 tableau 服务器的连接——有关更多详细信息,请参见本文末尾的完整代码):

projects_df = get_projects_dataframe(conn)
print(projects_df[['name', 'id']]

下面是我的“项目 _df”的样子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在让我们将摘录发布到我的“Test Alt”项目中。

response = conn.publish_data_source(
datasource_file_path=PATH_TO_HYPER,
datasource_name='Impact Analysis Milestone3',
project_id='4d17b456-e50f-47a9-8551-38d6bae85911')

我们现在可以查看“response”变量内部,以验证此发布请求是否成功:

print(response.json())

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

连接到。带有 Tableau 桌面的超级文件

现在摘录已经发布,我们可以验证它在 Tableau 服务器上,我们可以用 Tableau Desktop 连接到它来构建我们的视觉效果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是我在 Tableau Desktop 中创建的一个快速视觉效果,它连接到已发布的摘录:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

看起来,如果雪花或超市出了什么事,我的“默认”项目将受到最严重的打击。

关于我之前如何处理日期字段的一个小注意事项:因为我连接到一个已发布的提取,我需要构建一个计算字段,使用 Tableau 的 date()函数将我的每个“日期”字段转换成一个日期。

这一点也不困扰我,因为我已经因为不得不替换数据源而焦头烂额了很多次,我总是为我的字段建立占位符计算,并试图避免使用“原始”字段,因为它们会出现在 Tableau 中。但那是另一篇文章的话题了!

包装它

对于本教程来说,这就是我们的前两个里程碑(利用元数据 API 和内部 PostgreSQL 数据库)并将数据存储到 Tableau 中。超精华。

敬请关注下一个里程碑,我们将进一步了解如何在 Tableau 仪表盘中使用这些数据来构建交互式影响分析视觉效果!

即将到来的里程碑

里程碑 4 (ETA 是 5/13/2020):使用本文中发布的数据源构建我们的第一个影响分析仪表板。

里程碑 5 (ETA 是 5/20/2020):演示如何从所有站点提取元数据。在里程碑 1 中,我们从元数据 API 中提取数据。默认情况下,该数据特定于您通过身份验证进入的站点。使用 REST API,我们可以遍历所有可用的站点,并提取整个服务器的元数据。

里程碑 6 (TBD)

合并代码

使用这个 GitHub 要点作为实现我们第三个里程碑的模板。请记住,这里的代码只是完成工作的一种可能的方法,您可以根据自己的需要修改它。

代码开始变长了(大约 300 行)。我是否建议让您的生产代码看起来像这里这样?没有。但是,将所有内容都放在一个文件中有利于概念验证的启动和运行。我将由您来决定如何将它集成到您自己的工作流中。

Tableau 教程:组和层次+一点额外的

原文:https://towardsdatascience.com/tableau-tutorials-groups-hierarchies-a-little-extra-6e4c5d2d5cc9?source=collection_archive---------49-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由 麦克 发自 像素

欢迎来到我正在进行的 Tableau 教程系列的第四篇。这个博客将分为两部分,第一部分介绍组和层次结构,第二部分介绍使用计算和参数的集合和动态分组。在过去的博客中,我已经讨论了基本的数据——连接到仪表板、计算和过滤,同时非常简短地讨论了组和层次结构。在这篇文章中,我将深入到组和层次结构的更详细的解释。

当处理大型数据集时,您可能会得到比帕台农神庙更多的列。为了我们的理智和易于分析,我们希望能够以某种方式对我们的数据进行排序和分组。Tableau 为我们提供了使用集合、组、层次结构的选项,以及前面提到的根据数据或用户输入动态更新的分组的计算和参数。

首先,让我们回顾几个快速简单的概念。首先让我们考虑订购我们的数据。这通常是一项简单的任务。在这个例子中,我将使用来自电子商务网站的数据。如果我们想要查看购买最多商品的顶级用户列表,我们可以将适当的药丸拖动到列和行中来构建我们的图表。在这里,我们可以通过单击图表上的行轴或列轴上的下降条图标来轻松地对值进行排序。在这种情况下,我们希望对计数进行排序,因此我们单击列轴来显示具有最多实例或购买的用户 id。要按升序排序,我们只需再次单击同一个图标。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因为我们正在使用分组,所以让我们一直深入到最细粒度的层,也就是原始数据源。有几种方法可以查看数据源。我们可以单击看起来像数据表的图标,以及它上面的选定数据源,以查看一个弹出窗口,其中包含整体数据的视图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了获得更具体的信息,我们还可以单击图表中的任何一点,弹出一个窗口,显示各种选项,包括相同的数据图标。我们只需单击它,然后从随后窗口的底部,从“Summary”选项卡切换到“Full Data”选项卡。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

既然我们可以向下钻取并查看我们的数据,那么让我们看看如何用层次结构对数据进行分组。顾名思义,这种方法涉及某种类型的顺序关系,允许您深入了解更多细节。例如,任何日期时间变量都会自动分组到一个层次结构中,允许您从年到月到日到小时进行钻取。在这个例子中,从 Data Source 选项卡,我将 Category Code(显示购买的项目,其间有句点以指示子类别)字段拆分为 General Category、item 和 Item Type 子类别。

若要创建层次结构,请将所需的字段标识为层次结构的第二级。将该字段拖放到您想要指定为顶级的字段上。在这种情况下,我希望 General 类别显示为顶层,所以我将项目 pill 拖动到 General 类别 pill 的顶部。从这里将出现一个窗口,我可以在其中命名层次。我称我的为“已购买项目”。您可以看到,在 Tables 部分中,药丸被分组到新的层次名称下。要添加更低的级别,我们只需将想要添加的药丸拖放到层次结构下的适当位置。当层次结构组成后,我们可以将它移动到列和行字段来构建我们的图形。要在层次结构中向下钻取,我们单击层次结构药丸中的加号,相反,要向上钻取,我们单击减号。为了构建下面的图表,我一路向下钻取,然后按项目数排序,如前所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以组合字段中相关值的另一种方法是使用 Tableau 组。我们来举个例子。假设我们想要突出显示用层次结构生成的图表中“General Category”列下的计算机和电子产品值。在该视图中,我们可以按住 command 并单击计算机和电子设备字段,此时会出现一个弹出窗口。在此窗口中,我们单击回形针图标对这些值进行分组。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

视图中的结果组将组合名称,但我们可以简单地右键单击并在“编辑别名”下将其重命名为“所有电子”。我们还可以在 Tables 部分下重命名生成的药丸。从这里,我们可以将药丸拖动到颜色部分,并从药丸下拉菜单中选择包括“其他”以根据我们的选择和“其他一切”进行分组。这使得我们能够突出显示该分组部分。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果仅用视图进行分组很困难,我们也可以在“表格”部分右键单击我们想要分组的药丸,然后将鼠标悬停在“创建”上,然后单击“分组”,这将弹出一个菜单,我们可以在其中选择适当的字段。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在菜单中,我们还可以单击查找>>来搜索值。当我们选择了我们的字段,我们可以点击组,然后重命名。如果我们想将另一个类别添加到组中,我们单击该类别,然后在标有“添加到:”的下拉菜单中,我们可以选择它应该加入哪个组。从菜单中,我们还可以通过选择组,然后单击“取消分组”,轻松地选中“包括‘其他’”和“取消分组”。要编辑群组,请访问药丸的下拉菜单,然后单击“编辑群组…”。

分组是分离您感兴趣的值的一种强大且快速的方法。它还可用于修复拼写或数据输入错误,这些错误会导致多个字段,而实际上应该只有一个字段。使用一点脑力可以产生有趣和有用的方法来分组数据进行分析。遵循我的中等配置文件,并在下周详细了解集合和动态分组。

Tableau:释放视觉分析的力量

原文:https://towardsdatascience.com/tableau-unleashing-the-power-of-visual-analytics-3376ccf0c1f8?source=collection_archive---------28-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我用 Tableau 创建的仪表板示例

是什么使 Tableau 成为一个无可挑剔的数据可视化工具,为什么你应该使用它!

大约一个月前,我决定挑战自己,学习更多关于数据可视化的知识。在多次谷歌搜索寻找最佳数据可视化工具后,有一款产品不断脱颖而出, Tableau 。我决定安装它,试一试。作为一名学生,我可以免费使用它。然后,我打开它,看到一个大页面要求我连接数据或打开工作簿。我不知道下一步该做什么。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

打开后的画面。

困惑之余,我查阅了许多关于如何使用 Tableau 的在线资源,并偶然发现了本·琼斯的用 Tableau 交流数据:设计、开发和交付数据可视化一书。我强烈推荐这本书。对于对利用 Tableau 的数据可视化能力感兴趣的初学者来说,这是非常简单明了和有用的。

它教会了我如何使用分类数据和连续数据来创建不同种类的图表,如条形图、时间序列图、散点图、箱线图和地理图。此外,我学会了如何使用过滤器、页面、标记等功能来创建高质量的工作表。最后,我找到了利用仪表板特性来构建交互式可视仪表板的窍门,这些仪表板可用于向人们讲述故事。

Tableau 是一个众所周知的快速分析和快速商业智能平台,没有更好的方式来描述它。我在过去一个月里对 Tableau 的体验非常令人兴奋。下面是一个简短的总结,介绍如何使用 Tableau 来构建漂亮的交互式视觉界面。

加载数据:

与 Python、R 或任何其他数据科学编程语言不同,Tableau 不需要您运行多行代码来加载数据、转换数据和创建图表。一旦你习惯了,这是非常简单的。你只需要通过将 Tableau 连接到服务器或本地文件来上传数据。一旦连接了数据,您就可以访问工作表并开始构建图表。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Tableau 上的空工作表

构建和更改图表:

我喜欢 Tableau 的另一个方面是,我可以通过从 table 部分拖动字段并将其与用于创建工作表的功能集成来轻松构建图表。构建工作表的基本功能是列、行、过滤器、标记和页面。

当有人试图移动字段或操作要素时,可以立即在工作表上发现变化。我还可以使用演示功能来更改我的图表。我不再需要编辑我的代码,重新运行它,等待得到不同的输出。当你使用它时,它会不断变化。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

左图是 2020 年基于收入的地图。右图是基于 2020 年人口的地图。

在上面的图表中,通过删除 marks 部分下包含收入的绿色条,并在几秒钟内用 population 替换它,进行了更改。

交互式仪表盘:

在工作簿中构建多个工作表后,可以将它们组合起来构建一个仪表板。Tableau 上的仪表盘可以按照你认为合适的方式进行交互。当观众/演示者与仪表板交互时,仪表板在图表中绘制见解或显示活动。这使得仪表板在讲述故事或提供高质量信息时非常有用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

交互式仪表板的一个例子

通过 Tableau Public 共享项目:

一旦建立了仪表板,用户可以决定在 Tableau Public 上与 Tableau 社区的其他成员共享它。这是通过创建一个 Tableau 公共帐户,并使用页面上的服务器功能,通过使用您的凭据登录,将仪表板连接到 Tableau 公共帐户来完成的。上传仪表板后,还可以添加仪表板的详细信息。

Tableau 是一个美丽的平台,我在过去的一个月里学会了如何使用它,我将在未来继续使用它。使用它让我对学习如何使用其他数据科学或数据可视化工具充满热情。首先,我很高兴见到了 Tableau。

下面是我通过重现汉斯·罗斯林的著名视频Stats 的喜悦 制作的视频。它显示了从 1800 年至今,不同国家的预期寿命和收入是如何变化的。我用我的 Tableau 知识建立了一个预期寿命与收入的散点图,并制作了一个交互式仪表盘。

预期寿命与收入的历史

感谢您的阅读。

Tableau 可视化

原文:https://towardsdatascience.com/tableau-visualizations-dc9e544dc9a8?source=collection_archive---------19-----------------------

了解如何在 Tableau 中创建基本图表

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

斯科特·格雷厄姆Unsplash 上拍照

什么是 tableau?

Tableau 是一款端到端、强大、安全、灵活的交互式可视化分析软件,用于商业智能行业。它正在改变我们使用数据来发现和解决问题的方式。众所周知,它是发展最快的数据可视化平台之一。它的基本功能是将原始数据转换成易于理解的可视化数据,供许多个人和组织用于问题分析和决策制定。

为什么要用 tableau?

  • 首先,使用 Tableau 执行数据分析是一个快捷方便的过程。
  • 它的形象化很容易理解。由于其用户友好性,组织中任何职位的人都会发现它易于使用。
  • 它的可视化不仅易于查看,而且易于创建。任何有技术甚至非技术背景的人都可以使用 Tableau 创建可视化效果。
  • 数据混合和实时分析是 Tableau 众多重要功能中的一部分。
  • 这是一个可以应用于任何业务以获得清晰见解的软件。
  • Tableau 提供对数百个数据连接器的支持。列表可以在这里找到
  • Tableau 有一个庞大的社区,在 Twitter 上非常活跃,人们使用标签,比如:#改头换面星期一
  • 创建的仪表板可以作为动态可视化共享。如果给定平台不支持动态可视化,那么用户也可以选择将其导出为静态可视化。

如果你仍然不确定 Tableau 是否适合你,我建议你阅读下面的文章: Excel,Tableau,Power BI…你应该使用什么?

Tableau 产品:

让我们从这个教程开始吧。

注册 Tableau 公共帐户

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

a.转到public.tableau.com

b.点击右上角的注册

c.填写你的详细资料并记下来

安装 Tableau 的 14 天完全免费试用版

a.前往 Tableau 桌面:https://www.tableau.com/products/trial

b.输入您的电子邮件地址并下载免费试用版。如果你有一个学生或教师帐户,你可以获得一年的免费许可证。

c.一旦应用程序被下载,注册自己。

你可以在这里找到这篇教程的参考资料。

让我们启动应用程序,并探索应用程序的主要组件。

第一次打开 Tableau 桌面应用程序时,会出现以下窗口。在此窗口的左侧窗格中,我们有不同的选项来连接不同的数据源,如 Tableau Server(您可以将报告直接发布到服务器)、Microsoft Excel、JSON File、Microsoft SQL Server、Google Analytics、MariaDB、MySQL 等。

在底部,tableau 提供了一些提供介绍的示例工作簿。

在右侧窗格中,我们有一些培训资源,可以帮助您更好地了解 Tableau 及其服务和功能。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

准备数据

在本教程中,我们将导入 excel 文件形式的数据

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

导入数据后,出现的窗口称为数据源窗口。

在左侧,我们有“连接”,它显示了您可以连接到的数据源。您可以在“连接”部分更新、编辑或删除选定的数据源。

下一部分是“文件”部分,通常显示数据源中的表格。

在它下面,我们有一个 Union 函数,允许您将数据追加到表中。例如,如果您有两个相似的雇员数据文件,您可以使用 union 选项来合并它们。

在 Union 选项的右侧,我们看到了表格的预览

在每个字段名的上方,我们有一个代表字段类型的图标,它由 Tableau 本身识别,可以通过点击它来修改。

在右上角,我们有另一个连接选项。在这里,Tableau 允许我们选择想要与数据建立的连接类型:实时连接或提取连接。

默认情况下,将选择实时选项。当您选择“提取”时,过滤器选项出现,这是一个非常重要的功能。使用过滤器,我们可以在我们已经过滤的特定数据上构建数据,这意味着我们不能使用我们已经过滤掉的数据。

要添加过滤器

a.点击右上角的“添加”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

b.单击出现的窗口中的添加按钮。

c.选择要在筛选器中使用的字段。例如:城市

d.在所选字段中选择您要过滤的值,然后单击“确定”

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

要编辑/删除过滤器

a.点击右上角的“添加”

b.在出现的窗口中,单击要编辑/删除的添加字段。

c.根据您想要执行的操作,选择“编辑”或“删除”按钮。

d.点击“确定”。

现在我们已经了解了过滤器的工作原理,让我们继续学习教程并开始创建图表。

选择窗口左下角的“第 1 页”选项,并选择您要存储摘录的位置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在,在左边我们可以看到我们连接的数据源。当您右键单击数据源时,您可以使用各种选项,如刷新、编辑、复制等。

在那下面,我们还有两个窗格:维度和度量

通常以蓝色显示的尺寸包含细分类别中的数据。你不能对它们进行数学运算。比如你不能把两个类别相乘。

通常用绿色表示的度量是维度的反义词。这意味着我们可以将两个场相乘。

您可以通过右键单击将度量移至维度。在这里,我们将右键单击“销售代理 ID”并将其从度量移至维度

请注意,像纬度和经度这样的字段在我们的数据集中并不存在,而是由 Tableau 在读取城市、州、地区等字段时自动添加的。

创建图表

简单的方法是将类别拖到“行”和“列”字段中。

让我们将“区域”类别拖到行中,将“销售”类别拖到列中。Tableau 然后自动为我们创建一个条形图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 Tableau 桌面的右上角,我们有“演示”选项,Tableau 显示各种类型的图表,我们可以用它们来可视化我们的数据。

要清除工作表,您可以单击“清除工作表”图标。

要撤消或重做图表上的操作,可以单击应用程序左上角的箭头按钮。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

现在让我们创建一个可视化视图来按月查看销售额。

首先,将“订单日期”拖到列中,单击它旁边的箭头并选择“月份”,因为我们希望按月查看我们的销售额。

你可能会注意到,有两个部分的年,季度,月等。第一部分仅表示日期的一部分,但第二部分显示月份和年份,因此我们将从第二部分中选择月份。

列字段以前是蓝色的,现在变成了绿色。这是因为我们把年份改成了月份。蓝色表示场是离散的,绿色表示场是连续的。连续基本上意味着连续的数据点。因为时间是连续的,所以它是绿色的,而像类别这样的字段是绿色的,因为类别彼此不相关,它们是离散的。

接下来,要按月显示我们的销售额,我们需要将“销售”类别拖到行字段中。当你这样做时,Tableau 自动将“SUM”操作添加到 Sales 类别中,这基本上意味着它对数据集的每一行进行求和。要查看除 SUM 之外要在数据集字段上执行的其他操作,请单击它旁边的箭头。现在我们将离开操作是一个总数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来,让我们以这样一种方式来改变可视化效果,即用户可以按特定年份的月份来查看销售额。为此,我们需要按年份过滤数据集,因此将订单 ID 字段拖到“过滤器”卡上,并选择年份。然后选择特定的年份,在我们的例子中是 2019 年,最近的一年。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

让我们整理一下我们的销售额,因为它是一种货币。因此,请转到“Measures”下的“Sales”字段,单击“Default Properties”并选择“Number Format”选项,因为这是我们打算更改的内容。然后选择“货币(标准)”并选择“英语(美国)”,因为我们的销售货币是美元。之后,转到“货币(自定义)”,将小数位数更改为 0,然后单击“确定”。您的图表应该如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来,我们引入一条平均线。

在窗口左上角的“分析”窗格中,将“平均线”选项拖到出现在窗口中的表格选项中。

要进一步自定义该行,请单击该行并转到编辑。选择一个自定义标签并输入“平均值:

此外,你可以选择线的类型,它的颜色等。

动态更改工作表的标题

双击图表中的“工作表 1”。清除当前数据。写下“销售日期”,并在其前面添加一个动态日期,单击此窗口右上角的插入,并选择“年份(订单日期)”。

此外,您可以更改标题的字体类型或大小,将其加粗并居中对齐。

要检查我们的动态标题是否有效,或者只是查看不同年份的数据,右键单击“YEAR(Order Date)”过滤器,然后选择“Show Filters”选项。选择或取消选择任何年份,查看标题如何根据所选年份动态工作。

自定义图表

在标记窗格中,我们可以更改线条的颜色和大小。

要在每个点上添加标签,请将“销售”指标拖放到“标记”下的“标签”字段中。要修改标签,右键单击它,转到格式,单击默认下的“数字”,转到货币(自定义),将十进制值更改为“0”,并将数据前缀更改为“$”。

继续自定义标签,右键单击“标记”窗格下的“标签”,并在“字体”部分编辑字体,如下面的视频所示。

要进一步自定义图表,请右键单击图表上的任意位置,然后选择“格式”选项。您可以在“格式”窗格的“工作表”字段下更改字体样式。在本节中,您可以继续探索更多的功能。

除了这一部分的图标,我们有对齐部分,其次是阴影部分。在阴影部分,您可以更改图表的背景颜色。

要删除网格线,请单击“线条”选项,并将“网格线”字段更改为“无”。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

添加新工作表

首先,让我们双击当前工作表,将其重命名为“按年销售”。您可以通过单击窗口底部当前工作表名称右侧的“新建工作表”按钮来添加新工作表。然而,为了我们的教程,我们将右键单击我们当前的表并复制它。让我们将这个复制的图表重命名为“按类别销售”。

正如新工作表的名称所示,我们现在将在该工作表中创建一个不同的图表。从“列和行”节中删除“月”(订单日期)和“总额”(销售额)字段。相反,将 SUM(Sales)和 Category 字段分别从左窗格拖到 Columns 和 Rows 部分。这将自动为您创建一个条形图(如果没有,请选择窗口右上角的演示部分下的条形图选项)。

现在,我们可以通过在顶部窗格中将图表的适合度从标准更改为完整视图来增加条形的宽度,如下所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

再次添加标签,将“销售”字段拖动到“标记”窗格下的“标签”部分

请注意,由于我们复制了我们的工作表,前一个工作表中的设置在这里仍然是相同的。例如,文本是粗体的,没有网格线,等等。

Tableau 的另一个功能是可以根据数据改变条形的颜色。为了更好地理解这一点,尝试将“销售”度量拖到“标记”窗格下的“颜色”上,它将显示如下。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

蓝色最浅的条形销售额最少,蓝色最深的条形销售额最多。Tableau 在这里显示蓝色作为默认配色方案,但我们可以通过在“标记”窗格中单击“颜色”并编辑颜色来轻松选择不同的颜色组合。为了与之前的图表相匹配,我们将选择绿色作为条形图的配色方案。

为了对条形图进行排序,我们在顶部窗格中有一个升序和降序选项。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

直方图

复制“按类别销售”表,并将其重命名为“产品/订单”。拖出并删除过滤器中除“年份(订单日期)”字段之外的所有字段。现在让我们创建一个直方图,看看在一个订单中是否售出了 2 个或更多的产品。为此,双击“数量”测量,并在“演示”选项中选择“直方图”。您希望确保容器大小为 2,因此右键单击“数量(容器)”维度,并将容器大小编辑为 2。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个柱状图告诉我们的是,有 337 个订单的数量在 0-2 之间,1450 个订单的数量在 2-4 之间,以此类推。像我们之前更改其他图表的颜色一样更改直方图的颜色,以便我们在最后创建的仪表板的主题是统一的。您也可以通过按住 Ctrl 键并将 CNT(数量)从行拖动到标记窗格下的标签字段来添加数量标签。此外,双击图表的标签,因为这是一个不同的图表,而不是我们复制此工作表的图表。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

地图

复制直方图,并像我们之前做的那样将其重命名为“销售图”。将图表的标签也更改为销售地图。在开始绘制地图之前,我们需要创建一个层次结构,因为 Tableau 需要知道哪个是您的州字段,以及该字段链接到哪个国家。若要创建层次结构,请将“州”、“城市”和“邮政编码”维度拖到“国家/地区”维度上。确保您保持了层次结构,即首先必须出现“国家/地区”维度,然后是“州”、“城市”和“邮政编码”。如果出现错误,您可以随时将这些字段上下移动。此外,将层次结构拖到标记窗格下的“详细信息”字段。出现一张地图。您可能还注意到,“国家/地区,州”字段出现在标记窗格中,其左侧有一个“+”号。当您点击它时,下一个版本的层次结构就会出现,让我们开始吧。现在,双击“销售”度量,将销售值添加到地图中。此时,您的地图应该如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们还可以在地图上以不同的方式显示我们的数据。只需转到演示并选择地图图表。(上图是一个符号图表。)就像我们前面所做的那样,我们可以通过在拖动“销售”字段(因为这会创建字段的副本)的同时按住 Ctrl 键,将“销售”的标签添加到我们的地图中,该字段已经存在于“标记”窗格中。要进一步格式化此标签,请右键单击并选择格式化。在“默认”下的“数字”字段中,将显示单位更改为千(K)。我们的地图现在看起来像这样。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

卡片

像往常一样,复制以前的“销售地图”表,从标记窗格中拖出所有字段以及行和列。双击 Sales Measure,转到“演示”并选择应该是第一个选项的文本表。让我们对此进行一些定制。在顶部窗格中,将“标准”调整为“整个视图”。在“标记”窗格中,单击“文本”并增加字体大小,将对齐方式改为居中。现在我们的销售卡准备好了。您可以使用相同的方法为不同的类别创建卡片。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

创建仪表板

要创建仪表板,请单击窗口底部的“新建仪表板”按钮。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

您创建的所有工作表都将出现在窗口的左侧。让我们将仪表板的大小更改为 1400 像素和 900 像素。此外,如果您希望更改仪表板背景颜色,您可以转到窗口顶部的仪表板选项并选择格式选项。

要将可视化添加到仪表板,只需将它们拖放到仪表板上。要隐藏可视化的标题/标签,右键单击并选择隐藏标题选项。这就是你的第一个仪表盘

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

目前,我们的仪表板正在显示 2019 年的销售数据。如果我们添加一个过滤器,用户可以选择年份,并相应地查看特定年份的所有可视化效果。为此,单击任何图表,并在过滤器选项下选择“订单日期年份”。这就是我们的过滤器。我们可以通过单击它旁边的箭头并选择“多值下拉”选项,将其更改为下拉过滤器。要确保此过滤器适用于选择特定年份的每个图表,请右键单击过滤器并转到“应用于工作表”下的“所选工作表”,选择“全部在仪表板上”选项,您就可以开始了。

发布仪表板

最后,让我们将仪表板发布到 Tableau public。为此,单击窗口顶部的“服务器”,输入您的登录详细信息,命名您的仪表板。

本文到此为止。我希望你喜欢用 Tableau 可视化数据。

谢谢你阅读它!

Tableau vs. R Shiny:哪个 Excel 替代品适合你?

原文:https://towardsdatascience.com/tableau-vs-r-shiny-which-excel-alternative-is-right-for-you-488da22e82b6?source=collection_archive---------16-----------------------

意见

R Shiny 和 Tableau 之类的拖拽可视化工具相比如何?

截至 2020 年底,有许多 dashboard/reporting/BI 工具,其中最受欢迎的是 Tableau、PowerBI 和 R Shiny 。问题很快就变成了— *“我如何为我的特殊需求确定合适的工具?”*今天,我们将比较财富 500 强公司最广泛使用的两种工具:

  • Tableau -一个用于数据分析的直观和简单的拖放解决方案
  • 用 R 编写的 web 框架,广泛用于制作仪表盘和交互式 web 应用程序

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

让我们弄清楚一件事——R Shiny 不是一个报告/仪表板工具。大多数人用它来做仪表盘,所以我们可以认为这个比较公平。如前所述,R Shiny 一个完整的 web 框架。与 Tableau 等工具相比,它带来了一些明显的好处和一些需要注意的事项。

我们将检查 Tableau 和 R Shiny 相互竞争的以下领域,并宣布每个领域的获胜者(或平局):

  • 连通性
  • 图表类型
  • 易用性:简单的图表
  • 易用性:简单的仪表盘
  • 用户输入和交互性
  • 视觉造型

连通性

Tableau 提供了两个与数据连接相关的选项。首先,你可以连接一个本地文件——比如 CSVExcelJSONPDFSpatial 等。或者,您可以连接到远程服务器。选项太多了,无法一一列出,所以这里有一个当前产品的截图(2020 年末):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所以是的,Tableau 有很多选择。另一方面,R Shiny 使用 R 作为编程语言的选择,所以 Shiny 可以连接到 R 可以连接的任何源。就像它的竞争对手一样,这里的选择是无限的。一个简单的 Google 搜索将会产生一个预制的库或者任何数据源类型的 API 调用示例。

对于特定领域的来源,R Shiny 有时会有优势。例如,使用 R Shiny,您可以加载和分析基因表达数据或 CAD 文件。这些来源对 Tableau 来说可能是个问题。

赢家(连通性):平手,在特定领域的情况下,R 的边发亮

图表类型

再一次,Tableau 在这里并不缺乏,它有过多的可视化选项,如条形图、饼图、折线图和面积图,甚至还有更复杂的选项,如地理图。完整列表请参考下图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

尽管如此,R Shiny 在图表类型的可选性方面击败了竞争对手。使用最广泛的可视化库是ggplot2Plotly。以下是你可以用ggplot2制作的可视化类型的概述:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:https://www.r-graph-gallery.com

这里有一些你可以用Plotly做的很酷的事情:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:https://plotly.com/r/

就图表选项而言,赢得这场战斗是显而易见的。

赢家(图表类型):R 闪亮

易用性:简单的图表

现在,我们将看到在 Tableau 和 R Shiny 中创建一个简单的条形图需要经历的困难程度。出于演示的目的,我们将使用 Titanic 数据集,因此如果您想继续学习,请下载此处链接的 CSV 文件。更准确地说,我们将创建一个条形图,在 x 轴上包含乘客等级,在 y 轴上包含平均年龄

让我们从 Tableau 开始。数据导入后,创建可视化相对容易。只需遵循下图中的步骤:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这非常容易,因为 Tableau 被设计成对非技术人员来说直观和简单。这种易用性伴随着被称为可定制性的成本,但稍后会有更多的介绍。

用 R Shiny 创建一个简单的图表是完全不同的事情。我们需要编写实际的代码来得到一个简单的条形图。首先,我们需要以某种方式聚合庞大的数据集,这样我们就有了一个简洁的、可视化的数据格式。接下来,我们需要引入一些样板文件来管理 UI 和服务器。它只有几行代码——对于较大的项目来说可以忽略不计,但是对于非技术人员创建简单的图表来说却是一个真正的障碍。

请参考下面的代码:

library(shiny)
library(ggplot2)

ui <- fluidPage(
    plotOutput('bar')
)

server <- function(input, output) {
    output$bar <- renderPlot({
        pclass_age_data <- titanic %>%
            select(Pclass, Age) %>%
            group_by(Pclass) %>%
            summarise(Age = round(mean(Age, na.rm=TRUE), 2))
        ggplot(data=pclass_age_data, aes(x=Pclass, y=Age)) +
            geom_bar(stat='identity', fill='steelblue') +
            geom_text(aes(label=Age), vjust=-0.3, size=5)
    })
}

shinyApp(ui=ui, server=server)

结果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如您所见,如果您需要的只是简单直观的数据可视化,而没有任何交互元素,那么使用就毫无意义。这就是 Tableau 大获全胜的地方。如果你仍然想用 R 来制作图表,并且你愿意努力去做一些完全可定制的东西,那么ggplot2Plotly是很好的选择。

然而,对于非技术人员来说,即使用 R 制作简单的图表也是一项繁重的任务。我们推荐 Tableau 来完成这类任务。

赢家(简单图表):Tableau

易用性:简单的仪表盘

好吧,让我们看看谁会在仪表板之战中获胜。我们在这里不会太复杂,因为仪表板开发是一个涉及很多方面的非常广泛的主题。下面是我们将放入仪表板的图表概要:

  • 条形图——每个乘客等级的平均年龄
  • 饼图—性别
  • 直方图—年龄

此外,当用户更改两个筛选器之一时,所有三个图表都应该更新:

  • 年龄滑块—从最小到最大乘客年龄的范围滑块
  • 性别选择器-从可视化中排除男性或女性的选项

这是最后的仪表板在场景中的样子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这整个仪表板需要 0 行代码。我们只需要几分钟点击正确的地方。在 R Shiny 中,仪表板的情况是不同的,因为我们需要在那里编写实际的 R 代码。然而,这不是一个太糟糕的交易,因为 R 相对容易学习,并且对于闪亮的仪表板来说,定制的可能性是无穷的。

以下代码重新创建了 Tableau 中的仪表板:

library(shiny)
library(dplyr)
library(ggplot2)
library(titanic)
titanic <- titanic::titanic_train

ui <- fluidPage(
    sidebarPanel(
        width = 2,
        sliderInput(
            inputId='ageslider',
            label='Age range',
            min=min(titanic$Age, na.rm=T),
            max=max(titanic$Age, na.rm=T),
            value=c(min(titanic$Age, na.rm=T), max(titanic$Age, na.rm=T))
        ),
        selectInput(
            inputId='genderselect',
            label='Gender',
            choices=c('Male', 'Female'),
            selected=c('Male', 'Female'),
            multiple = TRUE
        )
    ),
    mainPanel(
        fluidRow(
            column(8, plotOutput('bar')),
            column(4, plotOutput('pie'))
        ),
        fluidRow(
            column(12, plotOutput('hist'))
        )
    )
)

server <- function(input, output) {
    output$bar <- renderPlot({
        pclass_age_data <- titanic %>%
            filter(Sex %in% tolower(input$genderselect)) %>%
            select(Pclass, Age) %>%
            filter(Age >= input$ageslider) %>%
            filter(Age <= input$ageslider) %>%
            group_by(Pclass) %>%
            summarise(Age = round(mean(Age, na.rm=TRUE), 2))
        ggplot(data=pclass_age_data, aes(x=Pclass, y=Age)) +
            geom_bar(stat='identity', fill='#4179ab') +
            geom_text(aes(label=Age), vjust=-0.3, size=5) +
            ggtitle('Avg. age per passenger class') +
            theme_void() +
            theme(plot.title=element_text(size=20), panel.background=element_blank())
    })
    output$pie <- renderPlot({
        pie_data <- titanic %>%
            filter(Sex %in% tolower(input$genderselect)) %>%
            filter(Age >= input$ageslider) %>%
            filter(Age <= input$ageslider) %>%
            select(Sex) %>%
            group_by(Sex) %>%
            count() %>%
            mutate(Midpoint = cumsum(n) - n / 2)
        ggplot(pie_data, aes(x='', y=n, fill=Sex)) +
            geom_bar(width=1, stat='identity', color='white') +
            coord_polar('y', start=0) +
            scale_fill_manual(values=c('#f34a53', '#4179ab')) +
            ggtitle('Gender pie chart') +
            theme_void() +
            theme(plot.title=element_text(size=20))
    })
    output$hist <- renderPlot({
        hist_data <- titanic %>%
            filter(Age >= input$ageslider) %>%
            filter(Age <= input$ageslider) %>%
            filter(Sex %in% tolower(input$genderselect)) %>%
            select(Age)
            ggplot(hist_data, aes(x=Age)) +
            geom_histogram(bins=20, color='#62aca8', fill='#1e9a95') +
            ggtitle('Age histogram') +
            theme_void() +
            theme(plot.title=element_text(size=20))
    })
}

shinyApp(ui=ui, server=server)

这是最终产品的样子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如你所见,这个仪表板还没有完成。这就是我们将在文章的最后一部分讨论的内容。在这里很难宣布一个明确的赢家,但 R Shiny 的仪表板感觉更坚实。Tableau 的仪表板对意外点击太敏感了,在股票状态下,仪表板看起来非常相似。

然而,正如我们看到的,你可以用 Tableau 比用 R Shiny 更快地制作一个简单的仪表板。出于这个原因,我们将宣布 Tableau 是简单仪表板的赢家,但仅仅是因为的易用性。正如您将看到的,如果您打算提升仪表板的复杂性和视觉风格,R Shiny 是一个更好的选择。

获胜者(简单的仪表盘):被鼻子牵着鼻子走的画面

用户输入和交互性

在我们的场景对比中,这是事情变得特别有趣的地方。在 Tableau 中,你不能对用户输入做什么——它非常有限,因为它不是为这类事情设计的。

然而,输入对于构建良好的交互式仪表板来说是必不可少的,因为它们提供了一种与应用程序交互的方式。互动性是 R Shiny 严重抢眼 Tableau 的地方。

R Shiny 提供了广泛的输入选项。与其罗列它们,不如展示其中的一些:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

是的,这是很多,你当然可以用它们做任何任务。作为商业用户,你可能会立即想到一个问题:为什么交互性如此重要?

互动使得任何数据集都更容易分析。例如,文件输入组件可以让您上传自己的文件,以便在仪表板中浏览,然后通过日期(日期范围输入)和列选择器( var select )进一步过滤。这与只读仪表板形成对比,只读仪表板不允许用户上传数据或与数据交互。

使用 R Shiny 仪表板,您还可以构建具有密码和文本字段输入功能的完整交互式表单。这为闪亮的最终用户增加了另一个关键的可选层。交互性是简单仪表板与强大的企业级业务工具之间的主要区别。

赢家(用户输入):R 闪亮

视觉造型

不幸的是,你没有太多的办法来调整画面的视觉效果。它被设计成开箱即用的样子,并且由你来改变颜色、坐标轴、标题、字体和其他小东西。可调整方面的数量取决于你调整的情节类型,但一般来说,Tableau 不会像 Shiny 那样给你太多的控制。

以下是如何更改直方图颜色的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

亮亮完全是另一种动物。你可以定制一切。首先,在您的app.R所在的位置创建一个文件夹www。在里面,创建一个main.css文件。是的,你说对了——我们可以使用 CSS 提供的一切来设计闪亮的仪表盘。

为了将闪亮的应用程序连接到 CSS 文件,我们可以将theme=main.css放在 R 文件中的fluidPage之后。仅此而已。真的就这么简单。以下是我们用 CSS 和 R Shiny 在几分钟内完成的工作:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

视觉造型部分的赢家再一次非常明显。当谈到视觉定制时,R Shiny 让 Tableau 相形见绌,即使 Tableau 仪表盘开箱后看起来相当不错。

获胜者(视觉造型):R 闪亮

结论

根据我们的计算,最终结果如下:

  • r 闪亮— 3 分
  • 表格— 2 点
  • 平局— 1 分

那么,闪亮是所有情况下的明显赢家吗?嗯,不是。这取决于你需要做的工作类型。如果你需要快速绘制一个图表或图形,或者需要时不时地制作一个非常简单的仪表板,那么 Shiny 可能有些过头了。Tableau 正是为这类任务而设计的。此外,如果您是一个非技术人员,并且您不想过多地钻研实际代码,那么 Tableau 对于简单的图表和仪表板是一个很好的选择。

此外,请记住 Tableau 不是免费的。Tableau 许可证从每年 70 美元的基础上上涨,所以它不是一个便宜的软件。对于财富 500 强公司来说,这不是一个问题,但如果你是一个试图决定选择正确工具的个人,Tableau 的价格可能会成为一个交易破坏者。或者,R Shiny 是一个开源解决方案,完全免费使用(尽管如果你需要在线托管你的 Shiny 应用,你可能需要投资一个 RStudio Connect 许可证)。

加入我的私人邮件列表,获取更多有用的见解。

喜欢这篇文章吗?成为 中等会员 继续无限制学习。如果你使用下面的链接,我会收到你的一部分会员费,不需要你额外付费。

[## 通过我的推荐链接加入 Medium-Dario rade ci

作为一个媒体会员,你的会员费的一部分会给你阅读的作家,你可以完全接触到每一个故事…

medium.com](https://medium.com/@radecicdario/membership)

原载于 2020 年 10 月 14 日https://appsilon.comT22。

Tableau 的人工智能解释数据功能

原文:https://towardsdatascience.com/tableaus-ai-enabled-explain-data-feature-c1c6380f9b66?source=collection_archive---------49-----------------------

快速介绍 Tableau 功能,开始解释数据点的“为什么”。不需要额外的设置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片由 chenspec 来自 Pixabay

数据分析师创建数据可视化的原因之一是为了发现意外和不寻常的情况。在 viz 中直接获得一些更详细的信息越容易,我们所有人的状况就越好。Tableau 通过其功能“解释数据”帮助满足了这一需求。据说是由“人工智能”驱动的,当请求解释数据时,会提供额外的见解。

使用我为早先的文章创建的工作簿,我可以进一步调查我的糖果销售数据。这是一个简单的例子,基于非常简单的数据,便于复制。

首先要做的事

相关性并不意味着因果关系

如何激活解释数据

在 Tableau 公共桌面应用程序中,我可以单击一个数据点。对于可用的数据点,您会看到一个小灯泡。点击那个灯泡。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这将创建一个弹出窗口,其中包含对该数据点的更多分析。如果单击带标记的图标(下面用黄色圈出),图表将作为新工作表添加到工作簿中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在幕后

对解释数据进行人工智能分析的重点是不同数据特征之间的相关性和关系。这是我提醒你的地方;再说一次,相关性并不意味着因果关系!这个过程试图根据这些相关性来解释数据点的价值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

另一个例子

我的例子非常简单。下面是 Tableau 提供的一个例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

资源

[## 解释数据

只需点击一下鼠标,即可获得数据点背后的“为什么”的解释。更快地找到业务背后的驱动因素…

www.tableau.com](https://www.tableau.com/products/new-features/explain-data) [## 使用解释数据检查视图

解释数据为您提供了一个了解数据的新窗口。使用它来检查,发现,并深入挖掘标记在一个 viz…

help.tableau.com](https://help.tableau.com/v2020.3/public/desktop/en-us/explain_data.htm) [## 解释数据如何工作

使用解释数据作为进一步探索数据的增量起点。可能的解释是…

help.tableau.com](https://help.tableau.com/v2020.3/public/desktop/en-us/explain_data_explained.htm) [## 解释数据:状态信息

当您在标记上运行解释数据时,统计分析将在聚合标记上运行,然后在可能相关的标记上运行…

help.tableau.com](https://help.tableau.com/v2020.3/public/desktop/en-us/explain_data_lm_status.htm)

结论

如您所见,在 Tableau 应用程序中开始使用解释数据并不费力。这有助于指出哪些数据点可能需要进一步分析。这可能会节省你的时间,可以让你避免隐藏的惊喜。虽然统计分析在这个时候似乎仅限于关系和相关性,但 Tableau 开发更复杂的分析的大门是敞开的。

TabPy:结合 Python 和 Tableau

原文:https://towardsdatascience.com/tabpy-combining-python-and-tableau-511b10da8175?source=collection_archive---------1-----------------------

开始在 Tableau 中使用 Python

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

paweczerwi324skiUnsplash 拍摄的照片

我们能把 Python 计算的能力和 Tableau 结合起来吗?

这个问题鼓励我开始探索在 Tableau 中使用 Python 计算的可能性,最终我得到了一个 TabPy。

那么,塔比是什么?如何使用 TabPy 来集成 Python 和 Tableau?

在本文中,我将介绍 TabPy,并通过一个例子说明如何使用它。

TabPy 游戏攻略

TabPy 是来自 Tableau 的分析扩展,它使我们作为用户能够使用 Tableau 执行 Python 脚本和保存的函数。使用 TabPy,Tableau 可以动态运行 Python 脚本,并将结果显示为可视化。用户可以通过在 Tableau 工作表、仪表板或使用参数的故事中进行交互来控制发送到 TabPy 的数据。

你可以在官方的 Github 资源库中阅读更多关于 TabPy 的内容:

[## 表格/标签

动态执行 Python 代码并在 Tableau 可视化中显示结果:—Tableau/tabby

github.com](https://github.com/tableau/TabPy)

安装标签

我假设您的系统中已经安装了 Python。如果没有,可以先去https://www.python.org/下载 python 安装来安装。然后你可以把它安装到你的系统中。

接下来,我们可以使用pip:将 TabPy 安装为 python 包

pip install tabpy

跑步标签

一旦安装成功,我们可以使用以下命令运行服务:

tabpy

如果一切顺利,您应该会看到:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

奔跑的塔比。作者图片

默认情况下,该服务将在本地主机的端口 9004 上运行。您也可以通过在 web 浏览器中打开它来验证它。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

TabPy 服务器信息。作者图片

启用 TabPy

现在,让我们去我们的桌子,并设置服务。我用的是 Tableau 桌面版 2020.3.0。然而,在以前的版本中也不会有什么不同。

首先,转到帮助,然后选择设置和性能,并选择管理分析扩展连接。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分析扩展连接位置。作者图片

然后,您可以设置服务器和端口。您可以将用户名和密码留空,因为我们不会在 TabPy 服务中设置凭据。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

完成后,单击测试连接。如果成功,您将看到以下消息:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

恭喜你!!现在,我们的 Tableau 已经和 TabPy 连接好了,可以使用了。

使用 TabPy

我们可以使用两种方法来进行 Python 计算:

  • 将代码直接编写为 Tableau 计算字段。然后,代码将在 TabPy 服务器上立即运行。
  • 在 TabPy 服务器中部署一个函数,该函数可以作为 REST API 端点到达。

在本文中,我将只展示如何做第一种方法,我们将直接编写代码作为 Tableau 计算字段。

例如,我们将对通过 Tableau 网站公开的 Airbnb 数据集执行聚类,您可以使用这个链接下载它。我们将使用几种流行的聚类算法,根据每个邮编的住房特征对其进行聚类。

步骤 1 导入数据

第一步,让我们将数据集导入 Tableau。该数据集有 13 列。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因为我们的主要目标是了解如何使用 TabPy,所以我们不会专注于创建最好的模型。因此,我们将仅使用该数据集中的以下变量来执行聚类:

  • 每个邮政编码的床位数中位数
  • 每个邮政编码的平均价格
  • 每个邮政编码的收视率中值

步骤 2:创建控制参数

我们需要创建两个参数来选择我们的聚类方法和聚类数,它们是:

  • 集群编号
  • 聚类算法

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

创建一个参数。作者图片

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

聚类数参数。作者图片

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

聚类分析算法参数。作者图片

创建脚本

我们将创建一个 python 脚本作为 Tableau 中的计算字段。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

创建计算字段。作者图片

然后,您可以在计算字段中插入以下脚本。

这段代码封装在 Tableau 的 SCRIPT_REAL()函数中,将执行以下操作:

  • 导入所需的 Python 库。
  • 使用标准定标器的定标功能
  • 组合缩放的要素并处理空值
  • 有条件地检查要使用的算法,并执行以下操作
  • 以列表形式返回聚类结果。

然后,我们将结果转换成字符串数据类型,使其成为分类数据。

还有一点需要注意的是,我们需要在 Zipcode 中进行表计算。因此,我们需要将默认的表计算更改为 Zipcode,以使该代码有效。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

更改默认表计算。图片作者。

可视化结果

现在,是时候可视化结果了。我使用 Zipcode 创建一个地图来可视化聚类结果。我们可以使用参数来改变聚类的数量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

包裹

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Elisha TeradaUnsplash 上拍摄的照片

让我们庆祝走到这一步!如果您按照步骤操作,您已经成功地集成了 Python 和 Tableau。这种集成是使用 Tableau 和 Python 的更高级用例的开始。

我期待着看到您用这种集成构建的东西!

关于作者

Bima 是一名拥有 Tableau 桌面专家认证的数据科学家,他总是渴望扩展自己的知识和技能。他毕业于采矿工程师专业,通过 HardvardX、IBM、Udacity 等各种在线项目开始了他的数据科学之旅。目前,他正与 DANA Indonesia 一起在印度尼西亚建立一个无现金社会。

如果您有任何反馈或任何要讨论的话题,请通过 LinkedIn 联系 Bima。很高兴和你联系!

参考

使用自动机器学习的表格预测

原文:https://towardsdatascience.com/tabular-prediction-using-auto-machine-learning-autogluon-de2507ecd94f?source=collection_archive---------15-----------------------

在这篇文章中,我分享了我使用 AWS labs 的Auto****MachineLearning(AutoML)autoglon对表格预测(使用剩余列预测表格数据集的目标列)的探索,以及关于其内部工作的细节。

A utoML 框架提供了诱人的选择,因为它们消除了新手训练高质量模型的障碍,并且对于专家来说,它们减少了第一个可行模型的时间,专家可以通过基于数据分析和领域知识的特征工程来进一步微调。一些流行的开源 AutoML 平台有

自动增长

AutoGluon 是一个用于深度学习的 AutoML 工具包,它自动执行端到端的机器学习任务,使我们能够用很少的代码行实现强大的预测性能。AutoGluon 目前支持下图所示的五个主要任务,并且还支持自定义 mxnet 或 PyTorch 模型。在这篇博客中,我们将深入探讨使用自动增长及其内部工作的表格预测任务。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

自动登录中预定义的任务

对于表格预测任务,支持使用自动增长进行高质量建模的主要因素有

  • 新型表格神经网络。
  • 自动堆叠和组装多个模型。
  • 强大的数据预处理。

自动登录表格支持二进制分类、多类分类和回归问题类型,如果未提供问题类型,实际问题类型将根据目标列的值自动推断。自动增长表格目前训练所有以下模型

表格深度神经网络

AutoGluon 表格深度神经网络是一个精心设计的神经网络,它由一个前馈网络组成,该网络具有线性快捷路径以及针对表格数据的每个变量嵌入,这些表格数据缺乏平移不变性以及可由卷积利用的图像或文本的局部性。表格深度神经网络的架构和模型细节如下所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

自动旋转神经网络结构。图片来源:https://arxiv.org/pdf/2003.06505.pdf

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

自动增长神经网络模型详细信息

表格神经网络使用一个数字块,它由一个密集连接的神经网络层组成,并对实值特征进行重新激活。表格网络的宽和深块由一个混合顺序块组成,该混合顺序块具有两个密集连接的神经网络层,其大小为 256,128 ,根据多类分类的类数进行缩放。网络的广阔部分有助于记忆,网络的深层部分有助于归纳。

自动堆叠

AutoGluon 还使用多层堆栈组合以及 k-fold bagging 来大幅降低最终预测的方差,如下图所示。下图所示的多层堆叠在基础层有多个模型,其输出被连接并提供给下一层,下一层也由多个堆叠器模型组成。这些堆叠器模型是具有与基础层相同的超参数的基础模型,并且被馈送了基础层模型的级联输出以及输入。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多层堆叠,image credit:https://arxiv.org/pdf/2003.06505.pdf

如果自动堆叠为真,则使用公式 min(1,max(0,math.floor ( number train rows /750))试探性地计算堆叠层数。 和使用公式 **min(10,max(5,math . floor(num _ train _ rows/100))**启发式地计算装袋折叠数

数据预处理

自动插补使用中值插补用于缺失数值,使用分位数归一化用于偏斜分布,标准归一化应用于所有其他变量。

对于分类特征,如果离散等级大于 4,自动生成使用嵌入层,否则使用一键编码

适合()

AutoGluon fit() 函数调用实现了学习高质量预测模型的所有功能,下面的伪代码总结了整体训练策略。训练后的每个模型被立即保存到磁盘以用于容错,并且模型按照复杂度从低到高的顺序被连续训练以保持时间包络。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

训练策略,形象学分:https://arxiv.org/pdf/2003.06505.pdf

fit()函数通过各种输入参数提供了良好的自由度,下图显示了所有主要的输入参数,以符合它们的默认值,从而生成可靠的高质量模型,并可以通过进一步试验这些参数进行改进。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

自动拟合输入参数

重要参数之一,预置中的拟合函数控制预测精度、推理延迟和资源使用。下表显示了不同预设在奥托集团产品分类挑战赛中预测准确性、训练时间、推理时间和 kaggle 等级的详细比较。*‘high _ quality _ fast _ inference _ only _ refit’*提供预测准确性和推理延迟的最佳折衷。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

奥托集团产品分类自动引导预设性能

另一个重要参数是 time_limits ,它控制 fit 函数应该运行多长时间,如果在线环境的训练模型在指定时间内实时更新模型是重要的话。基于堆栈级别、装袋折叠数和基础模型数,为不同的超参数优化分配时间限制。

*time _ limits _ hpo = time _ limits/(1+num _ bagging _ folds (1+stack _ ensemble _ levels))

装置

安装 pip3 的指令

sudo apt install python3-pip
sudo -H pip3 install -U pip (update to latest version)

安装 MXNET 的说明

从 https://mxnet.apache.org/versions/1.7/get_started?选择基于操作系统/平台的合适版本

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

MXNET 配置,图片来自https://mxnet.apache.org/versions/1.7/get_started?平台=linux &语言=python &处理器=gpu &环境= pip&

sudo -H pip3 install mxnet-cu102 (**GPU Version with CUDA 10.02**)
sudo -H pip3 install mxnet (**CPU Version**)

安装自动旋转的说明

sudo -H pip3 install autogluon

作为表格预测的泰坦尼克号生存预测

下载泰坦尼克号数据集

sudo -H pip3 install kaggle (install kaggle python package)
#download the key and save it home directorty (/home/userid/.kaggle)
kaggle competitions download -c titanic

使用自动旋转训练模型

from autogluon import TabularPrediction as tasklabel_column = 'Survived'**#load data (assuming train.csv and test.csv is alredy downloaded)**
train_data = task.Dataset(file_path='train.csv').drop(labels=['PassengerId'],axis=1)test_data = task.Dataset(file_path='test.csv')**#create temp dataset to hold passenger id.**
test_data_tmp = pd.DataFrame()
test_data_tmp['PassengerId'] = test_data['PassengerId'].copy()
test_data = test_data.drop(labels=['PassengerId'],axis=1)**#To get the best predictive accuracy, recommended setting is to make auto_stack=True and time how long we can wait (time_limits).**metric='accuracy'
predictor = task.fit(train_data=train_data, label=label_column, eval_metric=metric, auto_stack=True, time_limits=3600)**#calcutate test prediction** 
y_pred = predictor.predict(test_data, as_pandas=True)
y_pred = y_pred.to_frame()**#save the prediction to the file**
y_pred['PassengerId'] = test_data_tmp['PassengerId'].copy()
tfilename = 'autogluon_titantic.csv'
y_pred.to_csv(tfilename, index=False)**#submit test prediction to kaggle for scoring**
kaggle competitions submit titanic -f tfilename -m "autogluon tabular titanic prediction"

提交后,我们查看了 kaggle competition Titanic 上的分数,在我的提交页面下,我们得到了一个分数 0.78708 ,排名在 top 15% 之下的是好的,在应用了一个特征工程后,我们可以进一步提高这些模型的预测能力。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

结论

AutoGluon 在几行代码中实现了表格预测任务的竞争性准确性,并且对于新手和专家都有一个工具包是很好的。通过新颖的体系结构和时间约束容错训练策略,实现了自动旋转中预测任务的灵活性、效率和易用性。

感谢您阅读这篇文章,我希望这对您有所帮助。如果你有,请在你最喜欢的社交媒体上分享,这样其他人也可以找到它。此外,如果有不清楚或不正确的地方,请在评论区告诉我们。

参考

  1. https://mxnet.apache.org/versions/1.7/
  2. https://github.com/apache/incubator-mxnet
  3. https://arxiv.org/pdf/2003.06505.pdf
  4. https://AWS . Amazon . com/blogs/open source/machine-learning-with-autoglion-an-open-source-automl-library/
  5. https://towards data science . com/autoglon-deep-learning-automl-5 cdb4 e 2388 EC

用机器学习解决气候危机:使用 60 年海洋学数据的水温预测

原文:https://towardsdatascience.com/tackling-climate-crisis-with-machine-learning-d9426fe1f5a9?source=collection_archive---------45-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

海洋温度上升严重影响海洋物种和生态系统。气温上升会导致珊瑚漂白,海洋鱼类和哺乳动物失去繁殖地。机器学习有助于预测水温上升的原因,并及时缓解温度上升。

在这个实验中,我使用了加州合作海洋渔业调查(CalCOFI)的数据集,它包含了 60 年的海洋学数据,托管在 ka ggle:https://www.kaggle.com/sohier/calcofi

CalCOFI 数据集代表了世界上最长(1949 年至今)和最完整(超过 50,000 个采样站)的海洋学和鱼类幼体数据时间序列。它包括关于温度、盐度、氧气、磷酸盐、硅酸盐、硝酸盐和亚硝酸盐、叶绿素、透射计、PAR、C14 初级生产力、浮游植物生物多样性、浮游动物生物量和浮游动物生物多样性的数据。这里我将重点介绍通过使用机器学习来预测水温的内容。让我们从导入库和数据开始吧!

我现在将重点关注一些变量,所以让我们将数据帧切片。

我们来看看哪些变量对水温的预测作用更大。

我们可以看到 7 个变量似乎与温度更相关。然而,我们将删除七个中的一个,因为它指的是瓶号,而不是一个重要的变量(BtlNum)。我们将在模型中保留 6 个参数,并移除其他变量。

  • 保持:‘深度’,‘萨朗蒂’,’ O2ml L ‘,‘斯特塔’,’ O2Sat ','氧 mol/Kg ',
  • 已删除:’ RecInd ‘,’ T_prec ‘,’ T_qual ‘,’ S_prec ‘,’ S_qual ‘,’ P_qual ‘,’ O_qual ‘,’ SThtaq ‘,’ O2Satq ‘,’ BtlNum ’

如您所见,有 6 列。我们的目标变量将是 T_degC,它代表水温。其余的列将用于预测水温(目标变量)。因此,它是多种多样的。

现在我们将对数据进行预处理。首先,我们从检测缺失值开始。

看起来我们有很多缺失的值。有不同的方法来处理缺失值。一种方法是用平均值填充它们。首先,我们需要检查数据是如何分布的。

看起来对于 O2Sat 和 Oxy_ mol/Kg,我们可能希望使用归一化。fillna()使用平均值,而不是。dropna()。对于其他变量,似乎没有很大的区别。为了标准化,让我们用所有七个变量的平均值代替所有缺失值。最后,我们可以标准化我们的数据集。

完美!我们用平均值代替了所有 NA 值。

我们现在可以开始构建我们的机器学习模型了。

我们将通过以下步骤创建一个模型:

  • 为训练准备数据集
  • 创建线性回归模型
  • 训练模型以适应数据
  • 使用训练好的模型进行预测

如果你看一下这个图表,你会发现这个分布几乎是正态的。最小 1.44°C,最大 31.14°C,跨度相当大。这就是为什么我们希望看到水数据(氧气、饱和度、盐度等)的关系。)和水温作为我们要了解的变量哪个影响最大。

前面的函数将 pandas 数据帧转换为 Numpy 数组。inputs_array 是输入变量的所有值的数组,输入变量是我们用来预测目标变量(或自变量)的特征,targets_array 是目标变量(即水温)的所有值的数组。因此,我们将数据转换为适合我们机器学习模型的格式。

结果如下:

下面的张量运算将 numpy 数组inputs_arraytargets_array转换成 PyTorch 张量。为了标准化,我们将数据类型设置为torch.float32

接下来,我们需要为训练和验证创建 PyTorch 数据集和数据加载器。我们将从创建一个TensorDataset开始。

现在,我们将把数据分成两个数据集:

  • 训练数据集

实际上,我们正在使用这个数据集来“训练”我们的模型。机器学习模型基于它改变它的权重和偏差(我们假设它是线性回归)。

  • 验证数据集

我们使用这个数据集来实际测试学习算法是否理解,而不是记忆。这模拟了模型在现实世界中的表现

这里,我声明 val_percent = 0.15,这意味着我将使用 15%的数据集作为验证数据集,85%的数据作为训练数据集。而且我是随机拆分的,这样学习算法案例就可以无偏地学习,增加性能更好的机会。

最后,我们可以为培训和验证创建数据加载器。

在这里,我使用 DataLoader 将数据分成几批。批次将 batch_size number 元素分组到 DataLoader 中的一个组中。此外,我将 train_loader 中的 shuffle 设置为 True,这意味着批次将被打乱,使得训练公平且随机,这再次增加了算法更有效地拾取的机会。在这里,我使用的批量大小为 32。

batch_size = 32
train_loader = DataLoader(train_ds, batch_size, shuffle=True)
val_loader = DataLoader(val_ds, batch_size)

前面的函数可能看起来让人不知所措,但是我们可以分解它。nn。模块表明我们正在扩展 Pytorch 模块。在 init (初始化式)中,我们声明 self.linear = nn。使用 Pytorch 的线性建模。这本质上是一个简单的线性回归。因为线性模型最简单,而我们的目标变量是连续变量。不然就是分类问题了。

“Forward”函数将训练数据集中的输入变量 xb 插入到线性模型中,并通过模型获得预测的目标变量值,即水温。

training_step 函数返回每批的计算损失。损失函数是特定于问题的,即,它可以针对不同的数据集和 ML 问题而改变。这里,我使用 Huber 损失(平滑平均绝对误差)作为损失函数。与平方误差损失(MSE)相比,该函数对异常值不太敏感。我决定使用这个基于目标变量的准正态分布的损失函数。

Validation_step 函数使用验证数据集来评估使用训练集训练模型准确性。它还返回 Huber 损失函数的结果。

Validation_epoch_end 返回验证数据集评估的平均值(损失函数),然后返回损失的平均值。这里,设置为 20 个历元,意味着每 20 次迭代(历元=用于训练和改变权重和偏差的迭代),将返回平均值。

现在,让我们创建模型对象:

model = WaterTempModel()

现在,让我们检查我们的默认权重和偏差。请注意,所有参数都是随机选择的,因此会给出不正确的结果。

这些是我们模型的参数。等式中的模型可以表示如下:

y =-0.2380 x1+0.3374 x2+0.1023 x3-0.0871 x4-0.2690 X5-0.2864 X6

其中 y 是水温。x1 是以米为单位的水深,x2 是盐度,x3 是以 ml/L 为单位的 O2 测量值,x4 是 sigma-theta(海水密度),x5 是氧饱和度,x6 是 Oxy_ mol/Kg。如您所见,盐度的权重最大,海水密度的权重最小。

现在,为了评估我们的模型,我们将定义如下两个附加函数:

evaluate function 计算每批验证数据集的损失函数值(请记住,我们也将验证数据集划分为批),并返回损失函数与预测值的平均值。这就给出了我们模型的最终评价。

Fit 函数接受 epoches(迭代次数)、学习率、模型、train_loader(训练数据)、val_loader(验证数据)、设置为梯度下降的 opt_function,这是我们之前讨论过的。该函数使用梯度下降算法和每个历元计算最小点,它使用验证数据和评估函数返回结果以返回其性能。

现在,这是初始参数性能的结果:

112 左右是分数,很高!现在使用梯度下降,让我们改进。

它看起来是这样的:

从默认参数的大约 112 的错误分数,我们把它降低到大约 0.4!现在,让我们用一些真实值进行实际测试!

我们现在将使用训练好的模型进行预测

第一次测试:

0.16 C 左右的差距,还不错!看起来我们选择的变量可以很好地预测水温。

第二次测试:

0.18℃左右的差价,还不错!

第三次测试:

在此感谢 Jovian.ml 团队(尤其是 Aakash 先生)!

如果你对学习机器学习感兴趣,可以在 freecodecamp youtube 频道查看他们的视频。通过他们的材料学习 PyTorch 到目前为止是一次有趣的旅程!

感谢阅读!

如果你喜欢我的工作,想支持我…

  1. 支持我的一种方式是在媒体 这里关注我。
  2. 点击 LinkedIn 这里或者 Twitter 这里关注我。
  3. 想看看我的作品吗?看看我的Github:https://github.com/BBaloglu
  4. 你想看看我的项目并与我合作吗?看看我的网站:https://bbaloglu.github.io/

解决词语嵌入中的性别偏见

原文:https://towardsdatascience.com/tackling-gender-bias-in-word-embeddings-c965f4076a10?source=collection_archive---------14-----------------------

一篇试图减轻单词嵌入中的性别偏见的技术论文的摘要

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由 Unsplash 上的 Dainis Graveris 拍摄

ord 嵌入是自然语言处理的基础。但是他们没有固有的偏见吗?想象一下,谷歌搜索“酷酷的程序员 t 恤”,谷歌只回复男性 t 恤。随着已经显示出性别偏见迹象的 BERT 被纳入谷歌搜索,人们不需要想象。随着我们不断看到这些系统在日常生活中的使用越来越多,保持定义人工智能的“智能”本质上无偏见是必不可少的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这可能是单词嵌入最广为人知的成就。(来源—此处)。

当 Word2Vec 首次公布其成果时,这种关系也让计算机科学界产生了怀疑。单词的向量表示的概念是 NLP 的主要支柱之一。然而,正是这些词的嵌入甚至可以吸收人类世界的偏见。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

事实上——当我在谷歌新闻向量上尝试时,我得到了惊人的结果。(来源——自己)

(In)上述著名结果真正指出了问题的隐含本质*。事实上,这些庞大的模型是基于人类文学的语料库来训练的,这些语料库是有偏见的。*

博鲁克巴斯等人。男人对于电脑程序员就像女人对于家庭主妇一样?消除单词嵌入的偏见 ”进一步阐明了对这种性别偏见的一些分析,以及我们如何努力克服它。幸运的是,这些模型包含了足够的信息,甚至可以在一定程度上减轻这种偏差。

问题是

本质上,模型被训练的语料库有一些性别中性的词,如“垒球”、“接待员”和“程序员”。还有一些性别专有的术语,如“女商人”、“父亲”和“母亲”。据观察,性别中立的术语获得刻板印象和偏见,由于他们在语料库中出现的语境。

例如,假设对于卡内基梅隆大学的计算机科学博士生,搜索查询是“cmu 计算机科学博士生”。现在,该目录为学生提供了 127 个几乎相同的网页——这些网页只是学生的名字不同…然而,单词嵌入也将与计算机科学相关的术语排序为更接近男性名字而不是女性名字…结果是,在两个仅名字 Mary 和 John 不同的页面之间,单词嵌入将影响搜索引擎将 John 的网页排序高于 Mary。

目标是“去偏向”这些性别中立的向量,同时保留嵌入中相同的语义关系。

直接和间接偏见

偏见本身有两种类型,直接和间接。

直接偏见可以分为“足球”天生更接近男性“接待员”更接近女性。间接偏见源于语料库中的细微关联,导致“簿记员”更接近于“垒球”而不是“足球”,因为它们的女性联想更大。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在“他-她”空间上表示的向量。X 轴上方的是中性术语,X 轴下方的是特定性别术语。(资料来源——报纸)

如上所示,性别中立术语应该与他-她对等距,而性别特定术语应该继续传达其中嵌入的性别信息。

方法

性别子空间的识别

首先捕获这个性别嵌入的子空间。这是通过取定义性别概念本身的一些预先知道的集合的差来完成的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

等式对的子集用于确定性别子空间。(资料来源——报纸)

对这种相反性别对的子集执行 SVD,以最终获得这种偏差的方向或子空间。这种平滑是为了消除一些术语不同含义的影响,如“ man ”。

硬去偏置:中和并均衡

位于该子空间中的向量(性别中立项)被“中和”,使得它们与类似“他-她”的等式对保持等距。从技术上讲,所发生的是从向量中减去嵌入在偏移方向上的投影。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

左侧—中和前,右侧—中和后。(来源——自己)

这个方向之外的嵌入(性别特定的术语)被“均衡”,或者平均为具有相同的向量长度。这样做是为了确保中性项与所有等式对等距。例如,术语医生应该与男女孩男女人等距。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

左侧—均衡前,右侧—均衡后。(来源——自己)

软去偏置

有时性别专用术语可能包含更多需要捕捉的含义,例如:到祖父法规。在这种情况下,我们可能只想基于一个参数“软化”性别偏见对嵌入的影响,比如说 λ

这里,我们不完全中和嵌入,而是仅在 λ 的范围内这样做。如果 λ = 0,那么本质上与硬去偏相同。

结果和结论

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用不同(无)偏向嵌入、左定型类比和右适当类比生成的类比数量。(资料来源——报纸)

上面显示的结果与任务的目标相一致,成功地从嵌入中消除了偏差,而不影响性能。对于所描述的问题,还有其他方法,比如清理语料库本身。

从本质上说,去除单词嵌入的偏见有助于满足对无偏见世界不断增长的需求。至少,机器学习不应该被用来无意中放大这些偏见,因为我们已经看到这种情况会自然发生。

使用论文作者在 GitHub 上发布的代码,我对我之前使用的 Google 新闻向量进行了硬去偏置,并获得了以下结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

检验去偏见模型——性别偏见明显减轻。(来源——自己)

我们看到这种方法是如何利用中和与均衡来减少明显的偏差的。

有些人认为嵌入中的性别偏见捕获了有用的统计数据。然而,机器学习算法有很大的可能性放大性别刻板印象和歧视,最好在无偏见的系统上运行。

由于性别只是单词嵌入所表现出的偏见之一,种族或民族偏见的识别也会随之而来,这是迈向真正的**#伦理**的一大步

参考

T .博卢克巴斯,K .常,J .邹,V .萨利格拉玛和 A .卡莱。男人对于电脑程序员就像女人对于家庭主妇一样?去偏置词嵌入。2016T21。

目标检测中小目标问题的处理

原文:https://towardsdatascience.com/tackling-the-small-object-problem-in-object-detection-6e1c9976ee69?source=collection_archive---------24-----------------------

注意:我们也在博客上发布了解决小物体问题检测小物体是计算机视觉中最具挑战性和最重要的问题之一。在本帖中,我们将讨论我们在 Roboflow 通过迭代数百个小型物体检测模型开发的一些策略。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

公共航空海事数据集中,无人机从上方看到的小物体

为了提高模型在小对象上的性能,我们推荐以下技术:

如果你喜欢视频,我也记录了这篇文章的讨论

小物体问题为什么难?

小目标问题困扰着世界范围内的目标检测模型。不买?查看 COCO 对最新型号 YOLOv3EfficientDetYOLOv4 的评估结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查看 AP_S、AP_M、AP_L 的最新型号。小物件硬!( 引用 )

例如,在 EfficientDet 中,小对象的 AP 仅为 12%,而大对象的 AP 为 51%。这几乎是五倍的差异!

那么为什么探测小物体如此困难呢?

一切都归结于模型。物体检测模型通过聚集卷积层中的像素来形成特征。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

PP-YOLO中用于物体检测的特征聚合

并且在网络的末端,基于损失函数进行预测,该损失函数基于预测和地面真实之间的差异对像素求和。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

YOLO 的 损失函数

如果地面真值盒不大,训练时信号会变小。

此外,小物体最有可能出现数据标签错误,它们的标识可能会被忽略。

经验上和理论上,小物体很难。

提高图像捕捉分辨率

分辨率,分辨率,分辨率…这都是关于分辨率

非常小的对象在边界框内可能只包含几个像素,这意味着提高图像的分辨率以增加检测器可以从那个小框中形成的特征的丰富性非常重要。

因此,如果可能的话,我们建议捕捉尽可能高分辨率的图像。

提高模型的输入分辨率

一旦你有了更高分辨率的图像,你就可以放大你的模型的输入分辨率。警告:这将导致大型模型需要更长的训练时间,并且在开始部署时推断速度会更慢。您可能需要进行实验来找出速度和性能之间的正确权衡。

在我们的训练 YOLOv4 教程中,你可以通过改变配置文件中的图像大小来轻松缩放你的输入分辨率。

*[net] 
batch=64 
subdivisions=36 
width={YOUR RESOLUTION WIDTH HERE} 
height={YOUR RESOLUTION HEIGHT HERE} 
channels=3 
momentum=0.949 
decay=0.0005 
angle=0 
saturation = 1.5 
exposure = 1.5 
hue = .1  
learning_rate=0.001 
burn_in=1000 
max_batches=6000 
policy=steps 
steps=4800.0,5400.0 
scales=.1,.1*

在我们关于如何训练 YOLOv5 的教程中,您还可以通过更改训练命令中的图像大小参数来轻松缩放您的输入分辨率:

*!python train.py --img {YOUR RESOLUTON SIZE HERE} --batch 16 --epochs 10 --**data** '../data.yaml' --cfg ./models/custom_yolov5s.yaml --weights '' --name yolov5s_results  --cache*

注意:只有达到训练数据的最大分辨率时,您才会看到改进的结果。

平铺您的图像

检测小图像的另一个伟大策略是将图像平铺作为预处理步骤。平铺可以有效地放大小物体上的检测器,但允许您保持所需的小输入分辨率,以便能够运行快速推断。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 Roboflow 中平铺图像作为预处理步骤

如果你在训练中使用平铺,记住你也需要在推理时平铺你的图像是很重要的。

通过增强生成更多数据

数据扩充从你的基本数据集生成新图像。这对于防止模型过度适应训练集非常有用。

一些对小物体检测特别有用的增强包括随机裁剪随机旋转马赛克增强

自动学习模型锚

锚框是模型学习预测的原型边界框。也就是说,锚定框可以预先设置,有时对您的训练数据来说不是最佳的。这是很好的定制调整这些你手头的任务。幸运的是, YOLOv5 模型架构会根据您的定制数据自动为您完成这项工作。你所要做的就是开始训练。

*Analyzing anchors... anchors/target = 4.66, Best Possible Recall (BPR) = 0.9675\. Attempting to generate improved anchors, please wait... WARNING: Extremely small objects found. 35 of 1664 labels are < 3 pixels in width or height. Running kmeans for 9 anchors on 1664 points... thr=0.25: 0.9477 best possible recall, 4.95 anchors past thr n=9, img_size=416, metric_all=0.317/0.665-mean/best, past_thr=0.465-mean: 18,24,  65,37,  35,68,  46,135,  152,54,  99,109,  66,218,  220,128,  169,228 Evolving anchors with Genetic Algorithm: fitness = 0.6825: 100%|██████████| 1000/1000 [00:00<00:00, 1081.71it/s] thr=0.25: 0.9627 best possible recall, 5.32 anchors past thr n=9, img_size=416, metric_all=0.338/0.688-mean/best, past_thr=0.476-mean: 13,20,  41,32,  26,55,  46,72,  122,57,  86,102,  58,152,  161,120,  165,204*

过滤掉无关的类

类管理是提高数据集质量的一项重要技术。如果有一个类与另一个类明显重叠,则应该从数据集中过滤掉该类。或许,您认为数据集中的小对象不值得检测,因此您可能想要将其删除。您可以使用作为 Roboflow Pro 一部分的高级数据集健康检查快速识别所有这些问题。

类省略和类重命名都可以通过 Roboflow 的本体管理工具实现。

结论

正确检测小物体确实是一个挑战。在本帖中,我们讨论了一些改进小型物体探测器的策略,即:

一如既往,愉快的检测!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值