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

摘要

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

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

插图

填充缺失值工具插图

使用情况

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

  • 对于输入要素,缺失值可以使用空间邻域、时空领域或时间序列值。 缺失值可能位于输入要素或相关表中。 对于独立表,缺失值可以使用输入字段的全局统计数据或时间序列值进行估计。 由于独立表不含空间信息,因此无法为表定义空间邻域。

  • 对于要填充的字段参数的每个字段,输出将包含三个字段。 第一个字段包含原始值和填充值,第二个字段包含指示已对值进行估算的指示符。 估算字段将保留其原始字段名称,但系统将使用以下命名约定创建字段别名:<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 值的时间序列中存储的值数量(例如,如果仅缺少时间序列中的一个值,则将报告数据集中的时间步数减一)。 如果您正在使用空间关系的概念化参数值 K 最近邻时间邻域值,则报告的邻域数将包含要素位于指定时间窗内的 k 邻域。

  • 空值参数表示空值(缺失值)。 可以不同的方式使用此参数,具体取决于输入和输出格式。

    • 对于地理数据库要素类或表,如果未提供空值参数值,<Null> 视为空值(缺失值)。 如果提供了值,则将在工具输出中估计该值和 <Null> 值。
    • 对于 shapefile 和 dBASE 表,空值参数为必填参数。 必须提供表示输入数据中的空值或缺失值(例如 -9999)的值。
    • 如果输入为文件地理数据库要素类或表并且输出为 shapefile 或 dBASE 表,则需要此参数才能指定无法估计的缺失值在工具输出中的表示方式。

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

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

参数

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

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

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

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
空值
(可选)

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

Double
输出表
(可选)

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

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

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

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

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

Boolean

派生输出

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

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

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 参数值,则相关表中将包含要填充的空值。 输入要素将与相关表中的行相匹配,以指定时空邻域。

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

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

Double
out_table
(可选)

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

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

Table
append_to_input
(可选)

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

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

派生输出

名称说明数据类型
updated_features

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

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