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

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

转换数据

Amazon SageMaker Data Wrangler 提供了大量 ML 数据转换,以简化数据的清理、转换和特征化。添加转换时,它会向数据流添加一个步骤。您添加的每个转换都会修改数据集并生成新的数据帧。所有后续转换都应用于生成的数据帧。

Data Wrangler 包含内置转换,您可以使用这些转换来转换列,而无需任何代码。您还可以使用 PySpark 和 PySpark SQL 添加自定义转换。有些转换就地运行,而其他转换则在数据集中创建一个新的输出列。

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

转换 UI

大多数内置转换位于 UI 的 PrepareData Wrangler (准备) 选项卡中。联接和联接转换通过数据流视图访问。可以使用下表预览这两个视图。

Join View

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

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

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

Concatenate View

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

当您选择 Configure (配置) 以配置联接时,您会看到类似于下图中所示结果。您的联接配置将显示在左侧面板中。您可以使用此面板选择联接的数据集的名称,并选择在联接后删除重复项并添加列以指示源数据帧。主面板显示三个表。前两个表在左侧和右侧分别显示 Left (左侧) 和 Right (右侧) 数据集。在此表下,您可以预览联接的数据集。

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

Transforms in the Prepare Tab

要在 Prepare (准备) 选项卡上访问转换,请选择数据流中步骤旁边的 +,然后选择 Add transform (添加转换)。

Prepare (准备) 选项卡上,在 Add (添加) 下添加步骤。

您可以使用 Previous steps 选项卡,按顺序查看和删除已添加的转换。

联接数据集

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

  • 左外 – 包含左侧表中的所有行。如果左表行中联接的列的值与任何右表行值不匹配,则该行包含联接表中的所有右表列的 null 值。

  • Left Anti – (左侧) 包含左侧表中不包含已联接列的右侧表中的值的行。

  • Left submit – (左侧半部分) 对于满足联接语句中条件的所有相同行,包括左侧表中的单个行。这不包括左侧表中与联接条件匹配的重复行。

  • Right Outside (右外部) – 包含右侧表中的所有行。如果右表行中联接列的值与任何左侧表行值不匹配,则该行包含联接表中的所有左侧表列的 null 值。

  • 内部 – 包含左侧和右侧表中在联接列中包含匹配值的行。

  • Full Outeral (外部已满) – 包含左侧和右侧表中的所有行。如果任一表中的联接列的行值不匹配,则会在联接表中创建单独的行。如果某行不包含联接表中某列的值,则该列将插入 null。

  • Cartesian Cross (笛卡尔交叉) – 包含将第一个表中的每行与第二个表中的每行组合在一起的行。这是联接中的表中的行的笛卡尔积。此产品的大小等于左侧表的大小乘以右侧表的大小。因此,我们建议在非常大的数据集之间谨慎使用此联接。

使用以下过程联接两个数据帧。

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

  2. 选择 Join (联接)。

  3. 选择正确的数据帧。您选择的第二个数据帧始终是联接中的右侧表。

  4. 选择 Configure (配置) 以配置您的联接。

  5. 使用 Name (名称) 字段为联接的数据集指定一个名称

  6. 选择 Join type (联接类型)。

  7. 从左侧和右侧表中选择一个要联接的列。

  8. 选择 Apply (应用) 以预览右侧的联接数据集。

  9. 要将联接的表添加到数据流,请选择右上角的 Add (添加)。

联接数据集

连接两个数据集:

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

  2. 选择 联接

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

  4. 选择 Configure (配置) 以配置连接。

  5. 使用 Name (名称) 字段为联接的数据集指定一个名称

  6. (可选)选中 Remove duplicates after contation (在联接后删除重复项) 旁边的复选框以删除重复列。

  7. (可选)如果要为新数据集中的每个列添加列源的指示符,请选中 Add column (添加列) 旁边的复选框以指示源数据帧

  8. 选择 Apply (应用) 以预览新数据集。

  9. 选择 Add (添加) 以将新数据集添加到您的数据流。

自定义转换

自定义转换组允许您使用 Pyspark、Pandas 或 Pyspark (SQL) 来定义自定义转换。对于所有三个选项,您可以使用 变量df访问要应用转换的数据帧。您无需包含返回语句。选择 Preview (预览) 以预览自定义转换的结果。选择 Add 以将自定义转换添加到 Previous steps 列表中。

您可以使用自定义转换代码块中的 import 语句导入常用库,如下所示:

  • Numpy 版本 1.19.0

  • Scikit-learn 版本 0.23.2

  • Scpy 版本 1.5.4

  • Pandas 版本 1.0.3

  • Pyspark 版本 3.0.0

如果您在代码块中包含打印语句,则在选择 Preview (预览) 时将显示结果。

以下是如何使用自定义转换代码块的示例:

Pyspark

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

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'))

Panda

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

df.info()

Pyspark (SQL)

以下 创建一个包含 5 个列的新数据帧:名称类别pclass已存留

SELECT name, fare, pclass, survived FROM df

自定义公式

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

重要

自定义公式不支持名称中包含空格的列。您可以使用 Manage columns transform 组中的 Rename 列转换从列名称中删除空格。您还可以添加一个类似于以下内容的 Pandas Custom 转换,以通过一个步骤从多个列中删除空格。此示例将名为 A column 和 的列B column分别更改为 A_column B_column 和 。

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

您可以使用此转换对列执行操作,并按名称引用列。例如,假定当前数据帧包含名为 col_acol_b 的列,您可以使用以下操作生成作为这两个列的积的 Output 列,并包含以下代码:

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 文档

编码分类

分类数据通常由有限数量的类别组成,其中每个类别都用一个字符串表示。例如,如果您有一个客户数据表,则指示一个人居住的国家/地区的列是分类列。这些类别将为阿富纳、阿尔巴尼亚、阿尔及利亚等。分类数据可以是标称序数。序号类别具有固有的顺序,名义类别没有固有的顺序。获得的最高度(高中、Bandabdas、Master)是序号类别的示例。

对分类数据进行编码是为类别创建数值表示形式的过程。例如,如果您的类别是 Dog (狗) 和 Cat (猫),您可以将此信息编码为两个向量[1,0](表示狗)和 [0,1] (表示猫)。

当您对序数类别进行编码时,您可能需要将类别的自然顺序转换为您的编码。例如,您可以表示使用以下映射获得的最高度:{"High school": 1, "Bachelors": 2, "Masters":3}

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

Data Wrangler 分类编码器为定义步骤时列中存在的所有类别创建编码。如果在您启动Data Wrangler作业以在时间 t 处理数据集时,列已添加新类别,并且此列是时间 Data Wranglert-1 的分类编码转换的输入,则这些新类别将在作业中缺失Data Wrangler。您为 Invalid handling strategy (无效处理策略) 选择的选项将应用于这些缺失的值。发生这种情况的示例包括:

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

  • 当您在导入数据集时选择 Sampling (采样) 时,样本中可能会省略一些类别。

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

您可以从 中进行选择并配置序数单热点编码。可以使用以下部分了解有关这些选项的更多信息。

这两个转换都会创建一个名为 Output column name (输出列名称) 的新列。您可以使用 Output style (输出样式) 指定此列的输出格式:

  • 选择 Vector (向量) 以生成具有稀疏向量的单个列。

  • 选择 Columns (列) 以便为每个类别创建一个列,该列带有指示变量,指示原始列中的文本是否包含等于该类别的值。

序号

选择 Ordinal encode (序号编码) 以将类别编码为介于 0 和您选择的 Input (输入) 列中类别总数之间的整数。

处理策略无效:选择处理无效或缺失值的方法。

  • 如果要忽略缺少值的行,请选择 Skip (跳过)。

  • 选择 Keep (保留) 以将缺失值保留为最后一个类别。

  • 如果要在 Input (输入) 列中遇到缺失值时Data Wrangler引发错误,请选择 Error (错误)。

  • 选择 Replace with NaN (将 替换为 NaN) 以将 missing (缺失) 替换为 NaN。如果您的 ML 算法可以处理缺失值,则推荐使用此选项。否则,此列表中的前三个选项可能会产生更好的结果。

一次性编码

Transform 选择 One-hot encode 以使用 One-hot 编码。使用以下命令配置此转换:

  • 删除最后一个类别:如果为 True,则最后一个类别在单热点编码中没有对应的索引。如果可能缺失值,则缺失的类别始终是最后一个类别,并且将其设置为 True 意味着缺失值将产生全部零向量。

  • 处理策略无效:选择处理无效或缺失值的方法。

    • 如果要忽略缺少值的行,请选择 Skip (跳过)。

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

    • 如果要在 Input (输入) 列中遇到缺失值时Data Wrangler引发错误,请选择 Error (错误)。

  • Is input ordinal encoded (输入序号编码):如果输入向量包含序号编码数据,则选择此选项。此选项要求输入数据包含非负整数。如果True,则输入 i 编码为向量,并在第 i 个位置具有非零 。

特征化文本

使用 Feature Text (特征文本) 转换组检查字符串类型的列,并使用文本嵌入来特征化这些列。

此功能组包含两个功能:角色统计数据向量。可以使用以下部分了解有关这些转换的更多信息。对于这两个选项,Input (输入) 列必须包含文本数据(字符串类型)。

角色统计数据

使用 Character statistics 为包含文本数据的列中的每一行生成统计数据。

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

  • Number of words (单词数):该行中的单词总数。此输出列的后缀是 -stats_word_count。

  • Number of characters (字符数):该行中的字符总数。此输出列的后缀是 -stats_char_count。

  • 上限比率:大写字符数,从 A 到 Z,除以列中的所有字符。此输出列的后缀是 -stats_capital_product。

  • lower 的比率:小写字符数,从 a 到 z,除以 列中所有字符的数量。此输出列的后缀是 -stats_lower_product。

  • 数字比率:单个行中的数字与输入列中数字总和的比率。此输出列的后缀是 -stats_digith_protrative。

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

Vectorize

文本嵌入涉及将单词或短语从词汇表映射到实数的向量。使用Data Wrangler文本嵌入转换将文本数据令牌化和向量化为术语频率-反向文档频率 (TF-IDF) 向量。

当为文本数据列计算 TF-IDF 时,每个句子中的每个单词都将转换为代表其语义重要性的真实数字。数字越大,单词频率越低,这往往越有意义。

定义 Vectorize 转换步骤时,计数向量器和 TF-IDF 方法是在定义此步骤Data Wrangler时使用 中提供的数据定义的。在运行Data Wrangler作业时,将使用这些相同的方法。

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

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

  • 标记器:标记器将句子转换为单词或令牌的列表。

    选择 Standard (标准) 以使用按空格拆分并将每个单词转换为小写的标记器。例如, "Good dog" 令牌化为 ["good","dog"]

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

    • Minimum token length (最小令牌长度):令牌有效所需的最小长度(以字符为单位)。默认值为 1。例如,如果您3为最小令牌长度指定 a, at, in ,则会从令牌化句子中删除像 这样的单词。

    • 正则表达式在间隙时拆分:如果选中,则正则表达式在间隙时拆分。否则,它将与令牌匹配。默认值为 True

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

    • To lowercase:如果选中,则在令牌化之前,所有字符都将转换为小写。默认值为 True

    要了解更多信息,请参阅 Tokenizer 上的 Spark 文档。

  • Vectorizer:向量器将令牌列表转换为稀疏数字向量。每个令牌对应于向量中的一个索引,非零表示输入句子中存在令牌。您可以从两个向量器选项(Count (计数) 和 Hashing (哈希))中进行选择。

    • 计数向量化允许对不频繁或过于常见的令牌进行筛选的自定义。计数向量化参数包括:

      • Minimum term frequency (最短期限频率):在每一行中,筛选频率较低的术语(标记)。如果指定整数,则为绝对阈值(含)。如果您指定的分数介于 0(含)和 1 之间,则阈值相对于总项数。默认值为 1

      • 最小文档频率:必须包含字词(令牌)的最小行数。如果指定整数,则为绝对阈值(含)。如果您指定的分数介于 0(含)和 1 之间,则阈值相对于总项数。默认值为 1

      • 最大文档频率:可以显示包含某个字词(令牌)的文档的最大数量(行)。如果指定整数,则为绝对阈值(含)。如果您指定的分数介于 0(含)和 1 之间,则阈值相对于总项数。默认值为 0.999

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

      • 二进制输出:如果选中,则向量输出不包括文档中的某个项的外观数,而是该术语的外观的二进制指示符。默认值为 False

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

    • 哈希的计算速度更快。哈希向量化参数包括:

      • 哈希过程中的特征数:哈希向量器根据其哈希值将令牌映射到向量索引。此功能决定了可能的哈希值的数量。较大的值会减少哈希值之间的碰撞,但维度更高的输出向量。

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

  • 应用 IDF:选择此项后,将应用 IDF 转换,它将术语频率乘以用于 TF-IDF 嵌入的标准逆文档频率。IDF 参数包括:

    • 最小文档频率:必须显示术语(令牌)以包含的最小文档(行)数。如果 count_vectorize 是所选的向量器,我们建议您保留默认值,并且仅修改 Count vectorize parameters 中的 min_doc_freq 字段。默认值为 5

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

    • 选择 Vector (向量) 以生成具有稀疏向量的单个列。

    • 选择 Flattened (展平) 可为每个类别创建一个列,该列带有指示变量,指示原始列中的文本是否包含等于该类别的值。您只能在 Vectorizer 设置为 Count vectorizer 时选择平展。

特征化日期/时间

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

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

  • Unix 时间戳。Unix 时间戳描述 1/1/1970 以来的秒数、毫秒数、微秒数或纳秒数。

您可以选择推理日期时间格式并提供日期时间格式。如果您提供了日期/时间格式,则必须使用本 Python 文档中描述的代码。您为这两个配置选择的选项会影响操作的速度和最终结果:

  • 最手动和计算最快的选项是指定 Datetime 格式,然后为 Infer datetime 格式选择 No。

  • 要减少手动工作,您只需选择 Infer datetime format (推理日期时间格式),而不指定日期/时间格式。这也是一种计算快速的操作;但是,假设输入列中遇到的第一个日期/时间格式是整个列的格式。因此,如果列中遇到其他格式,则这些值在最终输出中为 NaN。因此,此选项可能会导致未解析字符串。

  • 如果您未指定格式,并且为 Infer datetime format 选择 No,则会得到最可靠的结果。解析所有有效的日期/时间字符串。但是,此操作可以是比此列表中的前两个选项慢的幅度顺序。

使用此转换时,您可以指定 Input (输入) 列,其中包含上面列出的格式之一的日期/时间数据。转换将创建一个名为 Output column name 的输出列。输出列的格式取决于您使用以下内容的配置:

  • Vector (向量):输出具有稀疏向量的单个列。

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

此外,您必须选择嵌入模式。对于线性模型和深度网络,建议使用循环。对于基于树的算法,建议使用序号

格式字符串

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

此功能组包含以下转换。所有转换都会返回 Input (输入) 列中字符串的副本,并将结果添加到新的输出列。

名称 函数
左侧键盘

将具有给定 Fill 字符的字符串左填充到给定宽度。如果字符串长度超过宽度,则返回值将缩短为宽度字符。

右键盘

将具有给定 Fill 字符的字符串右填充到给定宽度。如果字符串长度超过宽度,则返回值将缩短为宽度字符。

Center (中央)(两侧的手柄)

将具有给定 Fill (填充) 字符的字符串 (在字符串两侧添加填充) 居中填充到给定宽度。如果字符串长度超过宽度,则返回值将缩短为宽度字符。

附加零

左填充具有零的数字字符串,最大为给定宽度。如果字符串长度超过宽度,则返回值将缩短为宽度字符。

去除左右线

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

从左侧删除字符

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

从右侧删除字符

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

小写

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

大写

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

大写

用每个句子中的第一个字母大写。

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

为字符串列添加前缀和后缀。您必须至少指定 Prefix (前缀) 和 Suffix (后缀) 之一。

删除符号

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

处理异常值

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

当您定义 Handle liperies transform (处理异常值转换) 步骤时,在定义此步骤Data Wrangler时,将在 中可用的数据上生成用于检测异常值的统计数据。运行Data Wrangler作业时使用这些统计数据。

可以使用以下部分了解有关此组包含的转换的更多信息。您可以指定 Output name (输出名称),其中每个转换都会生成一个包含生成的数据的输出列。

可靠的标准差数值异常值

此转换使用对异常值非常强大的统计数据检测和修复数值特征中的异常值。

您必须定义一个 Upper 分位数和一个 Lower 分位数,它们用于计算异常值的统计数据中会用到。您还需要指定标准偏差的数量,值必须从这些标准偏差中随平均值变化,才能被视为异常值。例如,如果您为标准偏差指定 3,则值必须比平均值低 3 个以上的标准偏差,才能被视为异常值。

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

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

  • Remove (删除):使用此项可从数据帧中删除具有异常值的行。

  • 失效:使用此项将异常值替换为无效值。

标准偏差数值异常值

此变换使用平均值和标准偏差检测和修复数字特征中的异常值。

您可以指定某个值必须随平均值不同而被视为异常值时的标准偏差数。例如,如果您为标准偏差指定 3,则值必须比平均值低 3 个以上的标准偏差,才能被视为异常值。

Fix 方法是用于在检测到异常值时处理异常值的方法。可从以下选项中进行选择:

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

  • Remove (删除):使用此项可从数据帧中删除具有异常值的行。

  • 失效:使用此项将异常值替换为无效值。

分位数数值异常值

使用此变换可使用分位数检测和修复数字特征中的异常值。您可以定义一个 Upper 分位数和一个 Lower 分位数,所有高于或低于这些分位数值的值都被视为异常值。

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

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

  • Remove (删除):使用此项可从数据帧中删除具有异常值的行。

  • 失效:使用此项将异常值替换为无效值。

最小数值异常值

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

您指定 Upper threshold (上限) 和 Lower threshold (下限),如果值分别高于或低于这些阈值,则将其视为异常值。

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

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

  • Remove (删除):使用此项可从数据帧中删除具有异常值的行。

  • 失效:使用此项将异常值替换为无效值。

替换罕见的

当您使用 Replace fragnical (替换极少数) 转换时,您可以指定阈值并Data Wrangler查找满足该阈值的所有值,并将其替换为您指定的字符串。例如,您可能希望使用此转换将列中的所有异常值分类为“Others”类别。

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

  • Absolute threshold (绝对阈值):如果实例数小于或等于此绝对阈值,则类别很少见。

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

  • Max common categorys (最大常见类别数):操作后保留的最大无延迟类别数。如果阈值没有筛选足够的类别,则具有最大外观数的类别将分类为不常见。如果设置为 0(默认值),则对类别数没有硬性限制。

处理缺失值

机器学习数据集中常出现缺失值。在某些情况下,使用计算值 (如平均值或分类公共值) 来推断缺失数据是合适的。您可以使用 Handle missing values (处理缺失值) 转换组处理缺失值。此组包含以下转换。

Fill Missing (填充缺失)

使用 Fill missing (填充缺失) 转换将缺失值替换为您定义的 Fill (填充) 值

Impute Missing (输入缺失)

使用 Impute missing transform 创建一个新列,其中包含在输入分类和数值数据中找到缺失值的已预测值。配置取决于您的数据类型。使用以下命令配置此转换:

  • Imputing strategy (推理策略):用于确定要推理的新值的策略。

    对于数值数据,将基于当前值计算所选统计数据,并将该统计数据用作所有缺失值的已预测值。选择是平均值中值

    对于分类数据,您可以选择在 列中推断 Most frequent 值,也可以定义要推断的自定义字符串。

为缺失添加指示符

使用 Add indicator for missing transform (为缺失的变换添加指示符) 创建新的指示器列,如果"false"行包含 值,则其中包含布尔值"true";如果行包含缺失值,则包含布尔值。

删除缺失

使用 Drop missing (删除缺失) 选项可从 Input (输入) 列中删除包含缺失值的行。

管理列

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

名称 函数
Drop Column (删除列) 删除列。
复制列 复制列。
重命名列 重命名列。
Move Column (移动列)

在数据集中移动列的位置。选择 以将列移动到数据集的开始或结束、引用列之前或之后或特定索引。

管理行

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

  • Sort:按给定列对整个数据帧进行排序。选中该选项的 Ascending order (升序) 旁边的复选框;否则,取消选中复选框,将降序用于排序。

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

管理向量

使用此变换组可合并或展平向量列。此组包含以下转换。

  • 汇编:使用此转换将 Spark 向量和数字数据合并到单个列中。例如,您可以组合三个列:两个包含数字数据的列和一个包含向量的列。在 Input columns (输入列) 中添加要组合的所有列,并为组合数据指定 Output column name (输出列名称)。

  • Flatten (展平):使用此转换展平包含向量数据的单个列。输入列必须包含 PySpark向量或类似数组的对象。您可以通过指定方法来检测输出数,从而控制创建的列数。例如,如果您选择 Length of first vector (第一个向量的长度),则在列中找到的第一个有效向量或数组中的元素数将决定创建的输出列数。项目过多的所有其他输入向量将被截断。包含的项目太少的输入会填充 NaNs。

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

进程数值

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

  • Standard Scaler (标准标度):通过从每个值中减去平均值来标准化输入列,并将平均值缩放为单位方差。要了解更多信息,请参阅 StandardScaler 的 Spark 文档。

  • 可靠的 Scaler:使用对异常值可靠的统计数据扩展输入列。要了解更多信息,请参阅 RobustScaler 的 Spark 文档。

  • Min Max Scaler:通过将每个特征扩展为给定范围来转换输入列。要了解更多信息,请参阅 MinMaxScaler 的 Spark 文档。

  • Max Absolute Scaler:通过将每个值除以最大绝对值来扩展输入列。要了解更多信息,请参阅 MaxAbsScaler 的 Spark 文档。

搜索和编辑

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

Search and edit (搜索和编辑) 下支持以下转换。所有转换都会返回 Input (输入) 列中字符串的副本,并将结果添加到新的输出列。

名称 函数

查找子字符串

返回您有选择地搜索的子字符串的第一个匹配项的索引,分别从 StartEnd 开始和结束搜索。

查找子字符串(从右侧)

返回您上次搜索的子字符串的出现次数的索引(可选),分别从 StartEnd 开始和结束搜索。

匹配前缀

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

查找所有匹配项

返回具有给定模式的所有匹配项的数组。模式可以是字符序列或正则表达式。

使用正则表达式提取

返回与给定正则表达式模式匹配的字符串。

在分隔符之间提取

返回一个字符串,其中在 Left delimiter (左分隔符) 和 Right delimiter (右分隔符) 之间找到所有字符。

从位置提取

返回一个字符串,从输入字符串中的 Start position (开始位置) 开始,其中包含所有字符,直至开始位置加 Length (长度)。

查找并替换子字符串

返回一个字符串,其中给定模式(正则表达式)的所有匹配项都替换为 Replacement string (替换字符串)。

在分隔符之间替换

返回一个字符串,该字符串的子字符串在左分隔符的第一个外观与右分隔符的最后一个外观替换为 Replacement string。如果未找到匹配项,则不会替换任何内容。

从位置替换

返回一个字符串,该字符串的子字符串介于 Start position (开始位置) 和 Start position (开始位置) 之间,加上 Length replaceed by Replacement string (替换为替换字符串的长度)。如果 Start position + Length 大于替换字符串的长度,则输出包含...

将正则表达式转换为缺失

如果字符串无效None,则将字符串转换为 并返回结果。在 Pattern 中使用正则表达式定义有效性。

按分隔符拆分字符串

返回输入字符串中的字符串数组,按分隔符拆分,拆分次数最多为最大(可选)。分隔符默认为空格。

将值解析为类型

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

  • 长整型

  • Float

  • Boolean

  • 日期,格式为 dd-MM-yyyyy,分别表示日期、月份和年份。

  • 字符串

验证字符串

使用 Validate string transforms (验证字符串转换) 创建一个新列,指示一行文本数据满足指定条件。例如,您可以使用 Validate 字符串转换来验证字符串是否仅包含小写字符。Validate string (验证字符串) 下支持以下转换。

此转换组中包含以下转换。如果转换输出布尔值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