# 使用 summary 函数生成大规模数据统计信息 - [业务场景](#业务场景) - [函数简介](#函数简介) - [语法](#语法) - [参数介绍](#参数介绍) - [使用示例](#使用示例) - [生成内存表统计信息](#生成内存表统计信息) - [生成 DFS 表统计信息](#生成-dfs-表统计信息) - [使用 SQL 语句作为输入数据源](#使用-sql-语句作为输入数据源) - [大规模数据计算](#大规模数据计算) - [与 Python 性能对比](#与-python-性能对比) - [对比结果](#对比结果) - [实现原理](#实现原理) - [min、max、count、avg、std 计算](#minmaxcountavgstd-计算) - [百分位计算](#百分位计算) - [小结](#小结) - [附件](#附件) ## 业务场景 对数据集深入分析前,可以通过 `summary` 函数快速了解数值型列的概括信息,例如,平均值、标准差、最小值、最大值和百分位数,这有助于初步了解数据的分布情况和特征。在探索性数据分析(EDA)过程中,`summary` 函数有助于识别异常值、离群值和数据分析的偏态。通过观察统计信息,可以进一步决定数据清洗和数据转换的策略。例如,如果某个数值型列的最大值或最小值远离其平均值,则可能存在异常值或离群值;如果某个数值型列的标准差较大,则表示可能存在数据分布的偏态。 ## 函数简介 ### 语法 ``` summary(X,[interpolation='linear'],[characteristic=`avg`std],[percentile=[25,50,75]],[precision=0.01],[partitionSampling=1.0]) ``` ### 参数介绍 - **X**:内存表、DFS 表或由 `sqlDS` 函数生成的数据源。 - **interpolation**:计算百分位采用的插值方法,可选:linear、nearest、lower、higher、midpoint。 - **characteristic**:需要输出的统计特征,可选:avg 和 std。 - **percentile**:需要输出的百分位数。 - **precision**:百分位计算精度。 - **partitionSampling**:针对分区表设计的参数,表示参与进行数据统计的分区数量。 有关 `summary` 函数的用法、示例及注意事项,参考 DolphinDB 用户手册中该函数的详细介绍。 ## 使用示例 ### 生成内存表统计信息 ``` n=2022 data=1..2022 value=take(1..3,n) name=take(`APPLE`IBM`INTEL,n) t=table(data,value,name); res = summary(t, precision=0.001); ``` ### 生成 DFS 表统计信息 ``` db = database(dbName,VALUE,`A`B`C`D) ... pt = loadTable(dbName, tableName) // 生成 DFS 表统计信息,同时指定分区采样率为 0.5 re = summary(pt,`linear,`avg`std, [25,50], 0.001, 0.5) ``` 示例中的 DFS 表采用值分区方式,拥有 A、B、C和 D 共 4 个分区。分区采样率为 0.5,结果将随机输出 2 个分区的数据统计信息。 ### 使用 SQL 语句作为输入数据源 ``` ds = sqlDS(