填充缺失值 (时空模式挖掘)

摘要

用于将缺失值(空值)替换为基于空间邻域、时空邻域、时间序列或全局统计数据值的估算值。

了解有关填充缺失值工作原理的详细信息

插图

填充缺失值工具图示

使用情况

  • 输入要素或表参数值可以是点或面要素,或独立表。

  • 对于输入要素,可以基于空间邻域、时空邻域或时间序列值的估算缺失值。 缺失值可以在输入要素或相关表中。 对于独立表,可以使用输入字段或时间序列值的全局统计数据来估算缺失值。 由于独立表没有空间信息,因此无法为表定义空间邻域。

  • 对于每个待填充字段参数,输出中每个字段将包含三个字段。 第一个字段将包含原始值和填充值,第二个字段将包含指示已对值进行估算的指示符。 估算字段将保留其原始字段名称,但系统将使用以下命名约定创建字段别名:<field>_FILLED<field>_ESTIMATED。 对于输入要素,第三个字段是用于计算每个估算值的邻域数量字段 <field>_ N_NEIGHBORS。 对于独立表,第三个字段是用于计算每个估算值的记录数量字段 <field>_NUM_REC_USED

  • 对于输入要素,输出还将包含含有值的字段,这些值有助于理解用于目标缺失值计算的邻域数和邻域值范围。 如果填充方法参数设置为平均值,则报告在计算中使用的邻域标准差 (<field>_STD)。 将针对最大值选项报告最大邻域值 (<field>_MAX),而针对最小值选项报告最小邻域值 (<field>_MIN)。 如果填充方法参数设置为中位数,则会报告邻域的平均绝对差 (<field>_MAD)。 如果使用时间趋势选项填充缺失值,则字段 <field>_RES 将包含样条的残差平方和。 NNBRS 字段包含用于计算估算值的邻域计数。

  • 对于独立表,输出将包含含有值的字段,这些值有助于理解用于目标缺失值计算的字段的统计数据和非空值范围。 如果填充方法参数设置为平均值,则报告在计算中使用的所有非空值的标准差 (<field>_STD)。 将针对最大值选项报告输入字段的最大值 (<field>_MAX),而针对最小值选项报告最小值 (<field>_MIN)。 如果填充方法参数设置为中位数,则会报告非空值的平均绝对差 (<field>_MAD)。 如果使用时间趋势选项填充缺失值,则字段 <field>_RES 将包含样条的残差平方和。

  • 可以包含不含空值的字段。 系统会将这些字段复制到输出中,但输出中不包含与这些字段关联的附加字段(例如 <field>_FILLED<field>_ESTIMATED)。 或者,也可以为唯一 ID 参数提供值,该参数将添加到输出中,可用于将结果连接回输入要素或表。

  • 字段 NUM_EST(如果使用相关表,则字段为 TOT_EST)为关联记录的估算变量的总数。 此字段可用于渲染输出地图。

  • 您可以使用将字段追加到输入参数将附加字段追加到输入要素或表。 如果您追加这些字段,则不能提供相关表。

  • 对于输入要素,位置 ID 参数的使用方式可能根据输入时空数据的结构而有所不同。

    • 如果数据存储在相关表中(即,您在要素类中有一组要素,其相关表包含随时间变化的属性)并且您希望填充相关表中的缺失值,则可以使用相关表参数。 位置 ID 参数值将输入要素类中的每个要素与相关表中的一组记录相匹配,并且对于每个输入要素必须是唯一的。
    • 如果数据存储在同一要素类中(即重复形状或几何),则位置 ID 参数将指定要素类中的每个唯一位置。 例如,如果您拥有 10 年的美国县级人口数据,则每个县将在要素类中重复 10 次,并且县 ID 将用于指定每个唯一的县位置。 位置 ID 必须对每个位置唯一,但不一定对每个要素都是唯一的。

  • 位置 ID 的值是一个整型或文本型字段,应表示唯一的静态位置。 位置 ID 的 x,y 坐标不应随时间变化。

  • 此工具可用于处理存储为重复形状或随相关表存储的面板数据。 如果提供了位置 ID 参数的值,则此工具将识别到输入为面板数据,并且时间字段参数为必填字段。

  • 对于独立表,如果为位置 ID 参数提供了值而没有为时间字段参数提供值,则将使用与填充空值的位置具有相同位置 ID 的记录计算估算值. 例如,如果您拥有美国县级数据,并且想要使用同一州所有县的平均值来填充缺失值,则可以使用表示该州的字段作为位置 ID。

  • 如果位置 ID时间字段参数值都是输入的独立表,则仅可使用填充方法参数的时间趋势选项。

  • 如果选择固定距离仅邻接边邻接边拐角选项来设置空间关系的概念化参数,则可以通过选择距离范围时间邻域参数的值模拟空间时间窗。

  • 如果选择固定距离仅邻接边邻接边拐角选项来设置空间关系的概念化参数,则可以设置空间邻域数参数值以指定邻域的最小数量。

  • 仅当设置了位置 ID时间字段参数的值时,填充方法参数的时间趋势选项才可用。

  • 使用时间趋势选项填充值时,待填充空值的位置在时间序列开始处必须至少具有两个包含值的时间段,且在结束处必须至少具有两个包含值的时间段,才能进行填充。 由于这项要求,前两个或最后两个时间步长中存在的空值将无法使用时间趋势选项填充。

  • 时间趋势选项使用 SciPy 插值包中的一元样条插值方法。

  • 当用空间邻域填充面板数据的缺失值时,将时间邻域参数设置为 0。

  • 如果数据为面板数据,则时间邻域参数可用于按时间过滤。 或者,时间邻域值 0 仅供您查看空间邻域。

  • 检查生成的填充值至关重要,这样可以确保这些值对于分析有意义。 例如,如果原始字段为整型,并且已将工具设置为用空间邻域的平均值进行填充,则结果将包含小数,如果输入字段为计数,则结果可能没有意义。 此外,根据时间趋势参数所采用的方法,即使没有一个现有值为负数,结果也可能为负数。 如果填充的字段为人口字段,则结果没有意义。

  • N_NEIGHBORS 字段将报告包含在该要素计算中的邻域数量。 如果填充方法参数设置为时间趋势,则此数量为该位置 ID 值的时间序列中存在值的数量(例如,如果时间序列中仅缺少一个值,则将报告数据集中时间步长的数量为 -1)。 如果使用空间关系的概念化参数值 K 最近邻时间邻域值,则报告的邻域数量将包括落入指定时间窗范围内的要素的 k 个近邻。

  • 空值参数表示空(缺失)值。 根据输入和输出格式,此参数的使用方式有所不同。

    • 对于地理数据库要素类或表,如果没有为空值参数提供值,则 <空> 假定为空(缺失值)。 如果提供了值,则将在工具输出中估算该值和 <空> 值。
    • 对于 shapefile 和 dBASE 表,空值参数为必需项。 您必须提供一个表示输入数据中的空值或缺失值的值(例如,-9999)。
    • 如果输入是文件地理数据库要素类或表,而输出是 shapefile 或 dBASE 表,则需要此参数来指定无法估算的缺失值在工具输出中的表示方式。

  • 无法估算和填充的缺失值将会在输出中以空值的原始存在格式或在空值参数中指定的格式进行报告。

  • 在工具执行期间,描述分析详细信息和已填充字段特征的消息会写在地理处理窗格底部。 可将鼠标悬停在进度条上、单击弹出按钮 弹出窗口 或展开地理处理窗格中的消息部分来访问消息。 还可通过地理处理历史访问之前运行填充缺失值工具的消息。

参数

标注说明数据类型
输入要素或表

包含要填充的空值的点或面要素类或独立表。

如果提供了相关表参数值,则要填充的空值将包含在相关表中。 输入要素将与相关表中的行匹配以指定时空邻域。

Feature Layer; Table View
输出要素或表
(可选)

将包含已填充(估算)值的输出要素或独立表。

如果已提供相关表参数值,则此参数的输出将包含每个位置的估算值数,而输出表参数值将包含已填充(估算)值。

Feature Class; Table
要填充的字段

包含缺失数据(空值)的数值字段。

Field
填充方法

指定将要应用的计算类型。 仅当已提供位置 ID时间字段参数值时,时间趋势选项才可用。

  • 平均值空值将替换为要素邻域的平均值或要为独立表填充的字段的平均值。
  • 最小值空值将替换为要素邻域的最小值或要为独立表填充的字段的最小值。
  • 最大值空值将替换为要素邻域的最大值或要为独立表填充的字段的最大值。
  • 中值空值将替换为要素邻域的中值(排序的中间值)或要为独立表填充的字段的中值。
  • 时间趋势空值将基于该唯一位置处的趋势进行替换。
String
空间关系的概念化
(可选)

指定要素空间关系的定义方式。

  • 固定距离每个要素的指定临界距离(距离范围参数值)内的邻域要素都将包含在计算中;临界距离以外的所有要素都将排除在外。
  • K - 最近邻最近的 k 个要素将包含在计算中;k 是指定的数字参数。
  • 仅邻接边只有共享边界或重叠的相邻面要素会影响目标面要素的计算。
  • 邻接边拐角共享边界、节点或重叠的面要素会影响目标面要素的计算。
  • 通过文件获取空间权重将由指定空间权重文件定义空间关系。 指向空间权重文件的路径由权重矩阵文件参数指定。
String
距离范围
(可选)

用于空间关系的概念化参数固定距离选项的中断距离。 将在针对目标要素的计算中忽略为该要素指定的中断之外的要素。 此参数不适用于仅邻接边邻接边拐角选项。

Linear Unit
时间邻域
(可选)

向前和向后的间隔时间,用于确定要在针对目标要素的计算中使用的要素。 不在此目标要素间隔内的要素将在针对该要素的计算中忽略。

Time Unit
时间字段
(可选)

包含数据集中每条记录的时间戳的字段。 此字段的类型必须是日期。

对于要素输入,时间字段将在填充缺失值时定义时间邻域。 如果提供了相关表,则必须提供一个值。

对于要素和表输入,在使用该位置的时间趋势填充缺失值时将使用时间字段。

Field
空间邻域数
(可选)

要包括在计算中的最近领域数。

如果选择空间关系的概念化参数的固定距离仅邻接边邻接边拐角选项,则此数量为要包括在计算中的最小邻域数。

Long
位置 ID
(可选)

包含每个位置的唯一 ID 的整型或文本型字段。

如果提供了相关表,则该字段用于将每个输入要素与相关表中的行进行匹配;对于每个输入要素,该字段的值必须是唯一的。 如果未提供相关表,则此字段用于指定输入要素中的每个唯一位置以确定时间邻域。 在此情况下,该字段的值对于每个位置必须是唯一的,但不需要对于每个要素都是唯一的(因为多个要素可以具有相同的位置)。

Field
相关表
(可选)

包含输入要素或表参数的每个要素时态数据的表或表视图。

Table View
相关位置 ID
(可选)

相关表参数中包含关联所依据的位置 ID 参数值的整型或文本型字段。

Field
空间权重矩阵文件
(可选)

包含权重(定义要素间的空间关系以及可能的时态关系)的文件的路径。

File
唯一 ID
(可选)

包含输入要素或表参数值中每条记录的不同值的整型字段。 此字段可用于将结果连接回原始数据集。

如果没有 Unique ID 字段,则可以创建一个,方法是向输入要素属性表添加一个整型字段,然后将此字段的值计算为与 FIDOBJECTID 字段的值相等。

Field
空值
(可选)

表示空(缺失)值的值。 如果未提供任何值,则将地理数据库要素类或表假定为 <空>。 如果提供了值,则该值和所有 <空> 值将被填充。 如果输入或输出为 shapefile 或 dBASE 表,空占位符的数值为必填项。

Double
输出表
(可选)

包含已填充(估算)值的输出表。

如果提供了相关表,则输出表为必填项。

Table
将字段追加到输入数据
(可选)

指定是将已填充值的字段追加到输入数据还是使用已填充值的字段创建新的输出要素类或表。 如果您追加字段,则不能提供相关表,且将忽略输出坐标系环境。

  • 选中 - 包含已填充值的字段将被追加到输入数据。 此选项会修改输入数据。
  • 未选中 - 将创建包含已填充值的字段的输出要素类或表。 这是默认设置。

Boolean

派生输出

标注说明数据类型
更新后的输入要素或表

包含已填充值的字段的更新后的输入要素或表。

Feature Layer, Table View

arcpy.stpm.FillMissingValues(in_features, {out_features}, fields_to_fill, fill_method, {conceptualization_of_spatial_relationships}, {distance_band}, {temporal_neighborhood}, {time_field}, {number_of_spatial_neighbors}, {location_id}, {related_table}, {related_location_id}, {weights_matrix_file}, {unique_id}, {null_value}, {out_table}, {append_to_input})
名称说明数据类型
in_features

包含要填充的空值的点或面要素类或独立表。

如果提供了 related_table 参数值,则要填充的空值将包含在相关表中。 输入要素将与相关表中的行匹配以指定时空邻域。

Feature Layer; Table View
out_features
(可选)

将包含已填充(估算)值的输出要素或独立表。

如果已提供 related_table 参数值,则此参数的输出将包含每个位置的估算值数,而 out_table 参数值将包含已填充(估算)值。

Feature Class; Table
fields_to_fill
[fields_to_fill,...]

包含缺失数据(空值)的数值字段。

Field
fill_method

指定将要应用的计算类型。 仅当已提供 location_idtime_field 参数值时,TEMPORAL_TREND 选项才可用。

  • AVERAGE空值将替换为要素邻域的平均值。
  • MINIMUM空值将替换为要素邻域的最小值。
  • MAXIMUM空值将替换为要素邻域的最大值。
  • MEDIAN空值将替换为要素邻域的中位数(中值)。
  • TEMPORAL_TREND空值将基于该唯一位置处的趋势进行替换。
String
conceptualization_of_spatial_relationships
(可选)

指定要素空间关系的定义方式。

  • FIXED_DISTANCE每个要素的指定临界距离(distance_band 参数值)内的邻域要素都将包含在计算中;临界距离以外的所有要素都将排除在外。
  • K_NEAREST_NEIGHBORS最近的 k 个要素将包含在计算中;k 是指定的数字参数。
  • CONTIGUITY_EDGES_ONLY只有共享边界或重叠的相邻面要素会影响目标面要素的计算。
  • CONTIGUITY_EDGES_CORNERS共享边界、节点或重叠的面要素会影响目标面要素的计算。
  • GET_SPATIAL_WEIGHTS_FROM_FILE将由指定空间权重文件定义空间关系。 指向空间权重文件的路径由 Weights_Matrix_File 参数指定。
String
distance_band
(可选)

用于 conceptualization_of_spatial_relationships 参数 FIXED_DISTANCE 选项的中断距离。 将在针对目标要素的计算中忽略为该要素指定的中断之外的要素。 此参数不适用于 CONTIGUITY_EDGES_ONLYCONTIGUITY_EDGES_CORNERS 选项。

Linear Unit
temporal_neighborhood
(可选)

向前和向后的间隔时间,用于确定要在针对目标要素的计算中使用的要素。 不在此目标要素间隔内的要素将在针对该要素的计算中忽略。

Time Unit
time_field
(可选)

包含数据集中每条记录的时间戳的字段。 此字段的类型必须是日期。

对于要素输入,时间字段将在填充缺失值时定义时间邻域。 如果提供了相关表,则必须提供一个值。

对于要素和表输入,在使用该位置的时间趋势填充缺失值时将使用时间字段。

Field
number_of_spatial_neighbors
(可选)

要包括在计算中的最近领域数。

如果选择 conceptualization_of_spatial_relationships 参数的 FIXED_DISTANCECONTIGUITY_EDGES_ONLYCONTIGUITY_EDGES_CORNERS 选项,则此数量为要包括在计算中的最小邻域数。

Long
location_id
(可选)

包含每个位置的唯一 ID 的整型或文本型字段。

如果提供了相关表,则该字段用于将每个输入要素与相关表中的行进行匹配;对于每个输入要素,该字段的值必须是唯一的。 如果未提供相关表,则此字段用于指定输入要素中的每个唯一位置以确定时间邻域。 在此情况下,该字段的值对于每个位置必须是唯一的,但不需要对于每个要素都是唯一的(因为多个要素可以具有相同的位置)。

Field
related_table
(可选)

包含 in_features 参数的每个要素时态数据的表或表视图。

Table View
related_location_id
(可选)

related_table 参数中包含关联所依据的 location_id 参数值的整型或文本型字段。

Field
weights_matrix_file
(可选)

包含权重(定义要素间的空间关系以及可能的时态关系)的文件的路径。

File
unique_id
(可选)

包含 in_features 参数值中每条记录的不同值的整型字段。 此字段可用于将结果连接回原始数据集。

如果没有 unique_id 字段,则可以创建一个,方法是向要素类表添加一个整型字段,然后将此字段的值计算为与 FIDOBJECTID 字段的值相等。

Field
null_value
(可选)

表示空(缺失)值的值。 如果未提供任何值,则将地理数据库要素类或表假定为 <空>。 如果提供了值,则该值和所有 <空> 值将被填充。 如果输入或输出为 shapefile 或 dBASE 表,空占位符的数值为必填项。

Double
out_table
(可选)

包含已填充(估算)值的输出表。

如果提供了相关表,则输出表为必填项。

Table
append_to_input
(可选)

指定是将已填充值的字段追加到输入数据还是使用已填充值的字段创建新的输出要素类或表。 如果您追加字段,则不能提供相关表,且将忽略输出坐标系环境。

  • APPEND_TO_INPUT包含填充值的字段将被追加到输入数据。 此选项会修改输入数据。
  • NEW_FEATURES将创建包含已填充值的字段的输出要素类或表。 这是默认设置。
Boolean

派生输出

名称说明数据类型
updated_features

包含已填充值的字段的更新后的输入要素或表。

Feature Layer, Table View

代码示例

FillMissingValues 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用 FillMissingValues 函数。

import arcpy
arcpy.env.workspace = r"C:\STPM\Chicago.gdb"
arcpy.stpm.FillMissingValues("Chicago_Data", "Chicago_Filled", "COUNT", "AVERAGE",
                             "K_NEAREST_NEIGHBORS", "", "", "", 8)
FillMissingValues 示例 2(独立脚本)

以下独立 Python 脚本演示了如何使用 FillMissingValues 函数。

# Fill missing values using a feature set and related table
# Use the results to create a space-time cube from defined locations
# Run Emerging Hot Spot Analysis on the data
# Visualize the results in 3d

# Import system modules
import arcpy

# Set overwriteOutput property to overwrite existing output, by default
arcpy.env.overwriteOutput = True

# Local variables ...
arcpy.env.workspace = r"C:\STPM\Chicago.gdb"

try:
    # Fill missing values in a feature class containing block group polygon 
    # shapes and a related table containing the incidents. Since some of the 
    # values are missing, you will fill them using the temporal trend method.
    arcpy.stpm.FillMissingValues(
            "Chicago_Feature", "Chicago_FilledFeature", "COUNT", 
            "TEMPORAL_TREND", "", "", NoneNone, "TIME", "", "MYID", 
            "Chicago_Table", "MYID", "", "", "", "Chicago_FilledTable")

    # Create a defined location space-time cube using a related table. Using a 
    # reference time at the start of the month to force binning fall on month 
    # breaks. Using temporal aggregation to sum multiple entries into one month.
    # Using the method drop location if missing values since you already filled 
    # using Fill Missing Values.
    arcpy.stpm.CreateSpaceTimeCubeDefinedLocations(
            "Chicago_FilledFeature", r"C:\STPM\Chicago_Cube.nc", "MYID",
            "APPLY_TEMPORAL_AGGREGATION", "TIME", "1 Months", "REFERENCE_TIME", 
            "10/1/2015", "", "COUNT SUM DROP_LOCATIONS", "Chicago_FilledTable",
            "MYID")

    # Run an emerging hot spot analysis on the defined locations cube. Using 
    # contiguity edges so only block groups that bound each other are considered 
    # neighbors.
    arcpy.stpm.EmergingHotSpotAnalysis(
            r"C:\STPM\Chicago_Cube.nc", "COUNT_SUM_NONE", 
            "Chicago_Cube_EmergingHotSpot", "", 1, "", "CONTIGUITY_EDGES_ONLY")

    # Use Visualize Cube in 3d to see the hot spot results for each time slice
    arcpy.stpm.VisualizeSpaceTimeCube3D(
            r"C:\STPM\Chicago_Cube.nc", "COUNT_SUM_NONE", 
            "HOT_AND_COLD_SPOT_RESULTS", "Chicago_Cube_Visualize3d")

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