4. 原始水位数据的结构解析与质量初检
在正式开展异常筛查之前,必须先弄清楚手里这批原始水位数据“长什么样”。水文观测孔的水位监测通常由自动水位计(压力式、浮子式或雷达式)按固定采样间隔记录,导出后往往是一张包含多列字段的表格或一段文本日志。如果对字段含义、单位、时间基准和记录粒度没有统一认识,后续的阈值判断、突变识别和趋势分析都会建立在错误的前提上。本节的任务是把原始数据结构拆解清楚,并对完整性、重复性和时间对齐做第一轮体检。
字段含义:每一列代表什么
一份典型的观测孔原始水位记录,至少包含以下几类字段。第一类是标识字段,即孔号(如“ZK03”“观测孔-7”),用于区分不同监测孔;同一文件可能混装多孔数据,也可能一孔一文件,这直接决定了后续分组方式。第二类是时间字段,即时间戳,记录采样时刻,需明确它是采集时刻还是整点时刻、是北京时间还是 UTC、是否含时区偏移。第三类是水位值字段,通常以“水位埋深(m)”或“水位标高(m)”表示,两者含义相反:埋深是从孔口向下量到水面的距离,数值越大水位越低;标高是水面相对于统一基准面的高程,数值越大水位越高。第四类是孔口/基准信息,如孔口高程、基准点高程、埋深起算面,用于在埋深与标高之间换算。此外还可能有传感器编号、电池电压、温度、信号强度等辅助字段。
这里必须强调参照约定:本课程统一以水位埋深作为主分析量,单位为米(m),埋深增大表示水位下降。若原始数据给的是标高,需先用“埋深 = 孔口高程 − 水位标高”换算后再进入筛查流程,且全文与图示保持这一约定。单位也要逐一核对,有的设备导出为毫米或厘米,有的为米,混用会造成数量级错误。
完整性检查:先看“有没有缺”
完整性关注的是记录是否按预期采样间隔连续存在。做法是先确定标称采样间隔(例如 1 小时),再对每个孔的时间序列计算相邻时间戳之差。若差值等于标称间隔,说明连续;若差值大于标称间隔,说明中间存在缺测,缺测条数约为“差值 ÷ 间隔 − 1”。例如某孔 08:00 之后直接跳到 11:00,间隔为 3 小时,按 1 小时采样则缺 2 条。同时要统计水位值字段的空值、空字符串、占位符(如“—”“NaN”“-9999”)。需要提醒的是,-9999 这类值常被设备用作缺测标记,若不识别就会被当成真实埋深参与统计,造成极端异常。完整性检查的输出应是一张按孔汇总的表:总记录数、应有记录数、缺失条数、缺失时段、空值条数。
重复性检查:同一条记录是否出现多次
重复记录常见于设备补传、导出脚本重复执行或人工合并文件。判断标准是“同孔号 + 同时间戳”是否出现多条。若重复行的水位值完全一致,可直接去重保留一条;若同一时间戳对应不同水位值,则属于冲突记录,不能简单去重,需要结合设备日志、相邻时刻趋势判断哪一条可信,或标记为待核实。实操中可用分组计数快速定位:按孔号和时间戳分组,计数大于 1 的即为疑似重复。去重后必须重新核对总记录数变化,避免误删不同孔在同一时刻的正常记录。
时间对齐检查:时间轴是否可信
时间对齐包含三层含义。其一是时区与格式统一:确认所有时间戳采用同一时区、同一格式(如“YYYY-MM-DD HH:mm”),避免字符串排序与真实时间顺序不一致。其二是采样时刻规整:检查时间戳是否落在整点或标称时刻上,若出现 08:03、09:07 这类漂移,说明设备时钟未校准或存在采集延迟,需评估是否影响小时均值计算。其三是跨孔基准一致:多孔对比分析时,各孔时间基准必须一致,否则同一时刻的水位响应无法比较。对漂移明显的数据,可记录偏移量并在分析前做时间重采样或标注。
一份可直接使用的初检记录表
把上述三类检查落到一张表上,便于逐孔填写和交接。下表字段与本节检查项一一对应,可作为初检成果直接使用(表中数值为示例,非实测)。
| 孔号 | 记录总数 | 缺失条数 | 空值/占位符 | 重复条数 | 时间漂移 | 初检结论 |
|---|---|---|---|---|---|---|
| ZK03 | 720 | 2(05-01 09:00 前后) | 1(“—”) | 1(08:00 重复) | 无 | 需修补 |
| ZK07 | 718 | 0 | 0 | 0 | 整点偏移约 3 min | 可用(标注漂移) |
| ZK11 | 540 | 180(连续缺测) | 0 | 0 | 无 | 退回核查设备 |
完成这三项初检后,数据才具备进入异常识别环节的基本条件。需要牢记:完整性决定样本是否代表真实过程,重复性决定统计是否被放大,时间对齐决定多孔与多时刻比较是否成立。三者中任何一项未处理干净,后续的突变、越限、趋势判断都可能把数据问题误判为水文异常,或把真实异常淹没在噪声里。