编码字段 (数据管理)

摘要

将分类值(字符串、整数或日期)转换为多个数值字段,每个字段表示一个类别。 编码的数值字段可用于大多数数据科学和统计工作流,包括回归模型。

插图

编码字段工具图示

使用情况

    警告:

    此工具会修改输入数据。 有关详细信息以及避免数据被意外更改的策略,请参阅修改或更新输入数据的工具

  • 该工具支持以下编码方法:

    • 一热 - 将每个分类值转换为新列,并分配 0 或 1。其中 1 表示存在该分类值。
    • 一冷 - 将每个分类值转换为新列,并分配 0 或 1。其中 0 表示存在该分类值。
    • 时间 - 根据时间步间隔将字段中的每个日期值转换为整数值(0、1、2等)。 属于同一时间步间隔的所有日期使用同一整数进行编码。 使用时间方法时,将创建三个字段:包含编码时间步的时间步字段、包含时间间隔的开始时间的开始时间字段,以及包含时间间隔的结束时间的结束时间字段。

  • 该工具会修改输入数据,并将新的编码字段追加到输入表或要素类中。

  • 如果将编码方法参数设置为一热一冷方法,字段数将等于选择编码的字段中的分类值数(包括文本和整数)。 如果使用时间编码方法,将根据时间步间隔参数值创建时间步间隔,并创建三个字段,分别包含时间步、开始时间和结束时间。

  • 仅当将编码方法参数设置为时间方法时,时间步长间隔参数才使用。 时间值将聚合到该时间范围内的时间步中。 时间步间隔的单位可以是秒、分钟、小时、天、周、月或年。

  • 时间步对齐参数用于定义如何基于给定时间步间隔进行聚合。 结束时间选项用于将时间步与最后一个时间事件对齐,并向后聚合时间。 开始时间选项用于将时间步与第一个时间事件对齐,并向前聚合时间。 参考时间选项用于指定时间步对齐到的特定日期和时间。

    了解有关时间步对齐的详细信息

参数

标注说明数据类型
输入表

包含要编码的字段的输入表或要素类。 字段将添加到现有输入表,并且不会创建新的输出表。

Table View; Raster Layer; Mosaic Layer
要编码的字段

包含要编码的分类值或时间值的字段。

Field
编码方法
(可选)

指定用于对要编码的字段参数中包含的值进行编码的方法。

  • 一热每个分类值都将转换为一个新字段,并且分配值 0 和 1,其中 1 表示存在该分类值。 这是默认设置。
  • 一冷每个分类值都将转换为一个新字段,并且分配值 0 和 1,其中 0 表示存在该分类值。
  • 时态要编码的字段参数中的每个时间值将根据时间步间隔、时间步对齐和指定的参考时间转换为整数。
String
时间步长间隔
(可选)

表示单个时间步的秒数、分钟数、小时数、天数、周数或年数。 时间值将聚合到其所在范围内的某一时间步中。 如果未提供任何值,默认时间步间隔将基于两种算法,来确定时间步间隔的最佳数量和宽度。 将使用两个结果中的较小者作为时间步间隔。

Time Unit
时间步长对齐
(可选)

指定如何根据时间步间隔参数值进行聚合。

  • 结束时间时间步长将与最后一次时间事件对齐,并向后聚合时间。 这是默认设置。
  • 开始时间时间步长将与第一次时间事件对齐,并向前聚合时间。
  • 参考时间时间步将与在参考时间参数中指定的日期和时间对齐。 将从参考时间到开始向前和向后聚合时间,直到到达第一个和最后一个时间值。
String
参考时间
(可选)

时间间隔将对齐到的日期和时间。 例如,要按星期从星期一至星期天对数据进行图格组合,将星期天的午夜设置为参考时间,以确保时间步在星期天和星期一之间的午夜进行划分。

该值可以是日期和时间值或仅为日期值;不能仅为时间。 预期格式由计算机的区域时间设置决定。

Date

派生输出

标注说明数据类型
更新的输入表

包含添加的已编码字段的表。

Table View

arcpy.management.EncodeField(in_table, field, {method}, {time_step_interval}, {time_step_alignment}, {reference_time})
名称说明数据类型
in_table

包含要编码的字段的输入表或要素类。 字段将添加到现有输入表,并且不会创建新的输出表。

Table View; Raster Layer; Mosaic Layer
field

包含要编码的分类值或时间值的字段。

Field
method
(可选)

指定用于对要编码的字段参数中包含的值进行编码的方法。

  • ONEHOT每个分类值都将转换为一个新字段,并且分配值 0 和 1,其中 1 表示存在该分类值。 这是默认设置。
  • ONECOLD每个分类值都将转换为一个新字段,并且分配值 0 和 1,其中 0 表示存在该分类值。
  • TEMPORAL要编码的字段参数中的每个时间值将根据时间步间隔、时间步对齐和指定的参考时间转换为整数。
String
time_step_interval
(可选)

表示单个时间步的秒数、分钟数、小时数、天数、周数或年数。 时间值将聚合到其所在范围内的某一时间步中。 如果未提供任何值,默认时间步间隔将基于两种算法,来确定时间步间隔的最佳数量和宽度。 将使用两个结果中的较小者作为时间步间隔。

Time Unit
time_step_alignment
(可选)

指定如何根据时间步间隔参数值进行聚合。

  • END_TIME时间步长将与最后一次时间事件对齐,并向后聚合时间。 这是默认设置。
  • START_TIME时间步长将与第一次时间事件对齐,并向前聚合时间。
  • REFERENCE_TIME时间步将与在参考时间参数中指定的日期和时间对齐。 将从参考时间到开始向前和向后聚合时间,直到到达第一个和最后一个时间值。
String
reference_time
(可选)

时间间隔将对齐到的日期和时间。 例如,要按星期从星期一至星期天对数据进行图格组合,将星期天的午夜设置为参考时间,以确保时间步在星期天和星期一之间的午夜进行划分。

该值可以是日期和时间值或仅为日期值;不能仅为时间。 预期格式由计算机的区域时间设置决定。

Date

派生输出

名称说明数据类型
updated_table

包含添加的已编码字段的表。

Table View

代码示例

EncodeField 示例 1(Python 窗口)

下面的 Python 窗口脚本演示了如何使用 EncodeField 工具。


arcpy.management.EncodeField("San_Francisco_Crimes", 
                    "Category", "ONEHOT", '', None, "END_TIME")
EncodeField 示例 2(独立脚本)

以下独立 Python 脚本演示了如何使用 EncodeField 工具。


# Import system modules.
import arcpy

try:
    # Set the workspace and input features.
    arcpy.env.workspace = r"C:\\Encoded\\MyData.gdb"
    inputFeatures = 'San_Francisco_Crimes'

    # Set input features, dependent variable, and explanatory variable.
    in_table = 'San_Francisco_Crimes'
    field = 'Dates'

    # Set encoding Method
    encoding_method = "TEMPORAL"

    # Set time Step Interval
    time_step_interval = '1 Days'

    # Set Time Step Alignment
    time_step_alignment = "START_TIME"

    # Run Encode Field Tool.
    arcpy.management.EncodeField(in_table, field, encoding_method, 
                    None, time_step_interval, time_step_alignment)

except arcpy.ExecuteError:
    # If an error occurred when running the tool, print the error message.
    print(arcpy.GetMessages())

环境