4. 数据清洗与预处理工程
Anritsu 测试仪表(如 MS2090A 频谱分析仪、MT8000A 无线通信测试平台、MT8821C 综测仪)输出的原始数据,往往不能直接进入分析模型。以一次 5G NR 路测为例,仪表按固定周期上报 RSRP、SINR、TxPower、BLER 等参数,但采集过程中会出现 GPS 丢星导致的经纬度缺失、切换瞬间的采样重复、不同仪表时间戳基准不一致、以及个别因遮挡产生的异常尖峰。数据清洗与预处理工程的目标,就是把这些"脏数据"转化为时间对齐、单位统一、质量可控、可复用的分析数据集。
一、四类典型数据问题与处理策略
缺失值是 Anritsu 数据中最常见的问题。GPS 未定位时经纬度为空,弱覆盖区域 RSRP 可能上报为无效值。处理时需先区分缺失类型:连续短时缺失(如 1~3 个采样点)适合线性插值或前向填充;长时间缺失(如进入隧道 30 秒以上)则不应插值,而应标记为无效区间,避免伪造数据。判断依据可设阈值:连续缺失点数超过 5 个即标记为"数据空洞",不参与后续统计。
异常点通常来自瞬时干扰或仪表量程切换。例如 RSRP 正常波动在 -140~-40 dBm,若某点突然出现 -20 dBm 或 -200 dBm,即为异常。推荐使用"3σ 准则 + 物理边界"双重判断:先按滑动窗口计算均值与标准差,超出均值 ±3σ 的点标记为疑似异常;再结合参数物理范围(RSRP 有效范围 -156~-31 dBm)做二次确认。对确认的异常点,用窗口中位数替换比均值更稳健。
时间对齐是跨仪表分析的关键。Anritsu 仪表内部时钟与 GPS 时间可能存在偏移,多台仪表并行采集时时间戳基准不同。工程做法是:以 GPS 时间为基准时间轴,将各仪表时间戳映射到统一时间网格(如 100 ms 栅格),对落在同一栅格内的多个采样取均值或保留最新值。若时间偏移已知且稳定,可先做固定偏移校正再对齐。
单位统一与重复采样同样不可忽视。功率类参数可能以 dBm、dBW、W 混用,速率类可能以 kbps、Mbps 混用。建议在清洗流水线入口统一转换为 dBm 和 Mbps,并记录转换日志。重复采样则常见于仪表重传或采集软件重复写入,可通过"时间戳 + 参数名 + 数值"三元组去重,保留首次出现记录。
二、构建可复用的清洗流水线
把上述处理串成流水线,核心是"配置驱动 + 分步可插拔"。建议用 Python 实现,以 pandas 为数据处理底座,每个处理步骤封装为独立函数,通过 YAML 配置文件控制启用与参数。以下是一个可参考的流水线骨架:
# pipeline_config.yaml
missing:
method: interpolate # interpolate / ffill / drop
max_gap: 5 # 连续缺失超过5点不插值
outlier:
method: sigma # sigma / iqr
sigma_n: 3
bounds:
RSRP: [-156, -31]
SINR: [-20, 40]
time_align:
grid_ms: 100
ref: gps
unit:
power: dBm
rate: Mbps
dedup:
keys: [timestamp, param, value]
quality:
min_complete_rate: 0.95
max_outlier_rate: 0.02
流水线执行时,先读取原始 CSV,解析时间戳并转换为统一时区;然后按配置依次执行缺失值处理、异常点检测与替换、时间栅格对齐、单位换算、去重;最后输出质量报告,包含总记录数、缺失率、异常率、去重条数、时间对齐偏差等指标。若质量校验不通过(如完整率低于 95%),流水线应中止并输出告警,而不是把低质量数据送入下游。
三、质量校验与结果判读
清洗完成后,需要一套可量化的验收标准。以下是一份可直接使用的质量检查表,字段与 Anritsu 测试数据场景对应:
| 检查项 | 计算方式 | 通过标准 | 不通过时的处理 |
|---|---|---|---|
| 完整率 | 有效记录数 / 总记录数 | ≥ 95% | 检查缺失原因,补充采集或调整插值策略 |
| 异常率 | 异常点数量 / 有效记录数 | < 2% | 排查干扰源或仪表量程设置 |
| 时间对齐偏差 | 各仪表时间戳与 GPS 基准的差值 | ≤ 50 ms | 重新校准仪表时钟或增大栅格 |
| 重复率 | 去重条数 / 总记录数 | < 1% | 检查采集软件写入逻辑 |
| 单位一致性 | 各参数量纲是否统一 | 全部统一 | 修正单位换算配置 |
以一次实际路测数据为例(示例数据,非实测):原始记录 12,000 条,缺失 480 条(4%),异常 156 条(1.3%),重复 72 条(0.6%),时间对齐偏差最大 38 ms。清洗后有效记录 11,520 条,完整率 96%,异常率 0.8%,全部指标通过。此时数据集可直接用于覆盖分析、切换成功率统计等下游任务。
四、流水线复用与版本管理
可复用意味着同一套流水线能处理不同项目、不同仪表、不同参数集的数据。实现要点有三:一是配置与代码分离,参数通过 YAML 注入,不硬编码;二是处理步骤可插拔,新增参数只需在配置中增加边界与单位映射;三是每次运行输出清洗日志与质量报告,记录输入文件、配置版本、输出路径、各步骤处理条数,便于追溯与复现。建议将流水线封装为命令行工具,例如 python clean_pipeline.py --config config.yaml --input raw.csv --output clean.csv,并纳入版本控制,确保不同批次数据使用同一清洗标准。
当流水线稳定运行后,可进一步将质量报告接入监控看板,对完整率、异常率设置阈值告警。这样,数据清洗不再是"一次性脚本",而是可观测、可迭代的工程能力,为后续 Anritsu 测试数据分析提供可靠的数据底座。