转换数据 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

转换数据

亚马逊 SageMaker Data Wrangler 提供了许多机器学习数据转换,以简化数据的清理、转换和特色化。添加转换时,它会为数据流添加一个步骤。您添加的每个变换都会修改数据集并生成新的数据框。所有后续变换都适用于生成的数据框。

Data Wrangler 包括内置转换,您可以使用它在无需任何代码的情况下转换列。您还可以使用 PySpark、Python(用户定义函数)、熊猫和添加自定义转换 PySpark SQL。有些转换可以运行,而其他转换则在数据集中创建一个新的输出列。

您可以一次将转换应用于多个列。例如,您可以在一个步骤中删除多个列。

您只能将流程数字应用于单个列并处理缺失的变换。

使用此页可以了解有关这些内置和自定义转换的更多信息。

转换界面

大多数内置转换位于准备Data Wrangler UI 的选项卡。通过数据流视图访问 “连接” 和 “连接” 转换。使用下表预览这两个视图。

Transform

您可以向数据流中的任何步骤添加转换。要向数据流中添加转换,请按照以下过程操作。

要向数据流添加步骤,请执行以下操作。

  1. 选择+在数据流中的步骤旁边。

  2. 选择添加转换.

  3. 选择添加步骤.

  4. 选择一个转换。下图显示了可用转换。

  5. (可选)您可以搜索要使用的转换。Data Wrangler 在结果中突出显示查询。

Join View

要连接两个数据集,请选择数据流中的第一个数据集,然后选择加入. 当您选择加入,您会看到类似于下图所示的结果。左侧和右侧的数据集显示在左侧面板中。主面板显示您的数据流,并添加了新加入的数据集。

当您选择配置要配置您的加入,您会看到类似于下图所示的结果。您的加入配置显示在左侧面板中。您可以使用此面板选择已连接的数据集名称、联接类型和要联接的列。主面板显示三个表格。前两个表格分别在左侧和右侧显示左侧和右侧数据集。在此表格下,您可以预览已连接的数据集。

请参阅加入数据集了解更多信息。

Concatenate View

要连接两个数据集,请选择数据流中的第一个数据集,然后选择联接. 当你选择联接,您会看到类似于下图所示的结果。左侧和右侧的数据集显示在左侧面板中。主面板显示您的数据流,并添加了新连接的数据集。

当您选择配置要配置连接,您会看到类似于下图所示的结果。您的连接配置显示在左侧面板中。您可以使用此面板选择连接数据集的名称,然后选择在连接后删除重复项,然后添加列以指示源数据框。主面板显示三个表格。前两个表格分别在左侧和右侧显示左侧和右侧数据集。在此表格下,您可以预览已连接的数据集。

请参阅连接数据集了解更多信息。

加入数据集

您可以直接在数据流中加入数据框。连接两个数据集时,生成的联接数据集将显示在流程中。Data Wrangler 支持以下联接类型。

  • OUTER Left— 包括左表中的所有行。如果在左表行中联接的列的值与任何右侧表格行值不匹配,则该行包含已连接表中所有右侧表列的空值。

  • Left Anti— 包括左表中不包含已连接列的右表中的值的行。

  • Left 半— 在左表中为满足 join 语句中标准的所有相同行包括一行。这将从左表中排除符合联接条件的重复行。

  • 右外部— 包括右表中的所有行。如果右表行中连接的列的值与任何左表行值不匹配,则该行包含已连接表中所有左表列的空值。

  • INNER— 包括左右表中包含连接的列中包含匹配值的行。

  • 完全外部— 包括左右表格中的所有行。如果任一表中连接列的行值不匹配,则会在连接的表中创建单独的行。如果行不包含连接表中某列的值,则为该列插入 null。

  • 笛卡尔十字— 包括将第一个表中的每一行与第二个表中的每一行组合在一起的行。这是笛卡尔积来自联接中的表中的行。该产品的结果是左桌的大小乘以右桌的大小。因此,我们建议小心在非常大的数据集之间使用此连接。

要加入两个数据框,请使用以下过程。

  1. Select+在要加入的左侧数据框旁边。您选择的第一个数据框始终是连接中的左表。

  2. 选择加入

  3. 选择正确的数据框。您选择的第二个数据框始终是连接中的正确表格。

  4. 选择配置来配置你的加入。

  5. 使用为已加入的数据集命名名称字段中返回的子位置类型。

  6. 选择联接类型.

  7. 从左侧和右侧的表格中选择一列进行加入。

  8. 选择Apply以便在右侧预览已连接的数据集。

  9. 要将联接的表添加到数据流中,请选择Add.

连接数据集

连接两个数据集:

  1. 选择+在要连接的左侧数据框旁边。您选择的第一个数据框始终是连接中的左表。

  2. 选择联接.

  3. 选择正确的数据框。您选择的第二个数据框始终是连接中的正确表格。

  4. 选择配置来配置你的连接。

  5. 使用为连接的数据集命名名称字段中返回的子位置类型。

  6. (可选)选中旁边的复选框连接后删除重复项删除重复的列。

  7. (可选)选中旁边的复选框添加列以指示源数据框如果对于新数据集中的每一列,如果要添加列源的指示符。

  8. 选择Apply以预览新数据集。

  9. 选择Add将新数据集添加到数据流中。

余额数据

您可以平衡不足类别的数据集的数据集的数据。平衡数据集可以帮助您创建更好的二进制分类模型。

注意

您无法平衡包含列矢量的数据集。

您可以使用余额数据使用以下运算符之一来平衡数据的操作:

  • 随机过采样— 随机复制少数群体类别中的样本。例如,如果你试图检测欺诈行为,你可能只有 10% 的数据中有欺诈案例。对于同等比例的欺诈和非欺诈案件,该运营商会在数据集中随机重复 8 次欺诈案件。

  • 随机采样不足— 大致相当于随机过采样。随机从显示过高的类别中删除样本,以获取您想要的样本比例。

  • 合成少数过采样技术 (SMOTE)— 使用代表不足类别的样本来插入新的合成少数群体样本。有关 SMOTE 的更多信息,请参阅以下说明。

您可以对包含数字和非数字要素的数据集使用所有变换。SMOTE 使用相邻样本对值进行插值。Data Wrangler 使用 R 平方距离来确定用于插值额外样本的邻域。Data Wrangler 仅使用数字要素来计算代表不足组中样本之间的距离。

对于代表不足组中的两个实际样本,Data Wrangler 使用加权平均值来插值数字要素。它会随机为 [0, 1] 范围内的样本分配权重。对于数值要素,Data Wrangler 使用样本的加权平均值来插值样本。对于样本 A 和 B,Data Wrangler 可以随机分配 0.7 的权重给 A,0.3 给 B。插值样本的值为 0.7A + 0.3B。

Data Wrangler 通过从任一插值实际样本中复制来插值非数字要素。它复制样本的概率是随机分配给每个样本。对于样本 A 和 B,它可以将概率 0.8 分配给 A,0.2 分给 B。对于它所分配的概率,它会复制 80% 的时间。

自定义转换

这些区域有:自定义转换组允许你使用 Python(用户定义函数)、Pyspark、熊猫或 Pyspark (SQL) 来定义自定义转换。对于所有三个选项,都可以使用变量df以访问要将转换应用到的数据框。如果您不使用 Python(用户定义函数),则无需包含返回语句。选择预览以预览自定义转换的结果。选择Add将自定义转换添加到你的列表之前的步骤.

你可以使用import自定义转换代码块中的语句,如下所示:

  • Numpy 版本 1.19.0

  • Scikit-Learn 版本 0.23.2

  • SciPy 版本 1.5.4

  • 熊猫版本 1.0.3

  • Pyspark 版本 3.0.0

重要

自定义转换不支持名称中包含空格或特殊字符的列。我们建议您指定仅包含字母数字字符和下划线的列名称。您可以使用重命名列转换为管理列转换组以从列名中删除空格。您还可以添加熊猫 自定义转换类似于以下内容,可以在一个步骤中删除多个列中的空格。此示例更改名为A columnB columnA_columnB_column分别。

df.rename(columns={"A column": "A_column", "B column": "B_column"})

如果在代码块中包含打印语句,则当您选择预览. 你可以调整自定义代码变压器面板的大小 调整面板大小可提供更多编写代码的空间。下面显示了调整面板的大小。


                对于 Python 函数,请将 PD.series 下的注释替换为您的代码。

下面提供了用于编写自定义转换代码的其他上下文和示例。

Python(用户定义的函数)

Python 函数使您能够在不知道 Apache Spark 或 Pandas 的情况下编写自定义转换。Data Wrangler 经过优化,可以快速运行自定义代码。在使用自定义 Python 代码和 Apache Spark 插件之间,你会获得类似的性能。

要使用 Python(用户定义函数)代码块,请指定以下内容:

  • 输入栏— 要应用转换的输入列。

  • Mode (模式)— 脚本模式,无论是熊猫还是 Python。

  • 返回类型— 您要返回的值的数据类型。

使用 Pandas 模式可提供更好的性能。Python 模式使您可以通过使用纯 Python 函数更轻松地编写转换。

以下视频显示了如何使用自定义代码创建转换的示例。它使用泰坦尼克号数据集来创建一个包含该人称呼的列。


                对于 Python 函数,请将 PD.series 下的注释替换为您的代码。

pSpark

以下示例从时间戳中提取日期和时间。

from pyspark.sql.functions import from_unixtime, to_date, date_format df = df.withColumn('DATE_TIME', from_unixtime('TIMESTAMP')) df = df.withColumn( 'EVENT_DATE', to_date('DATE_TIME')).withColumn( 'EVENT_TIME', date_format('DATE_TIME', 'HH:mm:ss'))

熊猫

以下示例概述了要向其添加转换的数据框。

df.info()

Pyspark (SQL)

以下内容创建了一个包含五列的新数据框:名称票价pclass幸存下来.

SELECT name, fare, pclass, survived FROM df

自定义公式

使用自定义公式使用 Spark SQL 表达式来查询当前数据框中的数据来定义新列。查询必须使用 Spark SQL 表达式的约定。

重要

自定义公式不支持名称中包含空格或特殊字符的列。我们建议您指定仅包含字母数字字符和下划线的列名称。您可以使用重命名列转换为管理列转换组以从列名中删除空格。您还可以添加熊猫 自定义转换类似于以下内容,可以在一个步骤中删除多个列中的空格。此示例更改名为A columnB columnA_columnB_column分别。

df.rename(columns={"A column": "A_column", "B column": "B_column"})

您可以使用此转换对列执行操作,并按名称引用列。例如,假设当前数据框包含名为的列col_acol_b,您可以使用以下操作生成输出列这是这两列的产物,其中包含以下代码:

col_a * col_b

其他常见操作包括以下内容,假设数据框包含col_acol_b列:

  • 连接两列:concat(col_a, col_b)

  • 添加两列:col_a + col_b

  • 减去两列:col_a - col_b

  • 划分两列:col_a / col_b

  • 以列的绝对值:abs(col_a)

有关更多信息,请参阅 。Spark 文档在选择数据时。

分类编码

分类数据通常由有限数量的类别组成,其中每个类别都用字符串表示。例如,如果您有客户数据表,则表明某人居住的国家/地区的列是分类的。类别将是阿尔巴尼亚、阿尔巴尼亚、阿尔及利亚等。分类数据可以名义上的要么序数词. 序数类别有固有的顺序,名义类别则没有。获得的最高学位(高中、单身汉、硕士)就是序数类别的一个例子。

对分类数据进行编码是为类别创建数字表示形式的过程。例如,如果你的类别是 Dog 和 Cat,你可以将这些信息编码为两个向量,[1,0]代表狗,以及[0,1]来表示 Cat。

对序号类别进行编码时,可能需要将类别的自然顺序转换为编码。例如,您可以表示通过以下地图获得的最高学位:{"High school": 1, "Bachelors": 2, "Masters":3}.

使用分类编码将字符串格式的分类数据编码为整数数组。

Data Wrangler 分类编码器在定义步骤时为列中存在的所有类别创建编码。启动 Data Wrangler 作业以及时处理数据集时,如果已将新类别添加到列t,此专栏是当时 Data Wrangler 分类编码转换的输入t-1,考虑这些新类别缺失的在数据牧马人工作中。你选择的选项无效的处理策略应用于这些缺失值。什么时候会发生这种情况的例子是:

  • 当您使用 .flow 文件创建 Data Wrangler 作业以处理数据流创建后更新的数据集时。例如,您可以使用数据流每月定期处理销售数据。如果每周更新一次销售数据,则可能会将新的类别引入到已定义编码分类步骤的列中。

  • 当你选择采样导入数据集时,某些类别可能会被排除在样本之外。

在这些情况下,这些新类别被视为 Data Wrangler 工作中缺少的值。

您可以选择和配置序数词一热编码. 可以使用以下部分了解这些选项的更多信息。

两个转换都创建一个名为输出列名称. 您可以使用指定此列的输出格式输出样式

  • SelectVector来生成带有稀疏矢量的单列。

  • Select为每个类别创建一个列,其中包含一个指标变量,用于指示原始列中的文本是否包含等于该类别的值。

序数编码

Select序数编码将类别编码为介于 0 和中类别总数之间的整数输入栏您选择。

无效的交付策略:选择一种方法来处理无效或缺失值。

  • 选择跳过如果你想省略缺少值的行。

  • 选择保持将缺失值保留为最后一个类别。

  • 选择错误如果你希望 Data Wrangler 抛出错误,如果在输入栏.

  • 选择替换为 NaN用 NaN 替换缺失。如果 ML 算法可以处理缺失值,则建议使用此选项。否则,此列表中的前三个选项可能会产生更好的结果。

一热编码

Select一热编码为了转换使用一热编码。使用以下命令配置此转换:

  • 删除最后一类别:如果True,最后一个类别在单热编码中没有相应的索引。当可能缺少值时,丢失的类别始终是最后一个类别,并将其设置为True意味着缺少值会导致全零向量。

  • 无效的交付策略:选择一种方法来处理无效或缺失值。

    • 选择跳过如果你想省略缺少值的行。

    • 选择保持将缺失值保留为最后一个类别。

    • 选择错误如果你希望 Data Wrangler 抛出错误,如果在输入栏.

  • 输入序数是否已编码:如果输入向量包含序号编码数据,请选择此选项。此选项要求输入数据包含非负整数。如果True,输入i被编码为矢量中的非零i位置。

相似性编码

如果有以下条件,请使用相似性编码:

  • 大量的类别变量

  • 嘈杂的数据

相似度编码器为包含分类数据的列创建嵌入。嵌入是将离散对象(例如单词)与实数向量的映射。它将类似的字符串编码为包含相似值的矢量。例如,它为 “加利福尼亚州” 和 “加州” 创建了非常类似的编码。

Data Wrangler 使用 3 克标记器将数据集中的每个类别转换为一组令牌。它使用 min-hash 编码将令牌转换为嵌入。

以下示例说明相似度编码器如何从字符串中创建向量。

Data Wrangler 创建的相似性编码:

  • 维度较小

  • 可扩展至大量类别

  • 坚固耐用且耐噪音

出于上述原因,相似性编码比单热编码更通用。

要向数据集中添加相似性编码转换,请按照以下过程操作。

要使用相似性编码,请执行以下操作。

  1. 登录到Amazon SageMaker 控制台.

  2. 选择打开 Studio

  3. 选择启动应用.

  4. 选择工作室.

  5. 指定数据流。

  6. 选择转换的步骤。

  7. 选择添加步骤.

  8. 选择分类编码.

  9. 指定以下内容:

    • 转换编码相似性

    • 输入栏— 包含正在编码的分类数据的列。

    • 目标维度—(可选)分类嵌入向量的维度。默认值是 30。如果您的大型数据集包含许多类别,我们建议使用较大的目标维度。

    • 输出样式— 选择Vector对于包含所有编码值的单个向量。选择将编码的值放在单独的列中。

    • 输出列—(可选)矢量编码输出的输出列的名称。对于列编码的输出,列名的前缀后跟列出的数字。

特色文本

使用功能文本转换组来检查字符串类型的列,并使用文本嵌入来显示这些列。

此功能组包含两个功能,字符统计数Vectorize. 可以使用以下部分了解这些转换的更多信息。对于这两种选项,输入栏必须包含文本数据(字符串类型)。

角色统计数

使用字符统计数为包含文本数据的列中的每一行生成统计信息。

这将转换为每行计算以下比率和计数,并创建一个新列来报告结果。使用输入列名称作为前缀和特定于比率或计数的后缀来命名新列。

  • 字数:该行中的单词总数。此输出列的后缀为-stats_word_count.

  • 字符数:该行中的字符总数。此输出列的后缀为-stats_char_count.

  • 上限的比例:从 A 到 Z 的大写字符数除以列中的所有字符。此输出列的后缀为-stats_capital_ratio.

  • 较低的比率:从 a 到 z 的小写字符数除以列中的所有字符。此输出列的后缀为-stats_lower_ratio.

  • 数字比率:单行中的位数与输入列中数字总和的比率。此输出列的后缀为-stats_digit_ratio.

  • 特殊字符比例:非字母数字(如 #$&%: @)字符与输入列中所有字符之和的比率。此输出列的后缀为-stats_special_ratio.

Vectorize

文本嵌入涉及将词汇中的单词或短语映射到实数矢量。使用 Data Wrangler 文本嵌入变换将文本数据标记化并将其矢量化为术语频率 — 反向文档频率 (TF-IDF) 矢量。

当为一列文本数据计算 TF-IDF 时,每句话中的每个单词都将转换为代表其语义重要性的实数。数字越高与不太频繁的单词有关,这往往更有意义。

当你定义Vectorize在定义此步骤时,使用 Data Wrangler 中的可用数据来定义转换步骤、计数矢量器和 TF-IDF 方法。运行 Data Wrangler 作业时也使用这些相同的方法。

您可以使用以下命令配置此转换:

  • 输出列名称:此转换将创建一个带有文本嵌入的新列。使用此字段可以指定此输出列的名称。

  • 令牌化:分词器将句子转换为单词列表,或者象征.

    选择标准使用分割空格并将每个单词转换为小写字母的分词器。例如,"Good dog"被标记化为["good","dog"].

    选择Custom (自定义)使用自定义的标记器。如果选择Custom (自定义),您可以使用以下字段来配置标记器:

    • 最短令牌长度:令牌有效的最小长度(以字符为单位)。默认值为 1。例如,如果指定3对于最短令牌长度,例如a, at, in从标记化的句子中删除。

    • 正则表达式应该在差距上拆分:如果选择此项,regex分裂差距。否则,它与代币匹配。默认值为 True

    • 正则表达式模式:定义标记化过程的正则表达式模式。默认值为 ' \\ s+'

    • 小写形式:如果选择此选项,则在标记化之前将所有字符转换为小写字母。默认值为 True

    要了解更多信息,请参阅上的 Spark 文档令牌化.

  • Vectorizer:矢量器将标记列表转换为稀疏的数字矢量。每个令牌对应于向量中的索引,非零表示输入句子中存在该令牌。您可以从两个矢量器选项中进行选择,计数HASHING.

    • 计数向量允许过滤不频繁或太常见的令牌的自定义项。计数矢量化参数中支持的脚本编写选项如下:

      • 最小学期频率:在每一行中,都会过滤频率较小的术语(令牌)。如果指定整数,则这是绝对阈值(包括在内)。如果指定介于 0(含)和 1 之间的分数,则阈值是相对于总期限计数的相对值。默认值为 1

      • 最小文档频率:必须包含术语(令牌)的最小行数。如果指定整数,则这是绝对阈值(包括在内)。如果指定介于 0(含)和 1 之间的分数,则阈值是相对于总期限计数的相对值。默认值为 1

      • 最大文档频率:可以包含术语(令牌)的最大文档(行)数。如果指定整数,则这是绝对阈值(包括在内)。如果指定介于 0(含)和 1 之间的分数,则阈值是相对于总期限计数的相对值。默认值为 0.999

      • 最大词汇量:词汇量的最大大大小。词汇表由列中所有行中的所有术语(令牌)组成。默认值为 262144

      • 二进制输出:如果选中此项,矢量输出不包括文档中某个术语的出现次数,而是其外观的二进制指标。默认值为 False

      要了解有关此选项的更多信息,请参阅上的 Spark 文档。CountVectorizer.

    • HASHING计算速度更快。哈希矢量化参数包括以下内容:

      • 散列过程中的功能数量:哈希矢量器根据令牌的哈希值将令牌映射到矢量索引。此功能决定了可能的哈希值的数量。较大的值会减少哈希值之间的冲突,但维度较高的输出矢量。

      要了解有关此选项的更多信息,请参阅上的 Spark 文档。功能 Hasher

  • 应用 IDF:选择后,将应用 IDF 转换,该转换将术语频率与用于 TF-IDF 嵌入的标准逆文档频率乘以。IDF 参数中支持的脚本编写选项如下:

    • 最小文档频率:必须包含术语(令牌)的文档(行)的最小数量。如果count_vectorize是选择的矢量器,我们建议保留默认值,并且只修改min_doc_freq字段计数矢量化参数. 默认值为 5

  • 输出格式: 每行的输出格式。

    • SelectVector来生成带有稀疏矢量的单列。

    • Select扁平为每个类别创建一个列,其中包含一个指标变量,用于指示原始列中的文本是否包含等于该类别的值。您只能选择扁平的时候Vectorizer设置为计数向量.

转换时间序列

在 Data Wrangler 中,您可以转换时间序列数据。时间序列数据集中的值将索引至特定时间。例如,显示一天中每小时商店中每个小时的客户数量的数据集就是时间序列数据集。下表显示了时间序列数据集示例。

商店中的每小时客户数
Customer Number 时间(小时)
4 09:00
10 10:0:00
14 11:0:00
25 12:00
20 13:00
18 14:00

对于上表,Customer Number列包含时间序列数据。时间序列数据根据 “时间(小时)” 列中的每小时数据编制索引。

您可能需要对数据执行一系列转换,才能以可用于分析的格式获取数据。使用时间序列转换组以转换你的时间序列数据。有关您可以执行的转换的更多信息,请参阅以下部分。

按时间序列分组

您可以使用按操作分组对列中特定值的时间序列数据进行分组。

例如,您有下表跟踪了家庭的平均每日用电量。

平均每日家庭用电
家庭 ID 日常时间戳 用电量 (kWh) 住户数量
家庭 _0 2020 年 1 月 1 日 30 2
家庭 _0 1/2/2020 40 2
家庭 _0 1/4/2020 35 3
家庭 _1 1/2/2020 45 3
家庭 _1 1/3/2020 55 4

如果你选择按 ID 分组,你会得到下表。

按家庭 ID 分组的电力使用情况
家庭 ID 用电系列 (kWh) 家庭居住者数量系列
家庭 _0 [30、40、35] [2、2、3、2、3]
家庭 _1 [45, 55] [3, 4]

时间序列序列中的每个条目都按相应的时间戳排序。序列的第一个元素对应于该系列的第一个时间戳。适用于household_030是的第一个值电力使用系列. 的价值30对应于的第一次时间戳1/1/2020.

您可以包括开始时间戳和结束时间戳。下表显示了如何显示的示例。

按家庭 ID 分组的电力使用情况
家庭 ID 用电系列 (kWh) 家庭居住者数量系列 Start_time end_time
家庭 _0 [30、40、35] [2、2、3、2、3] 2020 年 1 月 1 日 1/4/2020
家庭 _1 [45, 55] [3, 4] 1/2/2020 1/3/2020

您可以使用以下过程按照时间序列来批量。

  1. 打开数据 Wrangler 数据流。

  2. 如果尚未导入数据集,请将其导入到导入数据选项卡。

  3. 在你的数据流中,在数据类型,选择+Select, 然后选择添加转换.

  4. 选择添加步骤.

  5. 选择时间序列.

  6. UNDER转换,选择Group by (分组依据).

  7. 在中指定一列按此专栏进行分组.

  8. 适用于应用于列,指定一个值。

  9. 选择预览以生成转换的预览。

  10. 选择Add将转换添加到 Data Wrangler 数据流中。

重新采样时间序列数据

时间序列数据通常有不定期进行的观测值。例如,数据集可以有一些观测值每小时记录一次,另一些观测值每两小时记录一次。

许多分析,例如预测算法,都需要定期进行观测。通过重新采样,您可以为数据集中的观测值建立定期间隔。

您可以对时间序列进行上采样或降样。缩减采样会增加数据集中观测值之间的间隔。例如,如果对每小时或每两小时采取一次的观测值进行降样,则数据集中的每个观测值将每两小时进行一次。使用平均值或中位数之类的聚合方法将每小时观测值聚合为单个值。

上采样可缩短数据集中观测值之间的间隔。例如,如果您将每两小时取得的观测值上采样为小时观测值,则可以使用插值方法从每两小时获取的观测值中推断每小时观测值。有关插值方法的信息,请参阅Pandas.dataframe.插入插值.

您可以对数字和非数字数据重新采样。

使用重新采样对时间序列数据进行重新采样的操作。如果数据集中有多个时间序列,Data Wrangler 会标准化每个时间序列的时间间隔。

以下是使用均值作为聚合方法缩减时间序列数据的示例。数据从每两小时减少到每小时一次。

缩减采样前一天的每小时温度读数
时间戳 温度(摄氏度)
12:00 30
1:01:00 32
2:00 35
3:0:00 32
4:00 30
温度读数降至每两小时
时间戳 温度(摄氏度)
12:00 30
2:00 33.5
2:00 35
4:00 32.5

您可以使用以下过程对时间序列数据重新采样。

  1. 打开数据 Wrangler 数据流。

  2. 如果尚未导入数据集,请将其导入到导入数据选项卡。

  3. 在你的数据流中,在数据类型,选择+Select, 然后选择添加转换.

  4. 选择添加步骤.

  5. 选择重新采样.

  6. 适用于时间戳中,选择时间戳列。

  7. 适用于Frequency中,指定要重新采样的频率。

  8. (可选) 为频率数.

  9. 要配置其余字段,则可以配置转换。

  10. 选择预览以生成转换的预览。

  11. 选择Add将转换添加到 Data Wrangler 数据流中。

处理缺失时间序列数据

如果数据集中缺少值,则可以执行以下操作之一:

  • 对于具有多个时间序列的数据集,删除缺失值大于指定阈值的时间序列。

  • 使用时间序列中的其他值来推断时间序列中的缺失值。

计算缺失值涉及通过指定值或使用推理方法来替换数据。以下是你可以用来计算的方法:

  • 常量值 — 将数据集中所有缺失的数据替换为指定的值。

  • 最常见的值 — 将所有丢失的数据替换为数据集中频率最高的值。

  • 向前填充 — 使用向前填充将缺失的值替换为缺失值之前的不缺失值。对于序列:[2、4、7、NaN、NaN、NaN、8],所有缺失的值都被 7 替换。使用正向填充产生的顺序是 [2、4、7、7、7、7、7、8]。

  • 向后填充 — 使用向后填充将缺失值替换为缺失值后面的不缺失值。对于序列:[2、4、7、NaN、NaN、NaN、8],所有缺失的值都被 8 替换。使用向后填充所产生的顺序是 [2、4、7、8、8、8、8]。

  • 插值 — 使用插值函数来计算缺失的值。有关可用于插值的函数的更多信息,请参阅Pandas.dataframe.插入插值.

某些估算方法可能无法计算数据集中的所有缺失值。例如,向前填充不能推断出现在时间序列开头的缺失值。您可以通过使用向前填充或向后填充来计算值。

您可以归因为单元格内或列中的缺失值。

以下示例说明如何在单元格中估算值。

缺少值的电力使用
家庭 ID 用电系列 (kWh)
家庭 _0 [30、40、35、NaN、NaN]
家庭 _1 [45、NaN、55]
使用正向填充计算值的电力使用情况
家庭 ID 用电系列 (kWh)
家庭 _0 [30、40、35、35、35]
家庭 _1 [45、45、55]

以下示例说明如何在列中估算值。

缺少值的家庭平均每日用电量
家庭 ID 用电量 (kWh)
家庭 _0 30
家庭 _0 40
家庭 _0 NaN
家庭 _1 NaN
家庭 _1 NaN
平均每日家庭用电量,使用前期填充估算值
家庭 ID 用电量 (kWh)
家庭 _0 30
家庭 _0 40
家庭 _0 40
家庭 _1 40
家庭 _1 40

您可以使用以下过程处理缺少的值。

  1. 打开数据 Wrangler 数据流。

  2. 如果尚未导入数据集,请将其导入到导入数据选项卡。

  3. 在你的数据流中,在数据类型,选择+Select, 然后选择添加转换.

  4. 选择添加步骤.

  5. 选择缺少处理.

  6. 适用于时间序列输入类型中,选择是要处理单元格内部还是沿列处理缺少的值。

  7. 适用于归因为此列的缺失值中,指定包含缺少值的列。

  8. 适用于计算值的方法中,选择一种方法。

  9. 要配置其余字段,则可以配置转换。

  10. 选择预览以生成转换的预览。

  11. 如果缺少值,可以在下面指定一种方法来计算它们计算值的方法.

  12. 选择Add将转换添加到 Data Wrangler 数据流中。

验证时间序列数据的时间戳

您可能有无效的时间戳数据。您可以使用验证时间戳函数来确定数据集中的时间戳是否有效。由于以下一个或多个原因,您的时间戳可能无效:

  • 您的时间戳列缺少值。

  • 时间戳列中的值格式不正确。

如果数据集中有无效的时间戳,则无法成功执行分析。您可以使用 Data Wrangler 来识别无效的时间戳,并了解需要在哪里清理数据。

时间序列验证有两种方式之一:

如果 Data Wrangler 在数据集中遇到缺少值时,您可以将 Data Wrangler 配置为执行以下操作之一:

  • 删除缺少值或无效值的行。

  • 识别具有缺少值或无效值的行。

  • 如果它在数据集中发现任何缺失或无效值,则抛出错误。

您可以在具有timestamp键入或string。如果该列有string类型,Data Wrangler 将列的类型转换为timestamp然后执行验证。

您可以使用以下过程验证数据集中的时间戳。

  1. 打开数据 Wrangler 数据流。

  2. 如果尚未导入数据集,请将其导入到导入数据选项卡。

  3. 在你的数据流中,在数据类型,选择+Select, 然后选择添加转换.

  4. 选择添加步骤.

  5. 选择验证时间戳.

  6. 适用于时间戳列中,选择时间戳列。

  7. 适用于策略中,选择是否要处理缺少的时间戳。

  8. (可选)对于输出列中,指定输出列的名称。

  9. 如果为字符串类型设置了日期时间列的格式,请选择强制转换为日期时间.

  10. 选择预览以生成转换的预览。

  11. 选择Add将转换添加到 Data Wrangler 数据流中。

标准化时间序列的长度

如果您将时间序列数据存储为数组,则可以将每个时间序列标准化为相同的长度。标准化时间序列数组的长度可能会使您更轻松地对数据进行分析。

对于需要固定数据长度的数据转换,您可以对时间序列进行标准化。

许多 ML 算法都要求在使用时序数据之前对时间序列数据进行拼合。拼合时间序列数据是将时间序列的每个值分成数据集中自己的列。数据集中的列数不能更改,因此需要在将每个数组拼合为一组要素之间标准化时间序列的长度。

每个时间序列都设置为您指定为时间序列集的分位数或百分位数的长度。例如,您可以有三个具有以下长度的序列:

  • 3

  • 4

  • 5

您可以将所有序列的长度设置为具有 50 个百分位数长度的序列的长度。

小于指定长度的时间序列数组会添加缺失值。以下是将时间序列标准化为更长长度的示例格式:[2、4、5、NaN、NaN、NaN]。

您可以使用不同的方法来处理缺失的值。有关这些方法的信息,请参阅处理缺失时间序列数据.

长于指定长度的时间序列数组将被截断。

您可以使用以下过程来标准化时间序列的长度。

  1. 打开数据 Wrangler 数据流。

  2. 如果尚未导入数据集,请将其导入到导入数据选项卡。

  3. 在你的数据流中,在数据类型,选择+Select, 然后选择添加转换.

  4. 选择添加步骤.

  5. 选择标准化长度.

  6. 适用于标准化列的时间序列长度中,选择一列。

  7. (可选)对于输出列中,指定输出列的名称。如果您没有指定名称,转换就已到位。

  8. 如果为字符串类型设置了日期时间列的格式,请选择强制转换为日期时间.

  9. 选择截止分位数中,指定一个分位数来设置序列的长度。

  10. 选择展平输出将时间序列的值输出到单独的列中。

  11. 选择预览以生成转换的预览。

  12. 选择Add将转换添加到 Data Wrangler 数据流中。

从时序数据中提取要素

如果您对时间序列数据运行分类或回归算法,我们建议在运行算法之前从时间序列中提取要素。提取功能可能会提高算法的性能。

使用以下选项选择要从数据中提取要素的方式:

  • 使用最小子集以指定提取您知道在下游分析中有用的 8 个要素。当你需要快速执行计算时,你可以使用最小的子集。当 ML 算法有过度拟合的高风险并且希望为其提供的功能较少时,也可以使用它。

  • 使用高效的子集指定在不提取分析中计算密集型要素的情况下尽可能提取最多的要素。

  • 使用所有功能以指定从 Tune 系列中提取所有要素。

  • 使用手动子集以选择一个你认为很好地解释数据变化的功能列表。

使用以下步骤从时间序列数据中提取要素。

  1. 打开数据 Wrangler 数据流。

  2. 如果尚未导入数据集,请将其导入到导入数据选项卡。

  3. 在你的数据流中,在数据类型,选择+Select, 然后选择添加转换.

  4. 选择添加步骤.

  5. 选择提取要素.

  6. 适用于提取此列的功能中,选择一列。

  7. (可选)选择Flatten将要素输出到单独的列中。

  8. 适用于Strategy中,选择一个策略来提取功能。

  9. 选择预览以生成转换的预览。

  10. 选择Add将转换添加到 Data Wrangler 数据流中。

使用时序数据中的滞后功能

对于许多用例来说,预测时间序列 future 行为的最佳方法是使用其最近的行为。

滞后功能的最常见用途如下:

  • 收集一些过去的价值观。例如,就时间而言,t + 1,你收集 t、t-1、t-2 和 t-3。

  • 收集与数据中的季节性行为对应的值。例如,要预测下午 1:00 餐厅的入住率,您可能希望从前一天下午 1:00 开始使用这些功能。从当天中午 12:00 或上午 11 点开始使用这些功能可能不像使用前几天的功能那样具有预测性。

  1. 打开数据 Wrangler 数据流。

  2. 如果尚未导入数据集,请将其导入导入数据选项卡。

  3. 在你的数据流中,在数据类型,选择+Select, 然后选择添加转换.

  4. 选择添加步骤.

  5. 选择滞后功能.

  6. 适用于为此列生成滞后功能中,选择一列。

  7. 适用于时间戳列中,选择包含时间戳的列。

  8. 适用于LAG中,指定滞后的持续时间。

  9. (可选)使用以下选项之一配置输出:

    • 包括整个滞后窗口

    • 展平输出

    • 删除没有历史记录

  10. 选择预览以生成转换的预览。

  11. 选择Add将转换添加到 Data Wrangler 数据流中。

在时间序列中创建日期时间范围

你可能有没有时间戳的时间序列数据。如果您知道观测值是定期拍摄的,则可以在单独的列中为时间序列生成时间戳。要生成时间戳,请指定开始时间戳的值和时间戳的频率。

例如,您可能具有餐厅客户数量的以下时序数据。

餐厅客户数量的时间序列数据
Customer Number
10
14
24
40
30
20

如果您知道餐厅在下午 5 点开业且观察每小时进行,则可以添加与时间序列数据对应的时间戳列。您可以在下表中看到时间戳列。

餐厅客户数量的时间序列数据
Customer Number 时间戳
10 1:01:00 PM
14 2:00 PM
24 3:0:00 PM
40 4:00 PM
30 5:00 PM
20 6:00 PM

要向数据中添加日期时间范围,请按照以下过程操作。

  1. 打开数据 Wrangler 数据流。

  2. 如果尚未导入数据集,请将其导入导入数据选项卡。

  3. 在你的数据流中,在数据类型,选择+Select, 然后选择添加转换.

  4. 选择添加步骤.

  5. 选择日期时间范围.

  6. 适用于Frequency中,选择用于测量时间戳频率的单位。

  7. 适用于开始时间戳中,指定开始时间戳。

  8. 适用于输出列中,指定输出列的名称。

  9. (可选)使用其余字段配置输出。

  10. 选择预览以生成转换的预览。

  11. 选择Add将转换添加到 Data Wrangler 数据流中。

在你的时间序列中使用滚动窗口

您可以在一段时间内提取要素。例如,对于时间、t 和时间窗长度为 3,对于表示第 t 个时间戳的行,我们追加从时间序列中提取的要素时间为 t-3、t -2 和 t-1。有关提取要素的信息,请参阅从时序数据中提取要素.

您可以使用以下过程在一段时间内提取要素。

  1. 打开数据 Wrangler 数据流。

  2. 如果尚未导入数据集,请将其导入导入数据选项卡。

  3. 在数据流中,下数据类型,选择+Select, 然后选择添加转换.

  4. 选择添加步骤.

  5. 选择滚动窗口功能.

  6. 适用于为此列生成滚动窗口功能中,选择一列。

  7. 适用于时间戳列中,选择包含时间戳的列。

  8. (可选)对于输出列中,指定输出列的名称。

  9. 适用于窗口大小中,指定窗口大小。

  10. 适用于Strategy,选择提取策略。

  11. 选择预览以生成转换的预览。

  12. 选择Add将转换添加到 Data Wrangler 数据流中。

展平日期/时间

使用特征日期/时间以创建表示日期/时间字段的矢量嵌入。要使用此转换,您的日期/时间数据必须采用以下格式之一:

  • 描述日期/时间的串:例如,"January 1st, 2020, 12:44pm"

  • Unix 时间戳:Unix 时间戳描述了 1970 年 1 月 1 日起的秒数、毫秒、微秒或纳秒数。

您可以选择推断日期时间格式并提供日期时间格式. 如果您提供了日期/时间格式,则必须使用Python 文档. 为这两种配置选择的选项会影响操作速度和最终结果。

  • 最手动和计算最快的选择是指定日期时间格式然后选择为了推断日期时间格式.

  • 为了减少体力劳动,你可以选择推断日期时间格式而不是指定日期/时间格式。这也是一种计算速度快的操作;但是,假定输入列中遇到的第一个日期/时间格式是整个列的格式。如果列中还有其他格式,则最终输出中这些值为 NaN。推断日期/时间格式可以给你未解析的字符串。

  • 如果您没有指定格式,然后选择为了推断日期时间格式,你得到了最强大的结果。解析所有有效的日期/时间字符串。但是,此操作可能比此列表中的前两个选项慢一个数量级。

使用此转换时,您可以指定输入栏其中包含以上列出的格式之一的日期/时间数据。转换会创建一个名为的输出列输出列名称. 输出列的格式取决于使用以下内容的配置:

  • Vector:输出单列作为矢量。

  • :为每个功能创建一个新列。例如,如果输出包含年、月和日,则会为年、月和日创建三个单独的列。

此外,您必须选择嵌入模式. 对于线性模型和深度网络,我们建议选择循环的. 对于基于树的算法,我们建议选择序数词.

格式字符串

这些区域有:格式字符串转换包含标准的字符串格式化操作。例如,您可以使用这些操作删除特殊字符、规范化字符串长度以及更新字符串大小写。

此功能组包含以下变换。所有转换都会返回字符串的副本输入栏然后将结果添加到新的输出列中。

名称 函数
左侧垫

用给定的字符串向左填充填充字符到给定的width. 如果字符串长度width,返回值缩短为widthcharacters.

右侧垫

用给定的向右键填充字符串填充字符到给定的width. 如果字符串长度width,返回值缩短为widthcharacters.

居中(两侧有垫)

Centrer-Pad 字符串(在字符串的两侧添加填充)填充字符到给定的width. 如果字符串长度width,返回值缩短为widthcharacters.

前缀零

用零向左填充数字字符串,最多给定width. 如果字符串长度width,返回值缩短为widthcharacters.

向左和向右分片

返回删除前导和尾随字符的字符串的副本。

从左侧删除字符

返回删除前导字符的字符串的副本。

从右边删除角色

返回删除了尾随字符的字符串的副本。

小写

将文本中的所有字母转换为小写。

大写

将文本中的所有字母转换为大写。

资本化

将每句话中的第一个字母大写。

交换案 将给定字符串的所有大写字符转换为小写字符,将所有小写字符转换为大写字符,然后返回它。
添加前缀或后缀

在字符串列中添加前缀和后缀。您必须指定至少一个前缀后缀.

移除符号

从字符串中删除给定符号。所有列出的字符都将被删除。默认为空格。

处理异常值

机器学习模型对功能值的分布和范围很敏感。异常值或稀有值可能会对模型准确性产生负面影响,并导致更长的训练时间。使用此要素组可以检测和更新数据集中的异常值。

当你定义处理异常值转换步骤,用于检测异常值的统计信息是在定义此步骤时根据 Data Wrangler 中的可用数据生成的。运行 Data Wrangler 作业时,使用这些相同的统计信息。

有关此组包含的转换的更多信息,请使用以下部分了解以下部分。你指定输出名称这些变换中的每一个都会生成一个包含结果数据的输出列。

稳健的标准差数字异常值

此转换使用对异常值强大的统计数据来检测并修复数字要素中的异常值。

你必须定义上分位数下分位数,它们用于计算异常值的统计数据。您还需要指定标准偏差值必须与平均值不同才能被视为异常值。例如,如果您将 3 指定为标准偏差,一个值必须比平均值下降超过 3 个标准差才能被视为异常值。

这些区域有:修复方法是在检测到异常值时处理异常值的方法。可从以下选项中进行选择:

  • 剪辑:使用此选项可将异常值剪裁到相应的异常值检测边界。

  • Remove:使用它可以从数据框中删除包含异常值的行。

  • 失效:使用此选项可以用无效值替换异常值。

标准差数字异常值

此变换使用均值和标准差检测并修复数字要素中的异常值。

您可以指定的数量标准偏差值必须与平均值不同才能被视为异常值。例如,如果您将 3 指定为标准偏差,一个值必须比平均值下降超过 3 个标准差才能被视为异常值。

这些区域有:修复方法是在检测到异常值时处理异常值的方法。可从以下选项中进行选择:

  • 剪辑:使用此选项可将异常值剪裁到相应的异常值检测边界。

  • Remove:使用它可以从数据框中删除包含异常值的行。

  • 失效:使用此选项可以用无效值替换异常值。

分位数数值异常值

使用此变换可以使用分位数检测和修复数字要素中的异常值。您可以定义上分位数下分位数,分别高于或低于这些分位数值的所有值都被视为异常值。

这些区域有:修复方法是在检测到异常值时处理异常值的方法。可从以下选项中进行选择:

  • 剪辑:使用此选项可将异常值剪裁到相应的异常值检测边界。

  • Remove:使用它可以从数据框中删除包含异常值的行。

  • 失效:使用此选项可以用无效值替换异常值。

最小-最大数字异常值

此转换使用上限和下限阈值检测并修复数字要素中的异常值。如果您知道标记异常值的阈值,请使用此方法。

你指定阈值上限阈值降低,如果值分别高于或低于这些阈值,则将其视为异常值。

这些区域有:修复方法是在检测到异常值时处理异常值的方法。可从以下选项中进行选择:

  • 剪辑:使用此选项可将异常值剪裁到相应的异常值检测边界。

  • Remove:使用它可以从数据框中删除包含异常值的行。

  • 失效:使用此选项可以用无效值替换异常值。

替换稀有

当您使用替换罕见的转换时,您可以指定阈值,Data Wrangler 会查找满足该阈值的所有值,然后用您指定的字符串替换它们。例如,您可能希望使用此转换将列中的所有异常值分类为 “其他” 类别。

  • 替换字符串:用来替换异常值的字符串。

  • 绝对阈值:如果实例数量小于或等于此绝对阈值,则类别是罕见的。

  • 分数阈值:如果实例数小于或等于此分数阈值乘以行数,则类别是罕见的。

  • 最大常见类别:手术后保留的最大不罕见类别。如果阈值没有过滤足够的类别,那么出场次数最多的类别将被归类为不罕见的类别。如果设置为 0(默认值),则对类别数量没有硬限制。

处理缺失值

缺少值是机器学习数据集中常见的情况。在某些情况下,使用计算值(例如平均值或绝对普通值)来计算缺失的数据是合适的。您可以使用处理缺失值转换组。此组包含以下变换。

缺少填充

使用缺少填充转换为替换缺少的值填充值你定义。

归因缺少

使用归因缺少转换以创建一个包含在输入分类和数值数据中找到缺少值的估算值的新列。配置取决于您的数据类型。

对于数字数据,请选择一种估算策略,该策略用于确定要估算的新价值。您可以选择将平均值或中位数与数据集中存在的值相比进行计算。Data Wrangler 使用它计算的值来计算缺失的值。

对于分类数据,Data Wrangler 使用列中最常见的值来计算缺失值。要归因自定义字符串,请使用缺少填充相反,转换。

添加缺失的指示器

使用添加缺失的指示器转换为创建一个包含布尔值的新指标列"false"如果行包含值,以及"true"如果一行包含缺少值。

丢失

使用丢失选项用于删除包含缺失值的行输入栏.

管理列

您可以使用以下转换快速更新和管理数据集中的列:

名称 函数
删除列 删除列。
复制列 复制列。
重命名列 重命名列。
移至列

移动数据集中列的位置。选择将列移动到数据集的起始或结尾、参考列之前或之后,或移动到特定索引。

管理行

使用此转换组可以快速对行执行排序和随机播放操作。此组包含以下内容:

  • 排序:按给定列对整个数据框进行排序。选中 旁边的复选框升序对于此选项;否则,取消选中该复选框并使用降序进行排序。

  • 随机排序:随机洗牌数据集中的所有行。

管理向量

使用此变换组可以组合或拼合矢量列。此组包含以下变换。

  • 组装:使用此转换可将 Spark 向量和数字数据合并为单个列。例如,您可以合并三列:两列包含数字数据,另一列包含矢量。添加你想要合并的所有列输入列然后指定输出列名称对于合并的数据。

  • Flatten:使用此变换可以拼合包含矢量数据的单个列。输入列必须包含 PySpark 向量或类似数组的对象。您可以通过指定一个来控制创建的列数。检测输出数量的方法. 例如,如果选择第一个矢量的长度,列中找到的第一个有效矢量或数组中的元素数量决定了创建的输出列的数量。包含太多项目的所有其他输入向量都将被截断。项目太少的输入充满了 NaNs。

    您还可以指定输出前缀,它用作每个输出列的前缀。

处理数值

使用处理数值要素组来处理数字数据。此组中的每个标量都是使用 Spark 库定义的。支持以下标量:

  • 标准缩放器:通过从每个值中减去均值并缩放至单位方差来标准化输入列。要了解更多信息,请参阅 Spark 文档标准缩放器.

  • 强大的缩放器:使用对异常值强大的统计信息来缩放输入列。要了解更多信息,请参阅 Spark 文档robustScaler.

  • Min Max Scaler:通过将每个要素缩放至给定范围来转换输入列。要了解更多信息,请参阅 Spark 文档minmaxScaler.

  • 最大绝对比例:通过将每个值除以最大绝对值来缩放输入列。要了解更多信息,请参阅 Spark 文档maxabScaler.

采样

导入数据后,可以使用采样变压器获取一个或多个样品。当您使用采样变压器时,Data Wrangler 会对原始数据集进行采样。

您可以选择以下示例方法之一:

  • 限制— 从第一行开始到指定的限制对数据集进行样本。

  • 随机化— 获取您指定大小的随机样本。

  • 分层— 获取分层随机样本。

您可以对随机样本进行分层,以确保它代表数据集的原始分布。

您可能正在为多个使用案例执行数据准备。对于每个用例,您可以采取不同的样本并应用一组不同的转换。

下面 GIF 显示了一个采取随机化A. 示例和分层数据集中的样本。

以下过程描述了创建随机样本的过程。前面的 GIF 显示了过程中使用的步骤。

从你的数据中随机抽取样本。

  1. 选择+位于您导入的数据集的右侧。数据集的名称位于+.

  2. 选择添加转换.

  3. 选择 Sampling (采样)

  4. 适用于采样方法中,选择采样方法。

  5. 适用于大致样本数量中,选择您想要在样本中的观测值的大致数量。

  6. (可选)指定一个整数Random seed (随机种子)以创建一个可重复的样品。

以下过程描述了创建分层样本的过程。

从数据中获取分层样本。

  1. 选择+位于您导入的数据集的右侧。数据集的名称位于+.

  2. 选择添加转换.

  3. 选择 Sampling (采样)

  4. 适用于采样方法中,选择采样方法。

  5. 适用于大致样本数量中,选择您想要在样本中的观测值的大致数量。

  6. 适用于分层列,请指定要分层的列名称。

  7. (可选)指定一个整数Random seed (随机种子)以创建一个可重复的样品。

搜索和编辑

使用此部分可以搜索和编辑字符串中的特定模式。例如,您可以查找和更新句子或文档中的字符串、按分隔符拆分字符串以及查找特定字符串的出现次数。

下面支持以下转换搜索和编辑. 所有转换都会返回字符串的副本输入栏然后将结果添加到新的输出列中。

名称 函数

查找子字符串

返回首次出现的索引SUBSTRING你可以选择搜索,开始和结束搜索启动End分别。

查找子字符串(从右起)

返回最后一次出现的索引SUBSTRING您可以选择地搜索到的开始和结束搜索启动End分别。

匹配前缀

如果字符串包含给定的,则返回布尔值模式. 模式可以是字符序列或正则表达式。或者,您可以使模式区分大小写。

查找所有事件

返回一个包含给定模式的所有出现情况的数组。模式可以是字符序列或正则表达式。

使用正则表达式提取

返回与给定 Regex 模式匹配的字符串。

在分隔符之间提取

返回一个包含所有字符的字符串左分隔符右分隔符.

从位置中提取

返回一个字符串,从起始位置在输入字符串中,其中包含直到起始位置的所有字符加长度.

查找并替换子字符串

返回一个包含给定的所有匹配项的字符串模式(正则表达式)替换为替换字符串.

在分隔符之间替换

返回一个字符串,其中包含在第一次出现之间找到的子字符串左分隔符和最后一次出现的右分隔符替换为替换字符串. 如果未找到匹配项,则没有替换任何内容。

从位置替换

返回一个子字符串介于之间的字符串起始位置起始位置长度替换为替换字符串. 如果起始位置长度大于替换字符串的长度,输出包含....

将正则表达式转换为缺少

将字符串转换为None如果无效,则返回结果。有效性是用中的正则表达式定义的模式.

按分隔符拆分字符串

从输入字符串中返回一个字符串数组,拆分方式分隔符,最多最大拆分数(可选)。分隔符默认为空格。

拆分数据

使用拆分数据转换以将数据集拆分为两三个数据集。例如,您可以将数据集拆分为用于训练模型的数据集和用于测试模型的数据集。您可以确定进入每个拆分的数据集的比例。例如,如果您将一个数据集拆分为两个数据集,则训练数据集可以有 80% 的数据,而测试数据集具有 20%。

将数据拆分为三个数据集使您能够创建训练、验证和测试数据集。您可以通过删除目标列来查看模型在测试数据集上的表现情况。

您的使用案例决定了每个数据集获取的原始数据集的数量以及用于拆分数据的方法。例如,您可能希望使用分层拆分来确保目标列中的观测值在数据集之间的分布相同。你可以使用以下拆分变换:

  • 随机分割 — 每个拆分都是原始数据集的随机、不重叠的样本。对于较大的数据集,使用随机拆分可能会昂贵计算,并且比有序拆分所花费的时间更长。

  • 有序拆分 — 根据观测值的顺序拆分数据集。例如,对于 80/20 次训练测试分割,构成数据集 80% 的第一个观测值将转到训练数据集。最后 20% 的观测值用于测试数据集。有序拆分可以有效地保持拆分之间的数据的现有顺序。

  • 分层拆分 — 拆分数据集以确保输入列中的观测值数具有比例表示。对于包含观测值 1、1、1、1、1、1、2、2、2、2、2、2、2、2、2、3、3、3、3、3、3、3、3、3、3、3、3、3 的输入列中的 80/20 个分割意味着大约 80% 的 1s、2S 的 80% 和 80% 的 3 进入训练集合。每种观察的大约 20% 进入测试套装。

  • 按键拆分 — 避免在多个拆分中发生同一个密钥的数据。例如,如果您有一个包含 “ustomer_id” 列的数据集,并且您将其用作密钥,则没有客户 ID 在多个拆分中。

拆分数据后,可以对每个数据集应用其他转换。对于大多数使用案例,它们没有必要。

Data Wrangler 计算绩效的拆分比例。您可以选择错误阈值来设置拆分的准确性。较低的误差阈值更准确地反映您为拆分指定的比例。如果设置了较高的错误阈值,则可以获得更好的性能,但准确性会降低。

要完全拆分数据,请将错误阈值设置为 0。为了获得更好的性能,您可以指定 0 到 1 之间的阈值。如果您指定的值大于 1,Data Wrangler 会将该值解释为 1。

如果数据集中有 10000 行,并且指定了 80/20 拆分,错误为 0.001,则您将获得大约以下结果之一的观测值:

  • 训练集中有 8010 个观测结果和测试集中的 1990 年

  • 培训集中有 7990 次观察结果和测试集中的 2010 年观察

上一个示例中测试集的观测值数在 8010 到 7990 之间的间隔内。

默认情况下,Data Wrangler 使用随机种子来使拆分可重现。您可以为种子指定不同的值来创建不同的可重复分割。

Randomized split

要对数据集执行随机拆分,请按照以下过程操作。

要随机拆分数据集,请执行以下操作:

  1. 选择+在包含要拆分的数据集的节点旁边。

  2. 选择添加转换.

  3. 选择拆分数据.

  4. (可选)对于Splet中,指定每个拆分的名称和比例。比例必须总和为 1。

  5. (可选) 选择+以创建额外的拆分。

    1. 指定所有拆分的名称和比例。比例必须总和为 1。

  6. (可选) 为错误阙值除了默认值。

  7. (可选) 为Random seed (随机种子).

  8. 选择预览.

  9. 选择 Add(添加)。

Ordered split

要对数据集执行有序拆分,请按照以下过程操作。

要在数据集中进行有序拆分,请执行以下操作。

  1. 选择+在包含要拆分的数据集的节点旁边。

  2. 选择添加转换.

  3. 适用于转换,选择下令拆分.

  4. 选择拆分数据.

  5. (可选)对于Splet中,指定每个拆分的名称和比例。比例必须总和为 1。

  6. (可选) 选择+以创建额外的拆分。

    1. 指定所有拆分的名称和比例。比例必须总和为 1。

  7. (可选) 为错误阙值除了默认值。

  8. (可选)对于输入栏中,指定一个包含数字值的列。使用列的值推断每个拆分中有哪些记录。较小的值在一个拆分中,另一个拆分中的值越大。

  9. (可选)选择处理重复项为重复值添加噪声并创建一个包含完全唯一值的数据集。

  10. (可选) 为Random seed (随机种子).

  11. 选择预览.

  12. 选择 Add(添加)。

Stratified split

要对数据集执行分层拆分,请按照以下过程操作。

要在数据集中进行分层拆分,请执行以下操作。

  1. 选择+在包含要拆分的数据集的节点旁边。

  2. 选择添加转换.

  3. 选择拆分数据.

  4. 适用于转换,选择分层拆.

  5. (可选)对于Splet中,指定每个拆分的名称和比例。比例必须总和为 1。

  6. (可选) 选择+以创建额外的拆分。

    1. 指定所有拆分的名称和比例。比例必须总和为 1。

  7. 适用于输入栏中,指定最多包含 100 个唯一值的列。Data Wrangler 不能对具有超过 100 个唯一值的列进行分层。

  8. (可选) 为错误阙值除了默认值。

  9. (可选) 为Random seed (随机种子)来指定不同的种子。

  10. 选择预览.

  11. 选择 Add(添加)。

Split by column keys

可以使用以下过程按照数据集中的列键来拆分。

要按数据集中的列键拆分,请执行以下操作。

  1. 选择+在包含要拆分的数据集的节点旁边。

  2. 选择添加转换.

  3. 选择拆分数据.

  4. 适用于转换,选择按键拆分.

  5. (可选)对于Splet中,指定每个拆分的名称和比例。比例必须总和为 1。

  6. (可选) 选择+以创建额外的拆分。

    1. 指定所有拆分的名称和比例。比例必须总和为 1。

  7. 适用于键列中,请使用您不希望在两个数据集中显示的值来指定列。

  8. (可选) 为错误阙值除了默认值。

  9. 选择预览.

  10. 选择 Add(添加)。

将值解析为类型

使用此转换可将列转换为新类型。支持的 Data Wrangler 数据类型包括:

  • 长整型

  • Float

  • 布尔值

  • 日期,格式为 dd-mm-yyyy,分别表示日、月和年。

  • 字符串

验证字符串

使用验证字符串转换以创建一个指示一行文本数据满足指定条件的新列。例如,您可以使用验证字符串转换以验证字符串是否只包含小写字符。下面支持以下转换验证字符串.

此转换组中包括以下转换。如果转换输出布尔值,True用一个表示1False用一个表示0.

名称 函数

字符串长度

返回值True如果字符串长度等于指定的长度。否则返回 False

从 开始

返回值True如果字符串开始,将有一个指定的前缀。否则返回 False

Ends with

返回值True如果字符串长度等于指定的长度。否则返回 False

字母数字吗

返回值True如果字符串只包含数字和字母。否则返回 False

是 Alpha(字母)

返回值True如果字符串只包含字母。否则返回 False

数字

返回值True如果字符串只包含数字。否则返回 False

是空间

返回值True如果字符串只包含数字和字母。否则返回 False

是标题

返回值True如果字符串包含任何空格。否则返回 False

小写形式

返回值True如果字符串只包含小写字母。否则返回 False

大写形式

返回值True如果字符串只包含大写字母。否则返回 False

数值

返回值True如果字符串只包含数字。否则返回 False

小数

返回值True如果字符串只包含十进制数字。否则返回 False

取消嵌套 JSON 数据

如果你有 .csv 文件,你的数据集中可能有 JSON 字符串的值。同样,您可能会将数据嵌套在 Pasic 文件或 JSON 文档的列中。

使用展平结构运算符将第一级键分成单独的列。第一级键是不嵌套在值中的键。

例如,您可能有一个具有列中每个人的人口统计信息存储为 JSON 字符串。JSON 字符串可能与以下内容类似。

"{"seq": 1,"name": {"first": "Nathaniel","last": "Ferguson"},"age": 59,"city": "Posbotno","state": "WV"}"

这些区域有:展平结构运算符会将以下第一级键转换为数据集中的其他列:

  • seq

  • name

  • 年龄

  • city

  • state

Data Wrangler 将键的值作为值放在列之下。下面显示了 JSON 的列名和值。

seq, name, age, city, state 1, {"first": "Nathaniel","last": "Ferguson"}, 59, Posbotno, WV

对于数据集中包含 JSON 的每个值,展平结构运算符为第一级键创建列。要为嵌套键创建列,请再次调用运算符。对于前面的示例,调用运算符将创建列:

  • name_irst

  • name_last

以下示例显示了再次调用操作后产生的数据集。

seq, name, age, city, state, name_first, name_last 1, {"first": "Nathaniel","last": "Ferguson"}, 59, Posbotno, WV, Nathaniel, Ferguson

选择要拼合的钥匙以指定要作为单独列提取的第一级键。如果您未指定任何密钥,则默认情况下,Data Wrangler 会提取所有密钥。

分解数组

使用分解数组将数组的值扩展为单独的输出行。例如,该操作可以获取数组中的每个值 [[1、2、3、]、[4、5、6]、[7、8、9]] 并创建一个包含以下行的新列:

[1, 2, 3] [4, 5, 6] [7, 8, 9]

数据 Wrangler 将新列命名为 input_column_name_flatten。

您可以拨打分解数组多次操作以将数组的嵌套值放入单独的输出列中。以下示例显示了对具有嵌套数组的数据集多次调用该操作的结果。

将嵌套数组的值放到单独的列中
id 数组 id array_items id array_items_项目
1 [[猫、狗]、[蝙蝠、青蛙]] 1 [猫、狗] 1 cat
2

[[玫瑰,矮牵牛],[莉莉,雏菊]]

1 [蝙蝠,青蛙] 1
2 [玫瑰,矮牵牛] 1 bat
2 [莉莉,雏菊] 1 青蛙
2 2 玫瑰
2 2 矮牵牛
2 2 莉莉
2 2 雏菊