汇总统计数据 (分析)

摘要

为表中字段计算汇总统计数据。

使用情况

  • 输出表参数值将由包含统计运算结果的字段组成。

  • 使用此工具可执行以下统计运算:总和、平均值、最小值、最大值、范围、标准差、计数、第一个、最后一个、中值、方差、唯一值和串连。

  • 将使用以下命名约定为每种统计类型创建字段:SUM_<field>MEAN_<field>MIN_<field>MAX_<field>RANGE_<field>STD_<field>COUNT_<field>FIRST_<field>LAST_<field>MEDIAN_<field>VARIANCE_<field>UNIQUE_<field>CONCATENATE_<field>(其中 <field> 是计算统计数据的输入字段的名称)。 当输出表是 dBASE 表时,字段名称会被截断为 10 个字符。

  • 如果已指定了案例分组字段参数值,则系统会单独为每个唯一属性值计算统计数据,并且每个唯一的案例分组字段值均有一条对应的记录。 如果未指定案例分组字段参数值,则输出表参数值中将仅包含一条记录。

  • 空值将被排除在所有统计计算之外。 例如,10、5 和空值的平均值为 7.5 ((10+5)/2)。

  • 使用图层时,仅使用当前所选要素计算统计数据。

参数

标注说明数据类型
输入表

包含用于计算统计数据的字段的输入表。

Table View; Raster Layer
输出表

输出表用于存储计算的统计数据。

Table
统计数据字段

指定包含将用于计算指定统计数据的属性值的一个或多个字段。 可以指定多项统计和字段组合。 空值将被排除在所有计算之外。

可使用第一种和最后一种统计来对文本属性字段进行汇总。 可使用任何一种统计来对数值属性字段进行汇总。 日期、仅日期和时间戳偏移属性字段只能使用平均值、最小值、最大值、计数、第一个、最后一个、唯一和串连统计数据进行汇总。

可用统计类型如下:

  • 总和 - 将指定字段的值相加在一起。
  • 平均值 - 将计算指定字段的平均值。
  • 最小值 - 将标识指定字段所有记录的最小值。
  • 最大值 - 将标识指定字段所有记录的最大值。
  • 范围 - 将计算指定字段的值范围(最大值 - 最小值)。
  • 标准差 - 将计算指定字段值的标准差。
  • 计数 - 将标识计算中包括的值的数目。 计数包括除空值外的所有值。 要确定字段中的空值数,请在相应字段上创建计数,然后在另一个不包含空值的字段上创建计数(例如 OID,如果存在的话),然后将这两个值相减。
  • 第一个 - 将使用输入中第一条记录的指定字段值。
  • 最后一个 - 将使用输入中最后一条记录的指定字段值。
  • 中值 - 将计算指定字段所有记录的中值。
  • 方差 - 将计算指定字段所有记录的方差。
  • 唯一值 - 将计算指定字段的唯一值数量。
  • 串连 - 指定字段的值将被串连。 可以使用串连分隔符参数分隔这些值。
Value Table
案例分组字段
(可选)

“输入”中将用于为每个唯一属性值(如果指定多个字段,则为属性值组合)单独计算统计数据的一个或多个字段。

Field
串连分隔符
(可选)

串连选项用于统计数据字段参数时,将用于串连值的一个或多个字符。 默认情况下,该工具将连接不带分隔符的值。

String

arcpy.analysis.Statistics(in_table, out_table, statistics_fields, {case_field}, {concatenation_separator})
名称说明数据类型
in_table

包含用于计算统计数据的字段的输入表。

Table View; Raster Layer
out_table

输出表用于存储计算的统计数据。

Table
statistics_fields
[[field, {statistic_type}],...]

指定包含将用于计算指定统计数据的属性值的一个或多个字段。 可以指定多项统计和字段组合。 空值将被排除在所有计算之外。

可使用第一种和最后一种统计来对文本属性字段进行汇总。 可使用任何一种统计来对数值属性字段进行汇总。 日期、仅日期和时间戳偏移属性字段只能使用平均值、最小值、最大值、计数、第一个、最后一个、唯一和串连统计数据进行汇总。

可用统计类型如下:

  • SUM - 将指定字段的值相加在一起。
  • MEAN - 将计算指定字段的平均值。
  • MIN - 将标识指定字段所有记录的最小值。
  • MAX - 将标识指定字段所有记录的最大值。
  • RANGE - 将计算指定字段的值范围(最大值 - 最小值)。
  • STD - 将计算指定字段值的标准差。
  • COUNT - 将标识计算中包括的值的数目。 计数包括除空值外的所有值。 要确定字段中的空值数,请在相应字段上创建计数,然后在另一个不包含空值的字段上创建计数(例如 OID,如果存在的话),然后将这两个值相减。
  • FIRST - 将使用输入中第一条记录的指定字段值。
  • LAST - 将使用输入中最后一条记录的指定字段值。
  • MEDIAN - 将计算指定字段所有记录的中值。
  • VARIANCE - 将计算指定字段所有记录的方差。
  • UNIQUE - 将计算指定字段的唯一值数量。
  • CONCATENATE - 指定字段的值将被串连。 可以使用 concatenation_separator 参数分隔这些值。
Value Table
case_field
[case_field,...]
(可选)

“输入”中将用于为每个唯一属性值(如果指定多个字段,则为属性值组合)单独计算统计数据的一个或多个字段。

Field
concatenation_separator
(可选)

CONCATENATION 选项用于 statistics_fields 参数时,将用于串连值的一个或多个字符。 默认情况下,该工具将连接不带分隔符的值。

String

代码示例

Statistics 示例(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 Statistics 函数。

import arcpy
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
arcpy.analysis.Statistics("futrds", "C:/output/output.gdb/stats", [["Shape_Length", "SUM"]], "NM")
Statistics 示例 2(独立脚本)

以下独立脚本汇总了主要道路 150 英尺范围内的植被区域。

# Description: Summarize the vegetation by area within 150 feet of major roads

# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data"

# Set local variables
inRoads = "majorrds.shp"
outBuffer = "C:/output/output.gdb/buffer_out"
bufferDistance = "250 feet"
inVegetation = "Habitat_Analysis.gdb/vegtype"
outClip = "C:/output/output.gdb/clip_out"
joinField = "HOLLAND95"
joinTable = "c:/data/vegtable.dbf"
joinedField = "HABITAT"
outStatsTable = "C:/output/output.gdb/stats_out"
statsFields = [["Shape_Area", "SUM"]]

# Run Buffer to get a buffer of major roads
arcpy.analysis.Buffer(inRoads, outBuffer, bufferDistance, dissolve_option="ALL")

# Run Clip using the buffer output to get a clipped feature class of 
# vegetation
arcpy.analysis.Clip(inVegetation, outBuffer, outClip)

# Run JoinField to add the vegetation type
arcpy.management.JoinField(outClip, joinField, joinTable, joinField, joinedField)

# Run Statistics to get the area of each vegetation type within the 
# clipped buffer.
arcpy.analysis.Statistics(outClip, outStatsTable, statsFields, joinedField)
Statistics 示例 3(独立脚本)

以下独立脚本循环遍历数据集的属性字段并构造 statistics_fields 参数,从而计算各个数值字段的 SUM 统计量。


# Description: Script that runs the Summary Statistics tool to calculate the
#              Sum statistic for every numeric field based on a unique case 
#              field.

# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data/f.gdb"

# Set local variables
intable = "intable"
outtable = "sumstats"
casefield = "Name"
stats = []

# Loop through all fields in the Input Table
for field in arcpy.ListFields(intable):

    # Find the fields that have a numeric type
    if field.type in ("Double", "Integer", "Single", "SmallInteger"):
        # Add the field name and Sum statistic type to the list of fields to 
        # summarize
        stats.append([field.name, "Sum"])
# Correct formatting of stats [["Field1", "Sum"], ["Field2", "Sum"], ...]

# Run Statistics with the stats list
arcpy.analysis.Statistics(intable, outtable, stats, casefield)
Statistics 示例 4(独立脚本)

以下脚本使用 pandas DataFrame 来访问和显示 Statistics 函数的表格结果。

import arcpy
import pandas
import os

arcpy.env.overwriteOutput = True

in_table = r"d:\data\states.shp"
out_table = r"in_memory\stats_table"
stat_fields = [['POP1990', 'SUM'], ['POP1997', 'SUM']]

stats = arcpy.analysis.Statistics(in_table, out_table, stat_fields,
                                  case_field='SUB_REGION')

# Get a list of field names to display
field_names = [i.name for i in arcpy.ListFields(out_table) if i.type != 'OID']

# Open a cursor to extract results from stats table
cursor = arcpy.da.SearchCursor(out_table, field_names)

# Create a pandas DataFrame to display results
df = pandas.DataFrame(data=[row for row in cursor],
                      columns=field_names)

print(df)

环境

特殊情况

时区

时间戳偏移字段上的平均统计类型将使用此环境中的时区偏移。

许可信息

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

相关主题