构造用于分析的数据
对于了解数据准备以及如何构造用于分析的数据,有一些概念至关重要。数据可以采用各种各样的格式生成、捕获和存储,但是在分析时,并不是所有的数据格式都是相同的。
数据准备是将格式良好的数据放入单个表或多个相关表中以便在 Tableau 中进行分析的过程。这包括结构(即行和列)以及数据清洁度的各个方面,例如正确的数据类型和正确的数据值。
提示:使用您自己的数据集浏览以下主题可能会有所帮助。如果您还没有可以使用的数据集,请参见我们有关找到好的数据集(链接在新窗口中打开)的技巧。
结构如何影响分析
您可能无法控制数据的结构。本主题的其余部分假定您有权访问原始数据和塑造原始数据所需的工具,例如 Tableau Prep Builder。但是,在某些情况下,您可能无法根据需要转置或聚合数据。通常仍然可以执行分析,但您可能需要更改计算或者处理数据的方式。有关如何使用不同数据结构执行相同分析的示例,请参见 Tableau Prep 日常生活场景:Tableau Desktop 中包含第二个日期的分析(链接在新窗口中打开)。但是,如果您能够优化数据结构,可能会使您的分析更加容易。
数据结构
Tableau Desktop 最适合处理表格格式类似电子表格的数据。也就是说,数据存储在行和列中,列标题位于第一行。那么,什么是行或列?
什么是行?
行(或记录)可以是任何内容,从零售商店交易信息到特定地点的天气测量数据,或者有关社交媒体帖子的统计信息。
了解数据中的记录(行)表示的内容非常重要。这是数据的粒度。
在这里,每条记录是一天 | 在这里,每条记录是一个月 |
提示:最佳做法是使用唯一标识符 (UID),该值将每一行标识为唯一的数据段。把它想象成社会保险号或每条记录的 URL。在 Superstore 中,这将是“Row ID”(行 ID)。请注意,并非所有数据集都有 UID,但拥有 UID 也无妨。
尝试确保可以回答“数据集中的行代表什么?”问题。这与回答“‘TableName(Count)’字段代表什么?”是一样的。如果无法清楚地说明这一点,则数据的结构可能较差,无法进行分析。
与构成行的内容相关的概念是聚合和粒度的概念,它们是一个范围的两端。
聚合
指的是多个数据值是如何组合为单一值的,例如对所有针对南瓜香料的 Google 搜索进行计数,或者取西雅图附近某一天所有温度读数的平均值。
默认情况下,Tableau 中的度量始终是聚合的。默认聚合为 SUM。您可以将聚合更改为“平均值”、“中值”、“不重复计数”、“最小值”等选项。
粒度
是指数据的详细程度。数据集中的行(或记录)代表什么?疟疾患者?一个省当月的疟疾病例总数?这就是粒度。
了解数据的粒度对于使用详细级别 (LOD) 表达式至关重要。
理解聚合和粒度是一个重要的概念,原因有很多:它会影响查找有用的数据集、构建所需的可视化项、正确地关联或联接数据以及使用 LOD 表达式等操作。
提示:有关详细信息,请参见 Tableau 中的数据聚合。
什么是字段或列?
表中的一列数据作为数据窗格中的字段进入 Tableau Desktop,但它们本质上是可互换的术语。(我们将术语“列”保存在 Tableau Desktop 中,以供列和行功能区使用,并用于描述某些可视化项。)数据字段应该包含可以分组成更大关系的项目。项目本身称为值或成员(只有离散维度包含成员)。
给定字段中允许的值由字段的域确定(请参见下面的注释)。例如,“杂货店部门”一栏可能包含成员“熟食店”、“面包店”、“农产品店”等,但它不包括“面包”或“意大利香肠”,因为这些是项目,不是部门。换句话说,部门字段的域仅限于可能的杂货店部门。
此外,结构良好的数据集将有一个“销售额”列和“利润”列,而不是单一的“资金”列,因为利润是一个与销售额分开的概念。
“销售额”字段的域将为大于等于 0 的值,因为销售额不能为负数。
但是,“利润”字段的域将是所有值,因为利润可能为负。
注意:域也可以表示数据中存在的值。根据这个定义,如果列“杂货店部门”错误地包含“意大利香肠”,那么该值将在列的域中。这些定义略为矛盾。一个是可能或应该存在的值,另一个是实际存在的值
对字段进行分类
数据表中的每个列都作为字段进入 Tableau Desktop,该字段将显示在“数据”窗格中。Tableau Desktop 中的字段必须是维度或度量(在“数据”窗格中由一条线分隔)以及离散字段或连续字段(颜色编码:蓝色字段为离散字段,绿色字段为连续字段)。
维度是定性的,也就是说它们不能被测量,而是被描述。维度通常是城市或国家/地区、眼睛颜色、类别、团队名称等。维度通常是离散的。
度量是定量的,这意味着可以使用数字测量和记录它们。度量可以是销售额、高度、点击数等。在 Tableau Desktop 中,度量值将自动聚合;默认聚合为 SUM。度量通常是连续的。
离散的意思是单独分开或不同。丰田有别于马自达。在 Tableau Desktop 中,离散值作为标签进入视图,并创建区。
连续意味着形成一个完整的、连续的整体。7 后跟 8,然后与 9 的距离相同,7.5 介于 7 和 8 之间。在 Tableau Desktop 中,连续值作为轴进入视图。
维度通常是离散的,度量通常是连续的。然而,情况并不总是这样。日期可以是离散,也可以是连续的。
日期是维度,并且自动以离散的形式进入视图(又称日期部分,如“八月”,它考虑的是“八月”这个月份,而不考虑其他信息,如年份)。应用于具有离散日期的时间线的趋势线将分成多条趋势线,每个区一条。
如果愿意,我们可以选择使用连续日期(也称为日期截断,例如“2024 年 8 月”,与“2025 年 8 月”不同)。应用于具有连续日期的时间线的趋势线对于整个日期轴将只有一条趋势线。
提示:有关详细信息,请参见维度和度量(蓝色和绿色)。
在 Tableau Prep 中,对维度或度量不作任何区分。但是,了解离散或连续背后的概念对于了解配置窗格中数据的详细信息与摘要表示等内容非常重要。
详细信息:详细信息视图将每个域元素作为离散标签显示,并具有可视滚动条,以提供所有数据的可视概览。
摘要:摘要视图将数据以分桶方式显示在连续轴上,显示为直方图。
分桶和直方图
像年龄或薪水这样的字段被视为是连续的。34 岁和 35 岁之间有关系,34 岁离 35 岁就像 35 岁离 36 岁一样远。然而,一旦我们过了 10 岁左右,我们通常就不会说诸如“9 岁半”或“7 岁 9 个月”之类的话。我们已经按照整齐的以年为单位的增量对年龄进行了分桶。12,850 天大的人比 12,790 天大的人更老,但我们划定界限,说他们都是 35 岁。同样,年龄分组通常用来代替实际年龄。电影票的儿童价格可能适合 12 岁及以下的儿童,或者调查可能会要求您选择您的年龄组,例如 20-24、25-30 等。
直方图用于通过分桶来可视化数值数据的分布。直方图类似于柱状图,但是组成直方图的矩形并不是各个条形的离散类别,它们跨越了一个连续轴数据桶,例如花的数量的范围(0- 4、5 - 9、10 -14,等等)。矩形的高度由这些值的频率或计数确定。在这里,y 轴是放入每个数据桶中的植物的计数。七株植物有 0-4 朵花,两株有 5-9 朵花,43 株有 20-24 朵花。
在 Tableau Prep 中,摘要视图是分桶值的直方图。详细信息视图显示每个值的频率,并在旁边有一个显示数据总体分布的可视滚动条。
摘要视图 | 详细信息视图 |
分布和离群值
查看数据集的分布有助于离群值检测。
分布:直方图中数据的形状,尽管这取决于条形的大小。能够在直方图视图中查看所有数据,有助于确定数据是否正确和完整。只有在了解数据并可以解释分布是否有意义时,分布的形状才有用。
举例来说,如果我们查看 1940 年至 2017 年宽带互联网家庭数量的数据集,我们会看到一个非常倾斜的分布。但是,如果我们查看 2017 年 1 月至 2017 年 12 月宽带互联网的家庭数量,我们预计分布将相当均匀。
如果我们看一下 Google 搜索“南瓜香料拿铁”的数据集,我们预计在秋季会出现一个相当尖锐的峰值,而搜索“将摄氏度转换为华氏度”可能会相当稳定。
离群值:与其他值相比的极端值。离群值可能是正确的值,也可能表示错误。
某些离群值是正确的并指示实际异常;不应移除或修改这些值。
某些离群值表示数据清洁度问题,例如工资为 50 美元而不是 50,000 美元,因为键入了句点而不是逗号。
如果您看到这样的列表:
乍一看,它看起来并不奇怪。但是,如果不是一个标签列表,而是绘制在一个连续的分桶轴上,它看起来会是这样的:
更明显的是,最后一个观测值离第一个观测值更远,并且由于误差而可能是一个离群值。
数据类型
与电子表格不同,数据库通常对数据类型实施严格的规则。数据类型对给定字段中的数据进行分类,并提供有关如何格式化、解释数据以及可以对该数据执行哪些操作的信息。例如,可以对数值字段应用数学运算,并可以为地理字段生成地图。
Tableau Desktop 指定字段是维度还是度量,但字段的其他特征取决于其数据类型。这些由每个字段都有的图标指示(尽管某些类型共享一个图标)。Tableau Prep 使用相同的数据类型。如果对列强制执行数据类型,而现有值与指定的数据类型不匹配,则可能显示为 null(因为“紫色”不表示任何数字)。
某些函数需要特定数据类型。例如,不能将 CONTAINS 与数值字段一起使用。类型函数用于更改字段的数据类型。例如,DATEPARSE 可以采用特定格式的文本日期并将其设置为日期,从而在视图中启用自动下钻查询等功能。
图标 | 数据类型 |
---|---|
文本(字符串)值 | |
日期值 | |
日期和时间值 | |
数字值 | |
布尔值(仅限关系数据源) | |
地理值(用于地图) |
提示:有关详细信息,请参阅有关数据类型的帮助文章。
转置和取消转置数据
方便用户使用的数据通常以宽格式(包含多个列)捕获和记录。就像 Tableau 偏爱的一样,机器可读数据采用高格式(包含更少的列和更多的行)时效果更好。
注意:传统上,转置数据意味着从高格式转置为宽格式(行转置为列),取消转置意味着从宽格式转置为高格式(列转置为行)。但是,Tableau 使用“转置”一词表示,通过将列转换为行,从而从宽格式(方便用户使用)变为高格式(机器可读)。在本文档中,转置将引用该单词的 Tableau 意义。为清楚起见,它有助于指定“将列转置为行”或“将行转置为列”。
有关详细信息,请参阅帮助文章转置您的数据 和使用使用数据的提示。
宽数据
在 WHO 疟疾数据集中,有一个借助国家/地区的列,然后有一个代表每一年的列。每个单元格代表该国家/地区和年份的疟疾病例数。在此格式中,我们有 108 行和 16 列。
用户可以轻松地阅读和理解这种格式。但是,如果我们要将这些数据引入 Tableau Desktop,则每列将获得一个字段。我们有 2000 年的字段,2001 年的字段,2002 年的字段,等等。
换句话说,15 个字段都表示相同的基本情况(报告的疟疾病例数),没有一个字段表示时间。这使得跨时间的分析非常困难,因为数据存储在不同的字段中。
问:我们如何创建一个地图,显示 2000 年至 2014 年每个国家/地区的疟疾病例总数?
答:创建一个计算字段来对所有年份进行求和。
另一个表明这种格式不适合进行分析的迹象是,我们没有关于实际值含义的信息。对于 2012 年的阿尔及利亚,我们的值为 55。55 个什么?从数据结构上看不清楚。
如果列的名称没有描述值是什么,而是传达其他信息,则表示数据需要转置。
高数据
如果我们转置数据,就会将数据从宽格式转换为高格式。现在,我们有一个单一列“Year”(年份)和一个新列“Reported Cases”(报告的病例数),而没有表示每一年的列。在此格式中,我们有 1,606 行和 3 列。此数据格式更高而不是更宽。
现在在 Tableau Desktop 中,我们有一个“Year”(年份)字段和“Reported Cases”(报告的病例数)字段以及原来的“Country”(国家/地区)字段。分析起来要容易得多,因为每个字段都表示有关数据集的唯一特性(位置、时间和值)。
问:我们如何创建一个地图,显示 2000 年至 2014 年每个国家/地区的疟疾病例总数?
答:使用“Reported Cases”(报告的病例数)字段。
现在很容易看出,2012 年阿尔及利亚的 55 是指报告的病例数(因为我们可以为这个新列添加标签)。
注意:在此示例中,宽数据由每个国家/地区的单条记录组成。对于高数据格式,现在每个国家/地区都有 15 行(每一行表示数据中 15 个年份中的每一年)。请务必记住,现在每个国家/地区有多个行。
如果有一个表示“Land Area”(土地面积)的列,则在高数据结构中,该值对于每个国家/地区的 15 行中的每一行都会重复。如果通过将“Country”(国家/地区)拖入“行”,将“Land Area”(土地面积)拖示入“列”创建了条形图,则默认情况下,视图将对每个国家/地区所有 15 行的土地面积求和。
对于某些字段,可能需要通过聚合平均值或最小值(而不是求和或筛选)来补偿重复计数值。
标准化
关系数据库由多个表组成,这些表可能以某种方式关联或链接在一起。每个表包含每个记录的唯一标识符或键。通过对键进行关联或联接,可以链接记录以提供比单个表中所包含信息更多的信息。进入每个表的信息取决于所使用的数据模型,但一般原则是减少重复。
例如,假设有一个针对婚礼等活动的活动规划。我们需要跟踪群体(如家庭或夫妇)以及个人级别的信息。
可以创建一个将所有信息合并在一起的表:
但是,如果地址不正确且需要修复,则必须跨多个行进行修复,从而可能导致错误或冲突。更好的结构是创建两个表,一个用于与群体有关的信息(例如地址和是否发送了邀请),另一个用于与个人有关的信息(如座位分配和饮食限制)。
群体表 | 个人表 |
在群体表中跟踪和分析群体级别信息以及在个人表中跟踪和分析个人级别信息要容易得多。例如,可以通过个人表中的“Attending = Yes”(出席 = 是)记录数中获得所需的椅子数,并且可以通过群体表中“Gift”(礼品)不为 null 的记录数中获取致谢函所需的邮票数。
将所有数据分解为多个表并找出哪个表包含哪些列的过程称为标准化。标准化有助于减少冗余数据并简化数据库的组织。
但是,有时可能需要跨多个表的信息。举例来说,如果我们想要平衡座位安排(个人),使新娘这边的群体与新郎这边的群体混杂在一起,该怎么办?(在群体级别对新娘或新郎的所属关系进行跟踪。)为此,我们需要将表重新关联在一起,以便个人与其群体的相关信息关联。正确的标准化不仅仅是分解表,它还需要有一个共享的关联字段或唯一标识符,可用于将数据重新合并在一起。此处的关联字段为“Group”(群体)。该字段存在于两个表中,因此我们可以在此字段上联接并恢复为原始的单表格式。这是一个去规范化结构。
那么,我们为什么不保留原来的去规范化表呢?它更难维护,并且存储冗余信息。从规模上看,数据重复的程度可能很大。反复存储相同的信息是没有效率的。
规范化表具有一些关键属性:
每行都需要一个唯一的标识符
每个表都需要一个或多个可用于将其连接回其他表的列(键)。
这些共享(键)列用于将表重新关联或联接在一起。对于我们的数据,关系或联接子句将位于每个表中的“Group”(群体)字段上。
联接类型
尽管在 Tableau Desktop 中用于合并数据的默认方法是关联,但在某些情况下,您可能希望在 Tableau Desktop 或 Tableau Prep Builder 中联接表。有关联接和联接类型的基本概述,请参见联接数据。
“整洁”数据
Hadley Wickham 于 2014 年在《Journal of Statistical Softwar》上发表了一篇文章,名为《Tidy Data》(整洁数据,2014 年 8 月,第 59 卷,第 10 期)。本文出色地为数据设计了一个结构良好的分析框架。这篇文章可在此处(Hadley Wickham 的学术组合)(链接在新窗口中打开)或此处(由 r-project.org 托管)(链接在新窗口中打开)找到。
注意:该文章托管在外部网站上。Tableau 对外部提供商所维护的页面的准确性或新鲜度不担负任何责任。如果您对其内容有任何疑问,请与所有者联系。