跳至主要内容

在 Tableau 中计算字段

通过分步教程与示例,学习如何在 Tableau 中创建字段,从简单到更复杂。
· 10分钟 阅读

使用 AI 探索

在从数据中提炼洞见时,创建新的变量或字段至关重要。很多时候,数据集并不包含提取洞见所需的全部信息,但我们可以从现有字段推导出新特征,例如平均值、比率、分箱以及分类变量。大多数情况下,为了获得更清晰的分析与可视化,我们都需要创建新字段。

在本教程中,我们将带您逐步在 Tableau 中创建字段。从简单示例开始,逐步过渡到更复杂的用法,最后还会提供进一步的技巧与资源,帮助您熟练掌握 Tableau 中这一非常实用的功能。

什么是 Tableau 计算字段?

计算字段是Tableau 最强大的功能之一。它可以基于现有数据创建新数据。例如,假设我们想根据公寓的特征来预测纽约一套公寓的价格,比如卧室数量、浴室数量等等。

了解公寓距离地铁站多远可能很有用,但数据集中并没有直接给出这条信息。因此,我们需要从现有字段(如地址)中推导。您可以在我们的课程中轻松学习这一 Tableau 功能。

为什么要使用 Tableau 计算字段?

鉴于 Tableau 在创建数据可视化方面的流行,为什么创建计算字段至关重要?原因有以下几点:

1. 当筛选器不够用时

有时,在存在缺失数据或条件繁多时,很难直接应用筛选器。当需要考虑的条件很多时,构建一个计算字段可以为您节省时间。假设您在一家软件公司工作,想要根据用户注册至今的时间、在平台上花费的时长、使用过的功能以及付费金额,将用户划分为不同细分群体。处理如此多变量的逻辑可能会非常复杂,此时创建一个计算字段会比使用筛选工具更容易。

2. 当我们想要对数据进行分段时

在某些情况下,尤其是构建数据可视化时,需要从数值型特征创建分类特征。这被称为对数值数据进行“分箱”或“离散化”。一个常见示例是,不直接报告人们的具体年龄,而是将其分入年龄段,比如 16–25、26–35、36–45 等。这有助于保护数据集中个体的隐私。

3. 当我们想创建基础表达式时

创建计算字段的另一大优势,是可以基于一个或多个变量在行级转换数据。更改变量的单位就是一个常见示例。您可能希望将国际销售额统一为美元,或将英制单位转换为公制单位。

虽然这些按行计算会为数据集中的每一行返回一个值,但您也可以计算聚合度量(也称汇总统计量),以返回单一值,例如平均值、方差、最小值和最大值。

Tableau 计算字段教程

让我们用葡萄牙里斯本的 Airbnb 开放房源汇总数据做一些实践示例。数据来自 Inside Airbnb。每一行对应一个不同的 Airbnb 房源。

其中包含的特征有房东名称、街区、房间类型等。将 Tableau Public 安装到您的本地电脑后,直接以文本文件形式打开 listing.csv,然后就可以开始创建新字段了。

以下六个示例中,我们建议每次都从新建工作表开始,因为每次会用到不同的字段。

1. 创建一个简单字段

假设我们想按月可视化评论数量,但目前只有包含完整日期的 [Last Review] 字段。(在本例中,[Reviews Per Month] 是一个现有字段,我们将用它来校验结果。)因此,我们希望从该字段中提取月份。

要完成这个操作,需要以下步骤:

  1. 创建一个新工作表

  2. 右键单击 [Last Review]

  3. 选择 Create > Create a calculated field。

  4. 在计算编辑器中定义计算字段。Tableau 提供用于处理时间数据的日期函数,如 DAY、MONTH 和 YEAR。更多信息请参阅Tableau 文档。

  5. 在本用例中,我们在计算编辑器中添加 MONTH([Last Review])

  6. 完成公式后,将默认名称更改为 Month of Last Review,然后单击 OK。

  7. 在数据窗格中右键单击该度量并选择 Convert to Dimension,将 Month of Last Review 转为维度。

  8. 创建好新字段后,我们想研究里斯本各街区在不同月份的评论数量。将 Neighborhood 和 Month 拖到 Rows,将评论数量放入 Marks 窗格。

  9. 您会注意到 Tableau 默认对评论数量求和。我们可以更改聚合类型,但在此情境下求和是合理的,因此保持不变。

  10. 将评论数量字段拖到文本卡片,以按街区与月份显示评论数量。

  11. 通过右键单击 Month 字段中的某个空值并选择 Exclude,移除该字段的空值。

恭喜您!您已学会创建第一个 Tableau 计算字段,并使用了对时间数据非常有用的日期函数。此外,您还了解了如何利用行标题创建数据透视表并按字段进行筛选。

2. 使用 if-then 语句计算字段

我们还可以创建一个字段,用于研究在工作日与周末,价格如何随评论而变化。我们当然会预期周末的价格高于工作日,但也应考虑到有些客户并不会在退房当天写评论。

该字段可通过 IF-THEN 语句创建,它属于 Tableau 提供的逻辑函数。根据设定条件,它会返回特定的值。

步骤如下:

1. 新建一个工作表

2. 右键单击 Last Review。

3. 单击 Create > Create a calculated field。

4. 在空白框中编写 if-else 公式。这次需要从 Last Review 字段中提取星期,其中 1 和 7 分别对应周日和周六。因此,我们创建一个新变量 Weekend day:如果星期为周六或周日,则返回 ‘Weekend day’,否则返回 ‘Working day’。

If DATEPART('weekday',[Last Review]) IN (1, 7) THEN 'Weekend day'

ELSE 'Working day'

END

5. 完成后单击 OK

6. 同样将 weekend days 转换为 Dimension。

在本例中,我们想观察 2022 年周末与工作日的平均价格:

  1. Rows 中放入价格字段,并按平均值聚合;Columns 中放入 Weekend day 字段。
  2. 将最后一次Review的Month拖到 Marks 卡片,单击颜色以根据月份显示价格差异。
  3. 我们还要筛选年份。无需为最后评论的年份创建新变量,直接使用 Last Review 字段。将其拖到筛选框,选择 Years。然后单击 Next,选择 2022。
  4. 完成设置后单击 OK。
  5. 选择箱线图作为图表类型。
  6. 箱线图默认颜色为灰色。如需更改,右键单击任意箱线图并选择 Edit。
  7. 进入 Box plot 框
  8. 在 Fill 下拉列表中选择您喜欢的颜色

通过箱线图,我们可以直观地查看工作日与周末的价格分布。2022 年,周末的平均价格似乎高于工作日。通过最小值、第一四分位数、中位数、第三四分位数和最大值即可得出这一信息。

就最后评论的月份而言,可以观察到周末在 2 月和 6 月的平均价格最高,而工作日最贵的月份似乎是 1 月和 5 月。

3 Box Plots.png

3. 基于分组的计算字段

在 Airbnb 中,用户信任至关重要。房东的评论越多,用户就越倾向于信任其与其房源。因此,我们希望计算每位房东的评论总数。

可以通过使用 FIXED 表达式来实现。它会针对每个所考虑的维度计算一个值。此过程可分为以下步骤:

1. 新建一个工作表

2. 在菜单中单击 Analysis,并选择 Create Calculated Field...。

3. 将字段命名为 Reviews Per Host,并输入如下公式。表达式 FIXED 用于对数据分组,等同于 SQL 中的 GROUP BY。

{FIXED [Host Id],[Host Name]:SUM([Number Of Reviews])}

4. 输入正确公式后选择 OK。

很好!我们已创建 Reviews Per Host 字段。现在新建一个工作表,用堆叠条形图可视化这个新字段。

将该新字段的总和添加到 Rows,将 Host Id 和 Host Name 放入 Columns。然后点击排序图标,对评论数量排序,单击一次按评论数降序排列。

通过这些堆叠条形图,我们可以看到在里斯本获得评论数最高、也因此最受用户信任的前 14 位房东。

4. 创建计算字段用于筛选

上一个示例中创建的可视化比较杂乱。更好的方式是只查看评论数最高的房东。为此,我们将创建一个字段,用于筛选出评论数超过 5,000 的房东。

1. 新建一个工作表

2. 右键单击先前创建的 Reviews Per Host 字段。

3. 单击 Create > Create a calculated field。

4. 将字段命名为 Reviews 5k,并输入如下公式。IIF() 是一个逻辑函数,用于检查条件是否满足。本例中检查的条件是:每位房东的评论数是否大于 5,000。若满足条件,返回“Apply Filter”;否则返回“No filter”。

IIF([Reviews Per Host]>5000,'Apply Filter','No Filter')

5. 单击 OK

将该字段添加到数据集中后,我们可以复现构建 Reviews Per Host 时的相同图表。此外,将 Reviews 5k 添加到筛选框,并选择 Apply Filter。这样便可仅查看评论数超过 5,000 的房东。

我们可以看到有三位房东的评论数超过 7,000。最受欢迎的房东是 Pedro,拥有 9,000 条评论。

5. Tableau 分箱(Bins)计算

最后一部分:我们将平均价格划分为大小相等的不同组,称为分箱(bins)。分箱有助于将度量值组织到不同分组中。

例如,如果我们在研究工作日与周末的平均价格,按不同价格区间对这两个分布进行比较将更有洞见。

构建分箱的流程非常简单直观。

  1. 新建一个工作表
  2. 右键单击 Price。
  3. 单击 Create > Bins。
  4. 将分箱大小编辑为 500。
  5. 完成设置后单击 OK。

接下来,我们继续利用第二个示例中创建的 weekend day 字段,研究工作日与周末的平均价格。从之前的分析看,2022 年周末的平均价格高于工作日。现在我们通过将价格划分为不同区间来再次验证:

  1. Rows 中放入 Price 字段,并按平均值聚合
  2. 将 Weekend day 和 Price(bins) 拖入 Columns
  3. 将 Price(bins) 放入 Marks 卡片并单击 Color。
  4. 将 Last Reviews 字段拖入 filters,选择 Years。然后单击 Next 并选择 2022,最后单击 OK。

从两幅直方图可以看到,工作日的平均价格在 200 到 2500 区间达到最大,而周末包含更高平均价格的区间更多。这一方面会显著影响两个分布,也再次印证了第二个示例中的结论:周末的平均价格高于工作日。

在处理分箱时,另一项很实用的功能是可以在图例中修改分箱大小。

以下是创建动态参数以更改分箱大小的步骤:

  1. 在数据窗格顶部选择下拉箭头,并从选项中选择 Create Parameter。
  2. 将参数重命名为 Price Bins Control,将当前值设为 100。
  3. 在可允许的选项中,选择 Range。
  4. 将 Minimum 设为 100,Maximum 设为 5000,Step size 设为 100。
  5. 单击 OK。

创建该参数后,我们还需要编辑 Price (bins) 字段。将此前的 500 步长替换为 Price Bins Control 参数。操作如下:

  1. 右键单击 Price(Bins) 字段并选择 Edit。
  2. 单击分箱大小旁的下拉箭头并选择 Price Bins Control。
  3. 单击 OK。

随后,右键单击 Price Bins Control,选择 Show Parameter。此后即可通过该参数控制分箱大小。您可以点击右上角参数下方的两个箭头:左箭头减小分箱大小,右箭头增大分箱大小。

当您增大分箱大小时,会注意到直方图随之发生变化。

6. 计算 EXCLUDE 字段

EXCLUDE 是一种 Tableau 表达式,可创建去除部分细节的字段。在本教程中,我们可以使用它来查看排除街区后的评论数量。确实,在同一张表中同时可视化按街区分组的评论数量和不考虑街区的评论总数,是一件颇具挑战的事。开始之前,请新建一个工作表。

创建该字段的步骤如下:

1. 新建一个工作表

2. 在菜单中单击 Analysis,选择 Create Calculated Field。

3. 将字段命名为 Reviews no neighborhood,并输入以下公式。

{EXCLUDE [Neighborhood]:SUM([Number Of Reviews])}

4. 单击 OK。

5. 将新字段拖到数据透视表中的 Neighborhood 与 Number of Reviews 之间。

8 Reviews No Neighborhood.gif

更多 Tableau 资源

本文向您介绍了 Tableau 计算字段,并通过六个示例帮助您理解在探索性分析中为何需要计算字段。

借助本指南,您可以在学习使用 Tableau 的同时,学会创建计算字段。从一个简单假设出发,利用 Tableau 的这一功能将其付诸实践。您可以通过我们的 Data Analyst in Tableau 学习路径深入学习 Tableau,并借助我们的 Tableau 速查表快速上手。

主题