

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

# 使用 Amazon SageMaker Studio 经典笔记本中的交互式数据准备小工具获取数据见解
<a name="data-wrangler-interactively-prepare-data-notebook"></a>

可使用 Data Wrangler 数据准备小部件与数据进行交互、获取可视化效果、探索切实可行的见解并修复数据质量问题。

您可以通过 Amazon SageMaker Studio Classic 笔记本访问数据准备小工具。对于每一列，该组件会创建可视化，帮助您更好地了解其分布。如果某列存在数据质量问题，其标题中会显示警告。

要查看数据质量问题，请选择显示警告的列标题。您可以使用从见解和可视化中获得的信息，应用小部件的内置转换来帮助您解决问题。

例如，小部件可能检测到有一列只有一个唯一值，并向您显示警告。警告中提供了从数据集中删除该列的选项。

## 开始运行小部件
<a name="data-wrangler-interactively-prepare-data-notebook-getting-started"></a>

可使用以下信息，帮助您开始运行笔记本。

在 Amazon SageMaker Studio 经典版中打开笔记本电脑。有关打开笔记本的信息，请参阅[创建或打开 Amazon SageMaker Studio 经典笔记本电脑](notebooks-create-open.md)。

**重要**  
要运行小部件，笔记本必须使用以下映像之一：  
Python 3 (Data Science) 及 Python 3.7
Python 3 (Data Science 2.0) 及 Python 3.8
Python 3 (Data Science 3.0) 及 Python 3.10
SparkAnalytics 1.0
SparkAnalytics 2.0
有关映像的更多信息，请参阅[亚马逊 SageMaker 图片可用于 Studio Classic 笔记本电脑](notebooks-available-images.md)。

可使用以下代码导入数据准备小部件和 Pandas。小部件使用 Pandas 数据框分析数据。

```
import pandas as pd
import sagemaker_datawrangler
```

以下示例代码将文件加载到名为 `df` 的数据框中。

```
df = pd.read_csv("example-dataset.csv")
```

您可以使用能以 Pandas 数据框对象形式加载的任何格式的数据集。有关 pandas 格式的更多信息，请参阅 [IO 工具（文本、CSV HDF5、...）。](https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html)

以下单元格运行 `df` 变量以启动小部件。

```
df
```

数据框的顶部包含以下选项：
+ **查看 Pandas 表** – 在交互式可视化与 Pandas 表之间切换。
+ **使用数据集中的所有行计算见解。使用整个数据集可能会增加生成见解所需的时间。**– 如果不选择此选项，Data Wrangler 将为数据集的前 10000 行计算见解。

数据框会显示数据集的前 1000 行。每个列标题都包含一个堆叠条形图，显示该列的特征。此图显示了有效值、无效值和缺失值的比例。您可以将鼠标悬停在堆叠条形图的不同部分上，以获得计算出的百分比。

每列的标题中都有可视化。以下显示了列可能具有的可视化类型：
+ 分类 – 条形图
+ 数字 – 直方图
+ 日期时间 – 条形图
+ 文本 – 条形图

对于每种可视化，数据准备小部件都以橙色突出显示异常值。

当您选择一列时，它会打开一个侧面板。侧面板显示了**见解**选项卡。该窗格提供了以下类型值的计数：
+ 无效值 – 类型与列类型不匹配的值。
+ 缺失值 – 缺少的值，如 `NaN` 或 `None`。
+ 有效值 – 既不缺失也非无效的值。

对于数字列，**见解**选项卡显示了以下汇总统计数据：
+ 最小值 – 最小的值。
+ 最大值 – 最大的值。
+ 平均值 – 值的平均值。
+ 众数 – 出现频率最高的值。
+ 标准差 – 值的标准差。

对于分类列，**见解**选项卡显示了以下汇总统计数据：
+ 唯一值 – 列中唯一值的数量。
+ 最高频数 – 出现频率最高的值。

标题中带有警告图标的列存在数据质量问题。选择一列可打开**数据质量**选项卡，您可以使用该选项卡查找转换，以帮助解决问题。警告具有以下严重性级别之一：
+ 低 – 可能不会影响您的分析，但可能有助于修复的问题。
+ 中 – 可能会影响您的分析，但可能不是需要修复的关键问题。
+ 高 – 我们强烈建议修复的严重问题。

**注意**  
小部件对列进行排序，将存在数据质量问题的值显示在数据框顶部。还会突出显示导致问题的值。突出显示的颜色与严重性级别相对应。

在**建议的转换**下，可以选择一种转换来修复数据质量问题。小部件可以提供多种转换以修复问题。它可以为最适合问题的转换提供建议。您可以将光标移到转换上，获取有关转换的更多信息。

要将转换应用于数据集，可选择**应用并导出代码**。转换会修改数据集，并使用修改后的值更新可视化。转换的代码显示在笔记本的下一个单元格中。如果对数据集应用其他转换，小部件会将该转换追加到单元格。您可以使用小部件生成的代码执行以下操作：
+ 进行自定义，以更好地满足您的需求。
+ 用于您自己的工作流中。

您可以通过重新运行笔记本中的所有单元格，重现所做的所有转换。

小部件可以为目标列提供见解和警告。目标列即您尝试预测的列。可使用以下过程获取目标列见解。

要获取目标列见解，请执行以下操作。

1. 选择要用作目标列的列。

1. 选择**选择为目标列**。

1. 选择问题类型。小部件的见解和警告是根据问题类型定制的。以下是问题类型：
   + **分类** – 目标列包含分类数据。
   + **回归** – 目标列包含数字数据。

1. 选择**运行**。

1. （可选）在**目标列见解**下，选择一个建议的转换。

## 小部件中见解和转换的参考
<a name="data-wrangler-notebook-dataprep-assistant-reference"></a>

对于特征列（不是目标列的列），您可以获得以下见解，以警告您数据集存在问题。
+ **缺失值** – 该列包含缺失值，例如 `None`、`NaN`（不是数字）或 `NaT`（不是时间戳）。许多机器学习算法在输入数据中不支持缺失值。因此，填充或删除缺失数据的行是至关重要的数据准备步骤。如果您看到缺失值警告，可以使用以下转换之一来纠正此问题。
  + **删除缺失** – 删除含缺失值的行。如果缺失数据的行比例很小并且不适合填补缺失值，那么我们建议删除这些行。
  + **替换为新值** – 将文本缺失值替换为 `Other`。您可以在输出代码中将 `Other` 更改为其他值。用 0 替换数字缺失值。
  + **替换为平均值** – 用列的平均值替换缺失值。
  + **替换为中位数** – 用列的中位数替换缺失值。
  + **删除列** – 从数据集中删除含缺失值的列。当缺失数据的行比例很高时，我们建议删除整列。
+ **伪装的缺失值** – 该列包含伪装的缺失值。伪装的缺失值是指未明确编码为缺失值的值。例如，值可能为 `Placeholder`，而不是采用 `NaN` 来表示缺失值。您可以使用以下转换之一来处理缺失值：
  + **删除缺失** – 删除含缺失值的行
  + **替换为新值** – 将文本缺失值替换为 `Other`。您可以在输出代码中将 `Other` 更改为其他值。用 0 替换数字缺失值。
+ **常量列** – 该列只有一个值。因此，该列没有预测能力。我们强烈建议使用**删除列**转换，将该列从数据集中删除。
+ **ID 列** – 该列没有重复值。该列中所有的值都是唯一的。它们可能是 IDs 或数据库密钥。如果没有更多信息，该列并没有预测能力。我们强烈建议使用**删除列**转换，将该列从数据集中删除。
+ **高基数** – 该列包含比例很高的唯一值。高基数限制了分类列的预测能力。检查该列在分析中的重要性，并考虑使用**删除列**转换将其删除。

对于目标列，您可以获得以下见解，以警告您数据集存在问题。您可以使用警告中提供的建议转换来纠正问题。
+ **目标中的混合数据类型（回归）**– 目标列中存在某些非数字值。可能存在数据输入错误。对于包含无法转换的值的行，我们建议删除。
+ **频繁标签** – 目标列中某些值的出现频率高于回归环境中的正常值。数据收集或处理中可能存在错误。频繁出现的类别可能表明该值被用作默认值，或者是缺失值的占位符。我们建议使用**替换为新值**转换，将缺失值替换为 `Other`。
+ **每个类的实例太少** – 目标列具有很少出现的类别。有些类别的行数不足以让目标列发挥作用。您可以使用以下转换之一：
  + **删除稀有目标** – 删除观察值少于十个的唯一值。例如，如果 `cat` 在列中出现九次，则将其删除。
  + **替换稀有目标** – 将数据集中很少出现的类别替换为 `Other`。
+ **类别过于不平衡（多类分类）**– 数据集中有些类别的出现频率比其他类别高得多。类别不平衡可能会影响预测精度。为使预测尽可能准确，我们建议使用包含当前出现频率较低的类别的行来更新数据集。
+ ** classes/too 大量的类别** — 目标列中有大量的类。类过多可能会导致训练时间加长或预测质量低下。我们建议执行以下操作之一：
  + 将某些类别分组到自己的类别中。例如，如果六个类别密切相关，我们建议对它们使用单个类别。
  + 使用对多个类别具有弹性的机器学习算法。