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

描述

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

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

插图

填充缺失值工具图示

使用方法

  • 输入要素可以是点或面。

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

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

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

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

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

  • 位置 ID 是一个整型字段,应表示唯一的静态位置。位置 ID 的 X,Y 坐标不应随时间变化。

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

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

  • 根据时间趋势填充缺失值的选项仅在指定位置 ID 时可用。时间字段也为必填字段。

  • 使用时间趋势填充值时,待填充的空值在其之前必须至少具有两个包含值的时间段,而在其之后必须至少具有两个包含值的时间段,才能进行填充。由于这项要求,前两个或最后两个时间步长中存在的空值将始终无法使用时间趋势填充。

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

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

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

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

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

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

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

语法

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})
参数说明数据类型
in_features

包含要填充的空值的要素类。

Feature Layer
out_features

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

如果指定 related_table,则 out_features 将包含每个位置的估算值数,而 out_table 将包含已填充(估算)值。

Feature Class
fields_to_fill
[fields_to_fill,...]

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

Field
fill_method

要应用的计算类型。TEMPORAL_TREND 仅在指定 location_idtime_field 时可用。

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

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

Linear Unit
temporal_neighborhood
(可选)

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

Time Unit
time_field
(可选)

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

如果已提供 location_id,则此字段为必填字段。

Field
number_of_spatial_neighbors
(可选)

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

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

Long
location_id
(可选)

包含每个位置的唯一 ID 编号的整型字段。

location_id 用于将 in_features 中的要素与 related_table 中的行进行匹配,或指定用于确定时间邻域的唯一位置 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>。对于 shapefile 输入,空占位符的数值为必填项。

Double
out_table
(可选)

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

如果在相关表中输入了内容,则输出表为必填项。

Table

代码示例

FillMissingValues 示例 1(Python 窗口)

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

import arcpy
arcpy.env.workspace = r"C:\STPM\Chicago.gdb"
arcpy.FillMissingValues_stpm("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 geoprocessor object 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 we will fill them using the temporal trend method.
    arcpy.FillMissingValues_stpm("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 we already filled using Fill Missing Values
    arcpy.CreateSpaceTimeCubeDefinedLocations_stpm("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 which bound each other are considered neighbours
    arcpy.EmergingHotSpotAnalysis_stpm(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.VisualizeSpaceTimeCube3D_stpm(r"C:\STPM\Chicago_Cube.nc", "COUNT_SUM_NONE", "HOT_AND_COLD_SPOT_RESULTS",
                                        "Chicago_Cube_Visualize3d")
except arcpy.ExecuteError:
    # If any error occurred when running the tool, print the messages
    print(arcpy.GetMessages())

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题