4. 轨道几何数据描述性统计

轨道检测车每跑一趟,就会产生成千上万条轨道几何记录。面对这样一张表,我们首先需要回答的不是“哪一段有问题”,而是“整体处于什么水平、波动有多大、极端值出现在哪里”。描述性统计正是完成这一判断的第一道工序。本节围绕轨道高低、轨向、轨距三类核心几何指标,讲清均值、标准差、分位数的含义与计算方式,并用 pandas 完成分组统计。

一、先明确指标与符号约定

轨道几何检测中常见的三个指标是:轨道高低(沿线路纵向的垂向不平顺)、轨向(横向不平顺)、轨距(左右两根钢轨内侧工作面之间的距离)。检测数据通常以里程为索引,每个采样点给出各指标相对基准的偏差值。这里需要先约定方向:高低以向上为正、向下为负;轨向以线路前进方向左侧为正、右侧为负;轨距以设计轨距为基准,实测大于设计值为正(轨距扩大),小于为负(轨距缩小)。全文与图示均采用这一约定,后续章节不再重复说明。

需要强调的是,均值反映的是系统性偏移,标准差反映的是离散程度,分位数反映的是分布形态与极端程度。三者组合起来,才能判断一段轨道是“整体偏移”还是“局部突变”。

二、均值、标准差与分位数的计算逻辑

设某区段共有 n 个采样点,指标值为 x₁…xₙ。均值 x̄ = Σxᵢ / n,它告诉我们该区段整体偏向哪一侧。标准差 s = √(Σ(xᵢ − x̄)² / (n − 1)),样本标准差用 n−1 作分母,这是 pandas 的默认行为。标准差越大,说明轨道几何越不平顺、波动越剧烈。

分位数则把数据按大小排序后切分。以 95% 分位数为例,它表示有 95% 的采样点数值不超过该值,因此常被用来刻画“绝大多数情况下的最不利水平”,比最大值更稳健,不易被个别异常点带偏。工程上常关注 P50(中位数)、P95、P99 三个位置:P50 看典型水平,P95 看常见不利值,P99 看接近极端的水平。

分位数对异常值不敏感,而均值会被极端值明显拉动。当均值与中位数差距较大时,往往提示数据中存在偏斜或异常点,值得进一步排查。

三、用 pandas 完成基础统计

假设检测数据已读入 DataFrame df,包含 mileage(里程)、section(区段)、level(高低)、alignment(轨向)、gauge(轨距)等列。最直接的方式是调用 describe():

import pandas as pd

cols = ["level", "alignment", "gauge"]
stats = df[cols].describe(percentiles=[0.5, 0.95, 0.99])
print(stats)

describe() 默认输出 count、mean、std、min、25%、50%、75%、max,加上 percentiles 参数后可补充 95%、99% 分位。若只需单项指标,也可分别调用 df["level"].mean()、df["level"].std()、df["level"].quantile(0.95)。需要注意 std() 默认 ddof=1,即样本标准差;若要与总体标准差口径一致,应显式设置 ddof=0。

四、分组统计:按区段与里程段对比

全线一个均值意义有限,真正有用的是分段对比。用 groupby 按区段聚合,可以一次得到各段的均值、标准差与分位数:

g = df.groupby("section")["level"]
summary = pd.DataFrame({
    "均值": g.mean(),
    "标准差": g.std(),
    "P95": g.quantile(0.95),
    "样本数": g.count()
})
print(summary.sort_values("P95", ascending=False))

若希望一次对多个指标做同样的聚合,可用 agg 配合命名聚合:

result = df.groupby("section").agg(
    高低均值=("level", "mean"),
    高低标准差=("level", "std"),
    轨向P95=("alignment", lambda s: s.quantile(0.95)),
    轨距均值=("gauge", "mean"),
)

按里程分段统计时,可先用 pd.cut 把连续里程切成等长区间,再对区间分组,这样能看出不平顺沿线路的分布趋势,而不是只得到一个全线平均值。

五、结果如何判读

拿到统计表后,建议按以下顺序观察:先看样本数,样本过少的区段统计量不可靠;再看均值,判断是否存在整体偏移;接着看标准差与 P95,标准差大且 P95 明显高于均值的区段,说明存在局部大值;最后比较均值与中位数,差距大提示分布偏斜或有异常点。下图展示了从原始检测数据到分组统计、再到判读结论的完整数据流。

轨道几何描述性统计的数据流与判读 检测原始数据 mileage 里程 section 区段 level / alignment / gauge 描述性统计量 均值 x̄:整体偏移 标准差 s:离散程度 P50 / P95 / P99:分布形态 count:样本有效性 pandas 分组统计 groupby("section") agg 命名聚合 pd.cut 里程分段 quantile(0.95) 结果判读逻辑 ① 样本数过少 → 统计量不可靠 ② 均值偏离 0 → 存在系统性偏移 ③ 标准差大且 P95 远高于均值 → 局部大值 ④ 均值与中位数差距大 → 分布偏斜或异常点 输出与后续动作 · 各区段统计汇总表(按 P95 降序) · 标记高离散、高 P95 的重点区段 · 为后续波形分析与超限判定提供依据 符号约定:高低向上为正、向下为负;轨向线路前进方向左侧为正、右侧为负; 轨距以设计轨距为基准,实测大于设计为正、小于为负。标准差默认 ddof=1(样本标准差)。

以上流程中,统计量只是中间产物,最终要落到“哪些区段需要重点关注”这一结论上。例如某区段高低均值接近 0,但 P95 明显偏高、标准差也大,说明该段没有整体抬升或下沉,却存在局部不平顺,应结合里程定位具体位置再做波形分析。反之,若均值本身偏离较大而标准差较小,则更可能是整体基准偏移,需要检查测量基准或线路设计标高。

六、实操中的几个注意点

  • 缺失值处理:pandas 的 mean()、std() 默认跳过 NaN,但 count() 只统计非空值,务必核对样本数是否与预期一致。
  • 单位统一:高低、轨向常以毫米计,轨距同样以毫米计,统计前确认各列单位一致,避免混算。
  • 分组粒度:区段划分应与线路管理单元一致,否则统计结果难以与现场台账对应。
  • 分位数选择:P95 适合日常评价,P99 更适合关注极端不利情况,二者不宜混用比较。

掌握这一节的方法后,你就拥有了对轨道几何数据“先看全局、再找重点”的基本能力,后续的波形分析、超限判定和趋势对比都将建立在这些统计量之上。