3. 监测数据获取与数据字典构建

COD与氨氮的变化趋势分析,前提是拿到一条“可比、可拼接、可追溯”的时间序列。实际工作中,数据往往来自三个互不相同的渠道:在线自动监测设备、人工采样实验室分析、以及历史台账(纸质记录、Excel报表、旧系统导出)。这三类数据在采样频率、单位、精度、时间戳含义上都不一致,如果直接混在一起画趋势线,很容易得出错误结论。本节的任务,就是把“取数”和“定义字段”这两件事做扎实。

三类数据源的获取方式与特点

在线监测数据通常由COD在线分析仪、氨氮在线分析仪按固定周期(常见为每2小时、每4小时或每日)自动测量并上传。获取方式一般是登录平台导出CSV,或通过数采仪/平台接口按时间段拉取。这类数据量大、连续性好,但要注意三个细节:一是时间戳记录的是“采样时刻”还是“分析完成时刻”,两者可能相差几十分钟;二是设备存在校准、维护、试剂更换导致的停机时段,这些时段往往以空值或异常值出现;三是部分平台对超标值做了标记但未在导出文件中保留,需要单独核对。

手工采样数据由人员现场取样后送实验室,按国标方法(如COD重铬酸盐法、氨氮纳氏试剂分光光度法)分析。它的频率低(可能每周一次或每月数次),但准确度高,常作为在线数据的比对基准。获取时要保留采样时间、采样点位、分析方法、检出限和检测结果,尤其是“采样时间”与“分析时间”必须分开记录,否则无法与在线数据对齐。

历史台账是最容易被忽视的部分。早期数据可能是纸质报表或人工录入的Excel,字段名不统一(“COD”“CODcr”“化学需氧量”混用),单位可能是mg/L也可能是ppm,缺失值可能写成“—”“/”“未测”或直接留空。获取这类数据时,第一步不是急着导入,而是先做字段盘点和单位核查。

数据字典:让每个字段都有明确含义

数据字典的本质是一份“字段契约”,它规定每个字段叫什么、代表什么、用什么单位、允许什么取值、缺失时怎么标记。没有这份契约,不同来源的数据合并后就会出现“同一列里既有mg/L又有ppm”“空值既表示停机又表示未采样”的混乱。下面给出一个面向COD与氨氮时间序列的最小可用数据字典示例,字段设计直接对应后续趋势分析与关联分析的需要。

字段名 含义 类型/单位 取值与缺失规则
record_id 记录唯一标识 字符串 不可为空,建议“来源缩写+日期+序号”
station_id 监测点位编码 字符串 不可为空,与点位台账一致
sample_time 采样时刻(数据归属时间) 日期时间,精确到分钟 不可为空,统一为北京时间
data_source 数据来源 枚举 ONLINE / MANUAL / LEDGER,不可为空
cod_value COD测定值 数值,mg/L 缺失记为空并配合flag,不得填0
nh3n_value 氨氮测定值 数值,mg/L 同上
value_flag 数据质量标记 枚举 N正常 / M缺失 / C校准维护 / O超标 / S可疑
method 分析方法 字符串 在线填仪器方法,手工填国标方法编号
detect_limit 检出限 数值,mg/L 低于检出限时值记检出限一半并标S
remark 备注 字符串 记录停机原因、异常说明等

这份字典里有两个设计要点值得强调。第一,缺失必须与零值严格区分。COD为0在现实中几乎不可能,若把停机时段的空值填成0,趋势图上会出现虚假的“骤降”,后续相关性计算也会被严重扭曲。因此约定:缺失一律留空,用value_flag=M标识,分析时按缺失处理而非按0参与计算。第二,时间字段只保留一个权威口径。建议统一用sample_time表示“该数据所代表的采样时刻”,在线数据若只有分析完成时刻,需在入库时按设备周期回推或由台账补充说明,避免同一时刻出现两条互相矛盾的数据。

采样频率与时间对齐

在线数据可能是2小时一条,手工数据可能一周一条,两者频率相差两个数量级。做关联分析前必须明确对齐规则:通常将手工数据视为“该时刻的参考真值”,用于校验同一时间窗口内在线数据的偏差;而趋势分析则以在线序列为主,手工点作为校核标记叠加。若需要统一到日尺度,可对在线数据取日均值,但必须同时记录当日有效数据条数,条数过少(如少于应测条数的75%)的日均值应标记为可疑,不参与趋势拟合。

三类数据源汇入统一时间序列的数据字典结构 在线监测 2h/4h/日周期 平台导出 / 接口拉取 手工采样 周/月低频 实验室国标方法 历史台账 纸质 / Excel / 旧系统 字段名与单位不统一 规范化处理 单位统一为 mg/L 时间戳统一口径 缺失与零值分离 字段名映射对齐 统一数据字典(核心字段) record_id 唯一标识 station_id 点位编码 sample_time 采样时刻 data_source 来源枚举 cod_value COD (mg/L) nh3n_value 氨氮 (mg/L) value_flag 质量标记 method 分析方法 detect_limit 检出限 value_flag 取值 N正常 M缺失 C维护 O超标 S可疑

入库前的核查与一个可执行的小例子

把三类数据按字典整理后,建议做一次“入库前核查”,重点看四件事:单位是否全部为mg/L(发现ppm需按密度换算或直接按1:1近似并注明)、时间范围是否连续、缺失比例是否异常、同一时刻是否存在重复记录。举个教学示例(以下数值为假设,仅用于说明处理逻辑):某点位在线COD在3月1日08:00、10:00、12:00分别记录为38、41、空值,value_flag依次为N、N、C(12:00设备校准);同日手工采样10:30测得COD为40 mg/L。处理时,12:00的空值保留为空并标C,不参与日均值计算;10:30手工值作为独立记录入库,data_source=MANUAL。若计算3月1日日均COD,则用08:00与10:00两条有效在线值求平均,并在备注中注明“当日有效在线数据2条,低于应测条数,日均值仅供参考”。这样的处理方式,才能保证后续趋势线不会因校准停机出现虚假波动,也不会因手工点混入而重复计数。

数据字典不是一次性文档。每当新增点位、更换在线仪表或调整采样频次时,都应同步更新字典中的station_id、method和采样频率说明,并在版本记录中注明变更日期,否则半年后的数据回溯将无从对证。

完成上述工作后,得到的就是一张字段含义清晰、单位统一、缺失有标记、来源可追溯的COD与氨氮时间序列表。它是后续趋势分析、相关性计算和异常识别的共同基础,也是本课程所有分析结论能够站得住脚的前提。