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 明显高于均值的区段,说明存在局部大值;最后比较均值与中位数,差距大提示分布偏斜或有异常点。下图展示了从原始检测数据到分组统计、再到判读结论的完整数据流。
以上流程中,统计量只是中间产物,最终要落到“哪些区段需要重点关注”这一结论上。例如某区段高低均值接近 0,但 P95 明显偏高、标准差也大,说明该段没有整体抬升或下沉,却存在局部不平顺,应结合里程定位具体位置再做波形分析。反之,若均值本身偏离较大而标准差较小,则更可能是整体基准偏移,需要检查测量基准或线路设计标高。
六、实操中的几个注意点
- 缺失值处理:pandas 的
mean()、std()默认跳过 NaN,但count()只统计非空值,务必核对样本数是否与预期一致。 - 单位统一:高低、轨向常以毫米计,轨距同样以毫米计,统计前确认各列单位一致,避免混算。
- 分组粒度:区段划分应与线路管理单元一致,否则统计结果难以与现场台账对应。
- 分位数选择:P95 适合日常评价,P99 更适合关注极端不利情况,二者不宜混用比较。
掌握这一节的方法后,你就拥有了对轨道几何数据“先看全局、再找重点”的基本能力,后续的波形分析、超限判定和趋势对比都将建立在这些统计量之上。