

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 进行探索性数据分析 (EDA)
<a name="canvas-analyses"></a>

Data Wrangler 包含内置的分析，您只需单击几下，即可生成可视化和数据分析。您还可以使用自己的代码创建自定义分析。

通过在数据流中选择一个步骤，然后选择**添加分析**，可以将分析添加到数据框中。要访问您创建的分析，请选择包含该分析的步骤，然后选择分析。

分析使用数据集最多 20 万行的样本生成，您可以配置样本大小。有关更改数据流样本大小的更多信息，请参阅 [编辑数据流采样配置](canvas-data-flow-edit-sampling.md)。

**注意**  
分析针对 1000 列或更少列的数据进行了优化。在为包含额外列的数据生成分析时，您可能会遇到一些延迟。

您可以将以下分析添加到数据框中：
+ 数据可视化，包括直方图和散点图。
+ 数据集的快速摘要，包括条目数、最小值和最大值（对于数字数据）以及最频繁和最少的类别（对于分类数据）。
+ 数据集的快速模型，可用于为每个特征生成重要性得分。
+ 目标泄漏报告，您可以使用该报告来确定一个或多个特征是否与目标特征密切关联。
+ 使用自己的代码进行自定义可视化。

可通过以下部分了解有关这些选项的更多信息。

## 深入了解数据和数据质量
<a name="canvas-data-insights"></a>

使用**数据质量和见解报告**对您导入到 Data Wrangler 中的数据进行分析。建议您在导入数据集之后创建报告。可以使用该报告来协助您清理和处理自己的数据。该报告为您提供诸如缺失值数量和异常值数量之类的信息。如果您的数据存在问题，例如目标泄漏或不平衡，则见解报告可以让您注意到这些问题。

按照以下过程创建数据质量和见解报告。该过程假设您已将数据集导入到 Data Wrangler 流中。

**创建数据质量和见解报告**

1. 选择 Data Wrangler 流中节点旁边的省略号图标。

1. 选择**获取数据见解**。

1. 对于**分析类型**，选择**数据质量和见解报告**。

1. 对于**分析名称**，为见解报告指定名称。

1. 对于**问题类型**，请指定**回归**或**分类**。

1. 对于**目标列**，指定目标列。

1. 对于**数据大小**，指定下列项之一：
   + **采样数据集**：使用数据流中的交互式样本，其中最多可包含 200000 行数据集。有关如何编辑样本大小的信息，请参阅 [编辑数据流采样配置](canvas-data-flow-edit-sampling.md)。
   + **完整数据集**：使用数据来源中的完整数据集创建报告。
**注意**  
针对完整数据集创建数据质量和见解报告需要使用 Amazon SageMaker 处理任务。 SageMaker 处理任务预置了获取所有数据见解所需的额外计算资源。有关 SageMaker 处理任务的更多信息，请参阅[带 SageMaker 处理功能的数据转换工作负载](processing-job.md)。

1. 选择**创建**。

下面的主题说明了报告的各个部分：

**Topics**
+ [Summary](#canvas-data-insights-summary)
+ [目标列](#canvas-data-insights-target-column)
+ [快速模型](#canvas-data-insights-quick-model)
+ [特征摘要](#canvas-data-insights-feature-summary)
+ [样本](#canvas-data-insights-samples)
+ [定义](#canvas-data-insights-definitions)

可以下载报告或在线查看。要下载报告，请选择屏幕右上角的下载按钮。

### Summary
<a name="canvas-data-insights-summary"></a>

见解报告对数据进行了简单汇总，其中包括缺失值、无效值、特征类型、异常值计数等一般信息。还可能包括高严重性警告，这些警告指出数据可能存在问题。我们建议您对警告进行调查研究。

### 目标列
<a name="canvas-data-insights-target-column"></a>

在创建数据质量和见解报告时，Data Wrangler 会为您提供选项来选择目标列。目标列是要预测的列。在选择目标列时，Data Wrangler 会自动创建目标列分析。它还按特征的预测能力顺序对特征进行排名。选择目标列时，必须指定是要解决回归问题还是分类问题。

对于分类，Data Wrangler 会显示最常见分类的表和直方图。分类是指类别。它还会显示目标值缺失或无效的观测值或行。

对于回归，Data Wrangler 会显示目标列中所有值的直方图。它还会显示带有缺失、无效或异常值目标值的观测值或行。

### 快速模型
<a name="canvas-data-insights-quick-model"></a>

**快速模型**提供您用于训练数据的模型的预期预测质量的估计值。

Data Wrangler 将您的数据拆分为训练层和验证层。它使用 80% 的样本进行训练，使用 20% 的值进行验证。对于分类，对样本进行分层分割。对于分层分割，每个数据分区的标签比例相同。对于分类问题，训练层和分类层之间的标签比例必须相同，这一点非常重要。Data Wrangler 使用默认的超参数训练 XGBoost 模型。它对验证数据进行提前停止，并执行最少的特征预处理。

对于分类模型，Data Wrangler 会返回模型摘要和混淆矩阵。

 要了解有关分类模型摘要返回的信息的更多信息，请参阅 [定义](#canvas-data-insights-definitions)。

混淆矩阵提供了以下信息：
+ 预测标签与真实标签匹配的次数。
+ 预测标签与真实标签不匹配的次数。

真实标签表示数据中的实际观察值。例如，如果您使用模型来检测欺诈性交易，那么真实标签表示实际上是欺诈性交易或非欺诈性交易。预测标签表示模型为数据分配的标签。

可以使用混淆矩阵来查看模型对状况存在或不存在的预测程度。如果您预测的是欺诈性交易，可以使用混淆矩阵来了解模型的敏感性和特定性。敏感性是指模型检测欺诈性交易的能力。特定性是指该模型能够避免将非欺诈性交易检测为欺诈性交易。

### 特征摘要
<a name="canvas-data-insights-feature-summary"></a>

当您指定目标列时，Data Wrangler 会根据特征的预测能力对特征进行排序。预测能力是在将数据拆分为 80% 训练层和 20% 验证层之后，根据数据来衡量的。Data Wrangler 在训练层上分别拟合每个特征的模型。它应用最少的特征预处理并衡量验证数据的预测性能。

它将得分标准化为范围 [0,1]。预测得分越高，表示列自身对用于预测目标更有用。得分较低的列表示无法用于预测目标列的列。

某一列无法单独用于预测，但与其他列一起使用时具有预测性，这种情况并不常见。您可以放心地使用预测得分来确定数据集内的某个特征是否具有预测性。

得分低通常表示该特征是多余的。得分为 1 表示完美的预测能力，这通常表示目标泄漏。目标泄漏通常发生在数据集包含预测时不可用的列时。例如，它可能是目标列的重复项。

### 样本
<a name="canvas-data-insights-samples"></a>

Data Wrangler 提供有关样本是否异常或数据集内是否存在重复项的信息。

Data Wrangler 使用*孤立森林算法*来检测异常样本。孤立森林算法将异常得分与数据集的每个样本（行）相关联。异常得分低表示样本异常。高得分与非异常样本关联。异常得分为负的样本通常被视为异常样本，异常得分为正的样本被视为非异常样本。

查看可能存在异常的样本时，我们建议您注意异常值。例如，可能会由于收集和处理数据时出错而存在的异常值。根据 Data Wrangler 对孤立森林算法的实施，以下是异常程度最高的样本示例。我们建议您在检查异常样本时运用专业领域知识和业务逻辑。

Data Wrangler 会检测重复行，并计算您的数据中重复行的比例。某些数据来源可能包含有效的重复项。其他数据来源可能具有表明数据收集存在问题的重复项。由于数据收集错误而产生的重复样本可能会干扰依赖于将数据拆分为独立训练层和验证层的机器学习流程。

以下是见解报告中可能受到重复样本影响的元素：
+ 快速模型
+ 预测能力估计
+ 自动超参数优化

可以使用**管理行**下的**删除重复项**转换，从数据集内删除重复样本。Data Wrangler 会显示重复程度最高的行。

### 定义
<a name="canvas-data-insights-definitions"></a>

以下是数据见解报告中使用的技术术语的定义。

------
#### [ Feature types ]

以下是每种特征类型的定义：
+ **数字** – 数字值可以是浮点数或整数，例如年龄或收入。机器学习模型假设数字值是有序的，并且在数字值上定义了距离。例如，3 比 10 更接近 4，3 < 4 < 10。
+ **分类**：列条目属于一组唯一值，这组值通常比列中的条目数小得多。例如，长度为 100 的列可以包含唯一值 `Dog`、`Cat`、和 `Mouse`。值可以是数字、文本或两者的组合。`Horse`、`House`、`8`、`Love` 和 `3.1` 都可以是有效值，可在同一个分类列中找到。与数字特征相比，即使所有值都是数字，机器学习模型也不会对分类特征值采用顺序或距离。
+ **二进制** – 二进制特征是一种特殊的分类特征类型，其中唯一值集的基数为 2。
+ **文本** – 文本列包含许多非数字唯一值。在极端情况下，该列的所有元素都是唯一的。在极端情况下，没有两个条目是相同的。
+ **日期时间** – 日期时间列包含有关日期或时间的信息。其中可以同时包含有关日期和时间的信息。

------
#### [ Feature statistics ]

以下是每个特征统计数据的定义：
+ **预测能力** – 预测能力衡量该列在预测目标方面的作用如何。
+ **异常值**（在数字列中）– Data Wrangler 使用两个对异常值稳健的统计数据来检测异常值：中位数和稳健标准差 (RSTD)。通过将特征值裁剪到 [5 百分位数，95 百分位数] 范围并计算剪切向量的标准差，可得出 RSTD。所有大于“中位数 \$1 5 \$1 RSTD”或小于“中位数 – 5 \$1 RSTD”的值都被视为异常值。
+ **偏度**（在数字列中）– 偏度测量分布的对称性，并定义为分布的第三矩除以标准差的三次方。正态分布或任何其他对称分布的偏度为零。正值表示分布的右尾比左尾要长。负值表示分布的左尾比右尾要长。根据经验法则，当偏度的绝对值大于 3 时，分布被视为不对称。
+ **峰度**（在数字列中）– Pearson 峰度测量分布尾部的沉重度。它被定义为分布的第四矩除以第二矩的平方。正态分布的峰度为 3。峰度值低于 3 意味着分布集中在均值周围，尾部比正态分布的尾部轻。峰度值大于 3 表示尾部或异常值较重。
+ **缺失值** – 类似 NULL 的对象、空字符串以及仅由空格组成的字符串被视为缺失值。
+ **数值特征或回归目标的有效值** – 可以转换为有限浮点数的所有值均为有效值。缺失值无效。
+ **分类、二进制或文本特征的有效值或分类目标的有效值** – 所有未缺失的值均为有效值。
+ **日期时间特征** – 可以转换为日期时间对象的所有值均为有效值。缺失值无效。
+ **无效值** – 缺失或无法正确转换的值。例如，在数字列中，不能转换字符串 `"six"` 或 null 值。

------
#### [ Quick model metrics for regression ]

以下是快速模型指标的定义：
+ R2 或决定系数 – R2 是模型预测的目标差异的比例。R2 在 [-infty, 1] 范围内。1 是完美预测目标的模型的得分，0 是始终预测目标均值的平凡模型的得分。
+ MSE 或均方误差：MSE 在 [0, infty] 范围内。0 是完美预测目标的模型的得分。
+ MAE 或平均绝对误差：MAE 在 [0, infty] 范围内，其中 0 是完美预测目标的模型的得分。
+ RMSE 或均方根误差：RMSE 在 [0, infty] 范围内，其中 0 是完美预测目标的模型的得分。
+ 最大误差 – 数据集上误差的最大绝对值。最大误差在 [0，infty] 范围内。0 是完美预测目标的模型的得分。
+ 绝对误差中值：绝对误差中位数在 [0, infty] 范围内。0 是完美预测目标的模型的得分。

------
#### [ Quick model metrics for classification ]

以下是快速模型指标的定义：
+ **准确性** – 准确性是准确预测的样本的比率。准确性在 [0, 1] 范围内。0 是不正确预测所有样本的模型的得分，1 是完美模型的得分。
+ **平衡准确性** – 平衡准确性是调整分类权重来平衡数据时准确预测的样本的比率。无论分类的频率如何，所有分类都被赋予相同的重要性。平衡准确性在 [0, 1] 范围内。0 是错误预测所有样本的模型的得分，1 是完美模型的得分。
+ **AUC（二进制分类）**– 这是接收者操作特征曲线下方的区域。AUC 在 [0, 1] 范围内，其中随机模型返回的得分为 0.5，完美模型返回的得分为 1。
+ **AUC (OVR)** – 对于多分类器，这是接收者操作特征曲线下方的区域，对每个标签分别使用一个分类计算，并使用其余分类进行计算。Data Wrangler 会报告区域的平均值。AUC 在 [0, 1] 范围内，其中随机模型返回的得分为 0.5，完美模型返回的得分为 1。
+ **精度** – 精度是为特定分类定义的。精度是模型归类为该分类的所有实例中真阳性的比例。精度在 [0, 1] 范围内。1 是该分类没有误报的模型的得分。对于二进制分类，Data Wrangler 会报告正类的精度。
+ **查全率** – 查全率是针对特定分类定义的。查全率是成功检索的相关分类实例的比例。查全率在 [0, 1] 范围内。1 是正确对分类的所有实例进行分类的模型的得分。对于二进制分类，Data Wrangler 会报告正类的查全率。
+ **F1** – F1 是为特定分类定义的。它是精度和查全率之间的调和平均数。F1 在 [0, 1] 范围内。1 是完美模型的得分。对于二进制分类，Data Wrangler 会报告具有正值的分类的 F1。

------
#### [ Textual patterns ]

**模式**使用一种易于阅读的格式描述字符串的文本格式。以下是文本模式的示例：
+ “\$1digits:4-7\$1”描述了长度介于 4 到 7 之间的数字序列。
+ “\$1alnum:5\$1”描述了一个长度正好为 5 的字母数字字符串。

Data Wrangler 通过查看数据中的非空字符串样本，来推断模式。它可以描述许多常用的模式。**置信度**以百分比形式表示，指示估计有多少数据与该模式匹配。使用文本模式，可以了解需要更正或删除数据中的哪些行。

以下内容描述了 Data Wrangler 可识别的模式：


| 模式 | 文本格式 | 
| --- | --- | 
|  \$1alnum\$1  |  字母数字字符串  | 
|  \$1any\$1  |  任何单词字符串  | 
|  \$1digits\$1  |  数字序列  | 
|  \$1lower\$1  |  小写单词  | 
|  \$1mixed\$1  |  大小写混合的单词  | 
|  \$1name\$1  |  以大写字母开头的单词  | 
|  \$1upper\$1  |  大写单词  | 
|  \$1whitespace\$1  |  空格字符  | 

单词字符可以是下划线，也可以是可能会出现在任何语言的单词中的字符。例如，字符串 `'Hello_word'` 和 `'écoute'` 都由单词字符组成。“H”和“é”都是单词字符的示例。

------

## 偏差报告
<a name="canvas-bias-report"></a>

SageMaker Canvas 在 Data Wrangler 中提供了偏差报告，以帮助发现数据中的潜在偏差。偏差报告分析目标列（标签）与您认为可能包含偏差的列（面变量）之间的关系。例如，如果您要预测客户转化率，分面变量可能是客户的年龄。偏差报告可帮助您确定数据是否偏向某个年龄组。

要在 Canvas 中生成偏差报告，请执行以下操作：

1. 在 Data Wrangler 的数据流中，选择数据流中节点旁边的**更多选项**图标 (![\[Vertical ellipsis icon representing a menu or more options.\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/studio/canvas/more-options-icon.png))。

1. 从上下文菜单中选择**获取数据见解**。

1. 此时将打开**创建分析**侧面板。在**分析类型**下拉菜单中，选择**偏差报告**。

1.  在**分析名称**字段中，输入偏差报告的名称。

1. 在**选择您的模型预测的列（目标）**下拉菜单中，选择目标列。

1. 在**您的预测列是值还是阈值？**中，如果目标列具有分类值，请选择**值**；如果目标列有数值，请选择**阈值**。

1. 在**预测值**（或**预测阈值**，取决于您在上一步中的选择）中，输入一个或多个与正面结果对应的目标列值。例如，如果预测客户转换率，则您的值可能是 `yes`，表示客户已转换。

1. 在**选择要分析偏差的列**下拉菜单中，选择您认为可能包含偏差的列，也称为分面变量。

1. 在**您的列是值还是阈值？**中，如果分面变量具有分类值，请选择**值**；如果分面变量具有值，请选择**阈值**。

1. 在**要分析偏差的列值**（或**要分析偏差的列阈值**，取决于您在上一步中的选择），输入您要分析潜在偏差的一个值或多个值。例如，如果您要检查对某一年龄段以上的客户是否存在偏差，则使用此年龄段的起始点作为阈值。

1. 在**选择偏差指标**中，选择要包含在偏差报告中的偏差指标。将鼠标悬停在信息图标上，可获取有关每个指标的更多信息。

1. （可选）当提示**您是否要分析其他指标？**选项时，选择**是**以查看并包含更多偏差指标。

1. 当您准备好创建偏差报告时，选择**添加**。

生成报告后，将为您提供所选偏差指标的概述。您可以随时从数据流的**分析**选项卡查看偏差报告。

## 直方图
<a name="canvas-visualize-histogram"></a>

使用直方图可以查看特定特征的特征值计数。您可以使用**着色方式**选项检查特征之间的关系。

您可以使用**划分方式**功能为一个列中的每个值创建另一个列的直方图。

## 散点图
<a name="canvas-visualize-scatter-plot"></a>

使用**散点图**功能可以检查各特征之间的关系。要创建散点图，请选择要在 **X 轴**和 **Y 轴**上绘制的特征。这两列都必须是数字类型的列。

您可以通过额外的列为散点图着色。

此外，您还可以按特征划分散点图。

## 表摘要
<a name="canvas-table-summary"></a>

使用**表摘要**分析可以快速总结数据。

对于包含数值数据（包括日志和浮点数据）的列，表摘要会报告每列的条目数 (count)、最小值 (min)、最大值 (max)、均值和标准差 (stddev)。

对于包含非数值数据的列，包括带有字符串、布尔值或 date/time 数据的列，表格摘要会报告条目数（计数）、频率最低的值（最小值）和最频繁的值（最大值）。

## 快速模型
<a name="canvas-quick-model"></a>

使用**快速模型**可视化可以快速评估数据并为每个特征生成重要性得分。一个[特征重要性得分](http://spark.apache.org/docs/2.1.0/api/python/pyspark.ml.html#pyspark.ml.classification.DecisionTreeClassificationModel.featureImportances)指明特征在预测目标标签方面的有用性。特征重要性得分介于 [0, 1] 之间，数字越高表示该特征对整个数据集更重要。在快速模型图表的顶部，有一个模型得分。分类问题显示 F1 得分。回归问题有均方差 (MSE) 得分。

创建快速模型图表时，您可以选择要评估的数据集，以及要比较特征重要性的目标标签。Data Wrangler 会执行以下操作：
+ 推断目标标签的数据类型以及所选数据集内的每个特征的数据类型。
+ 确定问题类型。根据标签列中不同值的数量，Data Wrangler 确定这是回归还是分类问题类型。Data Wrangler 将分类阈值设置为 100。如果标签列中存在超过 100 个不同的值，Data Wrangler 会将其归类为回归问题；否则，会将其归类为分类问题。
+ 预处理特征和标签数据以供训练。所使用的算法要求将特征编码为向量类型，将标签编码为双精度类型。
+ 使用 70% 的数据训练随机森林算法。Spark [RandomForestRegressor](https://spark.apache.org/docs/latest/ml-classification-regression.html#random-forest-regression)'s 用于训练回归问题的模型。[RandomForestClassifier](https://spark.apache.org/docs/latest/ml-classification-regression.html#random-forest-classifier)用于训练模型以解决分类问题。
+ 使用剩余 30% 的数据评估随机森林模型。Data Wrangler 使用 F1 得分评估分类模型，并使用 MSE 得分评估回归模型。
+ 使用基尼重要性方法计算每个特征的特征重要性。

## 目标泄漏
<a name="canvas-analysis-target-leakage"></a>

当机器学习训练数据集内存在与目标标签密切相关但在真实世界数据中不可用的数据时，就会发生目标泄漏。例如，您的数据集内可能有一列作为您要在模型中预测的列的代理。

使用**目标泄漏**分析时，可以指定以下内容：
+ **目标**：这是您希望机器学习模型能够预测的特征。
+ **问题类型**：这是您正在处理的 ML 问题类型。问题类型可以是**分类**，也可以是**回归**。
+  （可选）**最大特征数**：这是要在可视化中显示的最大特征数，它显示了按目标泄漏风险排序的特征。

为了进行分类，目标泄漏分析使用接收者操作特征下的区域，或者对每一列使用 AUC - ROC 曲线，直到达到**最大特征数**。对于回归，使用确定系数或 R2 指标。

AUC - ROC 曲线提供了一个预测指标，该指标使用交叉验证为每列单独计算，样本最多约为 1000 行。得分为 1 表示完美的预测能力，这通常表示目标泄漏。得分为 0.5 或更低，表明该栏中的信息本身无法提供预测目标的任何有用信息。尽管一列本身可能无法提供信息，但与其他特征一起使用时可用于预测目标，但如果得分较低，可能表示该特征是多余的。

## 多重共线性
<a name="canvas-multicollinearity"></a>

多重共线性是指两个或多个预测变量相互关联的情况。预测变量是数据集内用来预测目标变量的特征。当您具有多重共线性时，预测变量不仅可以预测目标变量，还可以相互预测。

您可以使用**方差膨胀系数 (VIF)**、**主成分分析 (PCA)** 或 **Lasso 特征选择**作为数据中多重共线性的度量。有关更多信息，请参阅下列内容。

------
#### [ Variance Inflation Factor (VIF) ]

方差膨胀系数 (VIF) 是衡量变量对之间共线性的指标。Data Wrangler 返回一个 VIF 得分，以此来衡量变量彼此之间的紧密关系。VIF 得分是一个大于等于 1 的正数。

得分为 1 表示该变量与其他变量不相关。得分大于 1 表示相关性更高。

理论上，您可以获得一个值为无穷大的 VIF 得分。Data Wrangler 将高得分限制为 50。如果您的 VIF 得分大于 50，则 Data Wrangler 会将得分设置为 50。

您可以使用以下准则来解释 VIF 得分：
+ VIF 得分小于或等于 5 表示变量与其他变量之间具有中度相关性。
+ VIF 得分大于或等于 5 表示变量与其他变量高度相关。

------
#### [ Principle Component Analysis (PCA) ]

主成分分析 (PCA) 测量数据在特征空间中沿不同方向的方差。特征空间由用于预测数据集内目标变量的所有预测变量构成。

例如，如果您想要预测谁在*泰坦尼克号皇家邮轮*撞上冰山后幸存下来，那么您的特征空间可以包括乘客的年龄、性别以及他们支付的票价。

PCA 从特征空间生成有序的方差列表。这些方差也称为奇异值。方差列表中的值大于或等于 0。我们可以使用这些值来确定我们的数据中存在多少多重共线性。

当数字大致相等时，数据中很少出现多重共线性情况。当值之间存在很多可变性时，我们就会有许多多重共线性情况。在执行 PCA 之前，Data Wrangler 会将每个特征标准化，实现平均值为 0，标准差为 1。

**注意**  
在这种情况下，PCA 也可以称为奇异值分解 (SVD)。

------
#### [ Lasso feature selection ]

Lasso 特征选择使用 L1 正则化技术，只包含数据集内预测性最高的特征。

对于分类和回归，正则化技术会为每个特征生成一个系数。系数绝对值为该特征提供了重要性得分。重要性得分越高，表示对目标变量的预测性越强。一种常见的特征选择方法是使用 lasso 系数为非零值的所有特征。

------

## 检测时间序列数据中的异常
<a name="canvas-time-series-anomaly-detection"></a>

您可以使用异常检测可视化来查看时间序列数据中的异常值。要了解决定异常的因素，您需要明白，我们将时间序列分解为预测项和误差项。我们将时间序列的季节性和趋势视为预测项。我们将残差视为误差项。

对于误差项，您可以指定阈值，当残差远离平均值的偏差标准数达到该阈值时，便会将其视为异常。例如，您可以将阈值指定为 3 个标准差。任何距离平均值大于 3 个标准差的残差均为异常。

您可以使用以下步骤执行**异常检测**分析。

1. 打开 Data Wrangler 数据流。

1. 在您的数据流中，在**数据类型**下，选择 **\$1**，然后选择**添加分析**。

1. 对于**分析类型**，选择**时间序列**。

1. 对于**可视化**，选择**异常检测**。

1. 对于**异常阈值**，选择将某个值视为异常的阈值。

1. 选择**预览**以生成分析的预览。

1. 选择**添加**，将转换添加到 Data Wrangler 数据流中。

## 时间序列数据中的季节性趋势分解
<a name="canvas-seasonal-trend-decomposition"></a>

您可以使用季节性趋势分解可视化，来确定时间序列数据中是否存在季节性。我们使用 STL（使用 LOESS 进行季节性趋势分解）方法进行分解。我们将时间序列分解为季节性、趋势和残差成分。这一趋势反映了该系列的长期进展。季节性成分是在一段时间内重复出现的信号。从时间序列中删除趋势和季节性成分后，您就获得了残差。

可以使用以下步骤执行**季节性趋势分解**分析。

1. 打开 Data Wrangler 数据流。

1. 在您的数据流中，在**数据类型**下，选择 **\$1**，然后选择**添加分析**。

1. 对于**分析类型**，选择**时间序列**。

1. 对于**可视化**，请选择**季节性趋势分解**。

1. 对于**异常阈值**，选择将某个值视为异常的阈值。

1. 选择**预览**以生成分析的预览。

1. 选择**添加**，将转换添加到 Data Wrangler 数据流中。

## 创建自定义可视化
<a name="canvas-visualize-custom"></a>

您可以向 Data Wrangler 流添加分析，来创建自定义可视化。您的数据集以及您应用的所有变换，都可以 [Pandas DataFrame](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html) 的形式提供。Data Wrangler 使用 `df` 变量来存储数据框。可以通过调用变量来访问该数据框。

必须提供输出变量 `chart`，以便存储 [Altair](https://altair-viz.github.io/) 输出图表。例如，您可以通过以下代码块，使用泰坦尼克号数据集创建自定义直方图。

```
import altair as alt
df = df.iloc[:30]
df = df.rename(columns={"Age": "value"})
df = df.assign(count=df.groupby('value').value.transform('count'))
df = df[["value", "count"]]
base = alt.Chart(df)
bar = base.mark_bar().encode(x=alt.X('value', bin=True, axis=None), y=alt.Y('count'))
rule = base.mark_rule(color='red').encode(
    x='mean(value):Q',
    size=alt.value(5))
chart = bar + rule
```

**要创建自定义可视化，请执行以下操作：**

1. 在包含要可视化的变换的节点旁边，选择 **\$1**。

1. 选择**添加分析**。

1. 对于**分析类型**，选择**自定义可视化**。

1. 在**分析名称**中指定名称。

1. 在代码框中输入您的代码。

1. 选择**预览**以预览可视化。

1. 选择**保存**以添加可视化。

如果您不知道如何在 Python 中使用 Altair 可视化包，可以使用自定义代码片段来协助您开始入手。

Data Wrangler 有一系列可搜索的可视化代码片段。要使用可视化代码片段，请选择**搜索示例代码片段**，然后在搜索栏中指定查询。

下面的示例使用**分仓散点图**代码片段，其中绘制了一个双维度直方图。

这些代码片段包含注释，有助于您了解需要对代码进行哪些更改。您通常需要在代码中指定自己的数据集的列名。

```
import altair as alt

# Specify the number of top rows for plotting
rows_number = 1000
df = df.head(rows_number)  
# You can also choose bottom rows or randomly sampled rows
# df = df.tail(rows_number)
# df = df.sample(rows_number)


chart = (
    alt.Chart(df)
    .mark_circle()
    .encode(
        # Specify the column names for binning and number of bins for X and Y axis
        x=alt.X("col1:Q", bin=alt.Bin(maxbins=20)),
        y=alt.Y("col2:Q", bin=alt.Bin(maxbins=20)),
        size="count()",
    )
)

# :Q specifies that label column has quantitative type.
# For more details on Altair typing refer to
# https://altair-viz.github.io/user_guide/encoding.html#encoding-data-types
```