编码字段 (数据管理)

摘要

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

插图

编码字段工具图示

使用情况

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

    • 一热 - 将每个分类值转换为新列,并分配 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

派生输出

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

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

表视图

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

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

表视图

代码示例

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

环境