3. 运行数据清洗与预处理

农业水肥系统采集到的原始数据,几乎不可能直接用于分析。传感器漂移、网络中断、设备重启、人工记录误差,都会让数据在进入分析模型之前就带有“杂质”。数据清洗与预处理的任务,就是把这些杂质识别出来并合理处理,再把不同来源、不同频率的数据统一到同一时间轴上。本节围绕四个核心问题展开:缺失值怎么识别与填补、异常值怎么判定与处置、重复数据怎么去重、多源时间序列怎么对齐与重采样。

一、缺失值的识别与处理

缺失值在农业水肥数据中非常常见。典型来源包括:传感器故障导致某段时间无记录、网关断网造成数据未上传、人工抄表漏记、设备重启后时间戳跳变等。识别缺失值的第一步是明确“缺失”的判定口径。对于固定采样频率的数据(例如土壤湿度每10分钟一条),可以用时间戳序列与理论采样间隔比对,找出应到未到的记录;对于事件型数据(例如每次施肥记录一条),则要结合业务逻辑判断关键字段是否为空。

处理缺失值有几种常用策略,选择哪一种取决于缺失比例和缺失机制。若某参数连续缺失时间很短(例如少于3个采样周期),线性插值通常足够;若缺失时间较长但参数变化缓慢(如土壤温度),可用前向填充或均值填充;若缺失比例过高(例如超过30%),更稳妥的做法是标记为无效段,不参与后续统计,而不是强行填补。需要特别注意的是,施肥量、灌溉量这类累计型参数不能用简单插值,否则会破坏总量守恒,应优先采用前后累计值差分或按设备运行状态推算。

二、异常值的判定与处置

异常值分为两类:一类是物理上不可能的“硬异常”,例如土壤湿度出现负值或超过100%、流量计出现负流量、EC值突然跳到量程之外;另一类是统计上偏离正常范围的“软异常”,例如某时段灌溉流量明显高于历史同期。硬异常可以直接依据量程和物理约束判定,处理方式是置为缺失后再按缺失值策略处理。软异常则需要结合统计方法,常用的有3σ准则、箱线图IQR法和滑动窗口阈值法。

以3σ准则为例:对某参数计算均值μ和标准差σ,将落在[μ−3σ, μ+3σ]之外的点判为异常。这种方法假设数据近似正态分布,对施肥量这类波动较大的参数容易误判,因此更推荐用滑动窗口内的中位数和MAD(中位数绝对偏差)做稳健判定。实际处置时,不建议直接删除异常点,而应先判断其成因:如果是传感器故障,应标记该段数据不可信;如果是真实的极端事件(如暴雨导致土壤湿度骤升),则应保留并注明。异常值处理的核心不是“删掉不好看的数”,而是保留真实信息、隔离错误信息。

三、重复数据的识别与去重

重复数据主要来自三种情况:设备重传导致同一时间戳出现多条相同记录、多网关汇聚造成数据重复入库、人工补录与自动采集重叠。识别重复数据的关键是确定业务主键。对于水肥系统,通常以“设备编号+参数类型+时间戳”作为唯一标识,若该组合出现多条记录,则判为重复。去重时不能简单保留第一条,而应比较重复记录的字段完整性,保留字段最全、采集质量标记最优的一条;若重复记录数值不一致,则需追溯来源,优先保留原始采集记录而非人工补录记录。

多源水肥数据清洗与时间序列对齐流程 土壤湿度传感器 10 min / 条 流量计 1 min / 条 EC/pH 记录 事件触发 人工施肥台账 按次记录 数据清洗 缺失值识别与填补 异常值判定与标记 重复记录去重 量程与物理约束校验 时间序列对齐 统一时间戳基准 时区与时钟校正 重采样至 10 min 聚合规则:均值/求和 插值补齐对齐网格 分析就绪数据集 统一时间轴 质量标记字段 可追溯清洗日志 重采样示例:流量计 1 min 数据 → 10 min 聚合(示例数据) 原始 1 min: 2.1 2.3 2.0 2.4 2.2 2.5 2.1 2.3 2.2 2.4 均值聚合 10 min 结果: 2.25 m³/h 质量标记: 正常 插值填补 异常隔离 重复已去重 说明:累计型参数(灌溉量、施肥量)重采样用求和,瞬时型参数(流量、EC、pH)用均值; 异常隔离段不参与聚合,避免污染 10 min 统计值。

四、时间序列对齐与重采样

水肥系统里,土壤湿度可能每10分钟采集一次,流量计每分钟一条,EC/pH在施肥事件触发时记录,人工台账则按次登记。这些数据频率不同、时间戳基准也可能不一致,直接合并会得到大量空值或错位。时间序列对齐的目标,是把所有序列映射到统一的时间网格上。

对齐的第一步是统一时间基准。要检查各设备时钟是否同步,是否存在时区混用,时间戳是采集时刻还是上传时刻。第二步是确定目标时间网格,例如统一为10分钟粒度。第三步是重采样:对高频数据做降采样,瞬时型参数(流量、EC、pH)取窗口均值,累计型参数(灌溉量、施肥量)取窗口求和;对低频数据做升采样,用线性插值或前向填充补齐到目标网格。重采样时必须同时生成质量标记字段,标明每个网格点是原始值、插值值还是异常隔离后的空缺,这样后续分析才能区分数据可信度。

下面给出一个可参考的清洗规则配置示例,字段和阈值需根据实际设备量程与业务要求调整:

清洗规则示例(参数为教学假设值)
缺失判定:目标网格内无记录 → 标记 missing
短缺失填补:连续缺失 ≤ 3 个周期 → 线性插值
长缺失处理:连续缺失 > 3 个周期 → 标记 invalid,不参与统计
硬异常:土壤湿度 ∉ [0,100]%;流量 < 0;EC ∉ [0,5] mS/cm → 置 missing
软异常:滑动窗口 12 点,|x − median| > 3×MAD → 标记 suspect
重复判定:设备号 + 参数 + 时间戳 相同 → 保留字段最全记录
重采样网格:10 min;瞬时量取均值,累计量取求和
输出字段:timestamp, device_id, param, value, quality_flag

五、清洗结果如何判断是否可用

清洗完成后不能只看“数据变干净了”,而要做可追溯性检查。建议核对三项:一是清洗前后记录数变化是否与缺失、重复、异常的统计量吻合;二是关键时段(如一次完整灌溉施肥过程)的累计量与人工台账是否在合理误差内;三是质量标记分布是否合理,若某设备长时间被标记为异常,应优先排查传感器而不是继续填补。只有清洗过程可解释、结果可追溯,后续的用水量分析、肥料利用率计算才有可靠基础。