要約統計量 (Summary Statistics) (解析)

概要

テーブル内のフィールドの要約統計量を求めます。

使用法

  • [出力テーブル] は、統計演算の結果を含むフィールドで構成されます。

  • このツールで実行できる統計演算は、合計値、平均値、最大値、最小値、範囲、標準偏差、データ数、最初のレコード、最後のレコード、平均値、分散、および個別値です。

  • 次の命名規則を使用して、各統計情報タイプのフィールドが作成されます。SUM_<field>MEAN_<field>MIN_<field>MAX_<field>RANGE_<field>STD_<field>COUNT_<field>FIRST_<field>LAST_<field>MEDIAN_<field>VARIANCE_<field>、および UNIQUE_<field> (ここで、<field> は、統計情報が計算される入力フィールドの名前です)。出力テーブルが dBASE である場合、フィールド名は 10 文字に切詰められます。

  • [ケース フィールド] が指定されている場合、統計値は一意の属性情報ごとに個別に計算されます。[ケース フィールド] が指定されない場合は、[出力テーブル] にはレコードが 1 つだけ含まれます。指定されている場合は [ケース フィールド] の値ごとに 1 つのレコードが示されます。

  • すべての統計情報計算から NULL 値が除外されます。たとえば、10、5、および NULL 値の平均は 7.5 です ((10+5)/2)。

  • レイヤーを使用する場合、統計情報の計算には現在選択されているフィーチャだけが使用されます。

構文

arcpy.analysis.Statistics(in_table, out_table, {statistics_fields}, {case_field})
パラメーター説明データ タイプ
in_table

統計情報の計算に使用するフィールドを含む入力テーブル。

Table View; Raster Layer
out_table

計算された統計情報を格納する出力テーブル。

Table
statistics_fields
[[field, {statistic_type}],...]
(オプション)

属性値を含み、特定の統計情報の計算に使用される数値フィールドを指定します。複数の統計情報とフィールドの組み合わせを指定できます。すべての統計情報計算から NULL 値が除外されます。

テキスト属性フィールドは、最初と最後の統計情報を使用して集計されます。数値属性フィールドは、任意の統計情報を使用して集計されます。

使用できる統計情報タイプは次のとおりです。

  • 合計値 - 指定されたフィールドの値の合計を追加します。
  • 平均値 - 指定されたフィールドの平均を計算します。
  • 最小値 - 指定されたフィールドのすべてのレコードの中で最も小さい値を検出します。
  • 最大値 - 指定されたフィールドのすべてのレコードの中で最も大きい値を検出します。
  • 範囲 - 指定されたフィールドの値の範囲 (最大値 - 最小値) を検出します。
  • 標準偏差 - 指定されたフィールドの値の標準偏差を検出します。
  • 個数 - 統計情報の計算に含まれる値の数を検出します。NULL 値以外の値の数がカウントされます。フィールド内の NULL 値の数を調べるには、対象となるフィールドに対するカウントを作成し、NULL 値を含まない別のフィールド (OID など) に対するカウントを作成して、この 2 つの値の差を求めます。
  • 最初 - 入力の最初のレコードを検出し、その指定されたフィールドの値を使用します。
  • 最後 - 入力の最後のレコードを検出し、その指定されたフィールドの値を使用します。
  • 中央値 - 指定されたフィールドのすべてのレコードの中央値を計算します。
  • 分散 - 指定されたフィールドのすべてのレコードの分散を計算します。
  • 個別値 - 指定されたフィールドの個別値の数を数えます。
Value Table
case_field
[case_field,...]
(オプション)

一意の属性値 (または、複数フィールドが指定された場合には属性値の組み合わせ) ごとに、統計情報を個別に計算するために使用される、入力のフィールド (1 つまたは複数)。

Field

コードのサンプル

Statistics (統計情報) の例 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、イミディエイト モードで Statistics ツールを使用する方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
arcpy.Statistics_analysis("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"]]
# Execute Buffer to get a buffer of major roads
arcpy.Buffer_analysis(inRoads, outBuffer, bufferDistance, dissolve_option="ALL")
# Execute Clip using the buffer output to get a clipped feature class of 
# vegetation
arcpy.Clip_analysis(inVegetation, outBuffer, outClip)
# Execute JoinField to add the vegetation type
arcpy.JoinField_management(outClip, joinField, joinTable, joinField, joinedField)
# Execute Statistics to get the area of each vegetation type within the 
# clipped buffer.
arcpy.Statistics_analysis(outClip, outStatsTable, statsFields, joinedField)
Statistics (統計情報) の例 3 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトは、データセットの属性フィールドをループ処理して、statistics_fields パラメーターを作成し、その結果、SUM 統計情報が各数値フィールドで計算されます。

# Description: Script that runs the Summary Statistic 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):
    # Just 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 the Summary Statistics tool with the stats list
arcpy.Statistics_analysis(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.Statistics_analysis(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: はい

関連トピック