3、数据预处理实战:数据清洗、缺失值处理、异常值识别与校正方法
地质趋势分析的可靠性,首先取决于输入数据的质量。无论是钻孔岩性记录、地球化学采样、测井曲线还是地震解释成果,原始数据中几乎必然存在噪声、缺失、重复、矛盾或极端离群值。若未经处理直接进入趋势面分析、克里金插值或机器学习模型,轻则扭曲趋势形态,重则得出完全错误的构造或成矿结论。本章围绕数据清洗、缺失值处理、异常值识别与校正三大任务,建立一套可落地、可复核的实战流程。
3.1 数据清洗:建立“干净”的数据底座
3.1.1 核心原理
数据清洗不是简单的“删行改列”,而是围绕地质数据的空间属性、深度属性、属性值域和语义一致性进行系统性校验。地质数据往往来自多源(历史钻孔、野外记录、实验室分析、遥感解译),不同批次的数据在坐标系统、深度基准、岩性命名、单位换算上存在显著差异。清洗的目标是让所有数据在统一的标准下可比较、可计算、可追溯。
3.1.2 清洗操作流程
- 格式统一:检查坐标系统(经纬度 vs 投影坐标)、深度单位(米 vs 英尺)、元素含量单位(ppm vs %)、日期格式。建立统一模板,批量转换。
- 重复记录处理:同一钻孔同一深度出现两条记录,或同一采样点重复编号。按“钻孔ID+深度”或“采样点ID”为主键去重,保留质量标记更高的一条。
- 逻辑校验:检查深度是否连续递增、岩性描述与测井曲线是否矛盾(如砂岩段出现高伽马值)、地层年代是否倒序。
- 文本标准化:将“灰岩”、“石灰岩”、“Limestone”统一为“灰岩”;将“F1”、“断层1”、“fault1”统一为“F1”。建立同义词映射表。
| 清洗维度 | 常见问题 | 处理策略 | 工具/方法 |
|---|---|---|---|
| 坐标系统 | 混合使用WGS84、北京54、西安80 | 统一投影至目标坐标系(如UTM 50N) | QGIS / ArcGIS / Proj库 |
| 深度一致性 | 部分记录为孔口高程,部分为补心高程 | 统一换算至同一基准面 | Excel公式 / Python脚本 |
| 岩性命名 | 同岩性多种叫法 | 建立标准词典,批量替换 | Python字典映射 / OpenRefine |
| 单位换算 | Au含量:g/t vs ppm vs ppb | 统一为g/t(金矿)或ppm(化探) | 自定义换算函数 |
3.2 缺失值处理:从“放弃”到“科学补全”
3.2.1 缺失机制判断
处理缺失值前,必须先判断缺失机制:完全随机缺失(MCAR)、随机缺失(MAR)、非随机缺失(MNAR)。地质数据中,MCAR较少见(如仪器随机故障);MAR较常见(如浅层样品因风化严重未采样,与深度相关);MNAR需警惕(如高品位样品被选择性丢弃或未化验)。判断方法包括:分组对比缺失组与非缺失组的关键变量分布、绘制缺失模式矩阵。
3.2.2 处理方法选择
- 删除法:当缺失比例<5%且为MCAR时,可直接删除缺失样本。但在地质数据中,删除可能导致空间采样不均匀,需谨慎。
- 单一插补法:均值/中位数插补简单但会降低方差;多重插补(MICE)能反映插补不确定性,适合化探数据。
- 地质约束插补:利用相邻钻孔同一层位的均值、或同一钻孔上下深度的线性插值。例如,某钻孔在50-60m段缺失Cu品位数据,可用相邻钻孔同层位Cu值进行距离加权平均。
- 模型预测法:使用KNN、随机森林等基于其他变量预测缺失值。适用于变量间相关性较强的场景(如利用密度预测孔隙度)。
3.2.3 案例拆解:某铜矿化探数据缺失处理
背景:某斑岩铜矿普查项目,共采集土壤样品1200件,分析Cu、Mo、Au、Ag等元素。其中Cu元素有180件样品因实验室仪器故障未检出,缺失率15%。
初始现象:若直接删除180件样品,会导致矿区东部采样密度骤降,趋势面分析出现“空洞”。
分析判断:缺失样品在空间上随机分布,但集中在第二批送样批次,判断为MAR(与批次相关,与Cu含量无关)。
操作步骤:
- 对未缺失的1020件样品进行对数转换(化探数据常呈对数正态分布)。
- 使用多重插补法(MICE,5次插补)基于Mo、Au、Ag及空间坐标(X,Y)预测Cu缺失值。
- 对插补结果进行地质合理性检查:插补值是否落在该岩性单元Cu含量的合理范围(如花岗闪长岩中Cu均值200-500ppm)。
- 生成最终数据集,并标记180件插补值,后续趋势分析中可适当降低其权重。
结果对比:插补后趋势面图与仅用1020件样品的趋势面图相比,东部异常带形态更连续,且与已知矿化蚀变带吻合度提升约20%。
复盘经验:缺失值处理不是“填满就行”,必须记录插补方法、参数和不确定性。在最终报告中应说明插补比例及对结果的影响。
3.3 异常值识别:统计与地质双重检验
3.3.1 核心原理
异常值(离群值)可能代表真实的矿化富集、构造破碎带,也可能是采样污染、分析误差或录入错误。因此,不能仅凭统计方法判定异常值,必须结合地质背景进行综合判断。识别策略分为三个层次:全局统计、局部空间、地质约束。
3.3.2 识别方法体系
| 方法类别 | 具体方法 | 适用场景 | 局限性 |
|---|---|---|---|
| 全局统计 | 3σ原则(均值±3倍标准差) | 正态分布数据 | 地质数据多偏态,需先对数转换 |
| 全局统计 | 箱线图(1.5倍IQR) | 偏态分布,稳健 | 对真实矿化异常可能过度剔除 |
| 全局统计 | MAD(中位数偏差) | 含强离群值时的稳健估计 | 阈值选择需经验 |
| 空间邻域 | 局部莫兰指数 / 局部G统计量 | 识别空间聚集型异常 | 需定义邻域范围 |
| 空间邻域 | 趋势面残差分析 | 识别局部高/低值异常 | 趋势面阶数影响结果 |
| 地质约束 | 岩性-品位交叉验证 | 检查元素含量是否超出该岩性合理范围 | 需建立岩性-品位背景数据库 |
3.3.3 异常值校正策略
- 剔除:仅当确认是录入错误或分析误差时(如Cu含量为58000ppm,而相邻样品均<1000ppm,且复查无矿化证据)。
- 替换:用邻域中位数或趋势面预测值替换,并标记为“校正值”。
- 降权:在插值或回归分析中,对异常值赋予较低权重(如使用稳健克里金)。
- 保留并标注:若异常值具有地质意义(如发现高品位矿化),应保留并单独分析,不参与常规趋势建模。
3.3.4 案例拆解:煤层气测井曲线异常值处理
背景:某煤层气区块,对30口井的密度测井曲线进行趋势分析,以识别煤层厚度变化趋势。其中一口井(井号:M-07)在800-805m深度段出现密度值1.2 g/cm³的异常低值,而邻井同层位密度约1.6-1.8 g/cm³。
初始现象:该异常段对应岩性记录为“碳质泥岩”,但密度值远低于正常碳质泥岩范围(1.4-1.6 g/cm³)。
分析判断:初步怀疑为井径扩大导致密度测井值失真(井壁垮塌造成仪器贴壁不良)。
操作步骤:
- 调取M-07井的井径曲线,确认800-805m段井径扩大至12.5英寸(钻头直径8.5英寸)。
- 对比邻井同层位密度值,确认该段真实密度应约为1.65 g/cm³。
- 采用邻井同层位密度均值进行校正,并将该段标记为“校正值(井径扩大校正)”。
- 在趋势分析中,对该段数据赋予0.5的权重,降低其影响。
结果对比:校正后,该井的密度趋势曲线与区域煤层厚度变化趋势一致,消除了虚假的“低密度异常”。
风险与代价:若未校正,该异常段可能导致趋势面分析在M-07井附近产生虚假的“煤层增厚”或“高孔隙度”异常,误导储量估算。
3.4 综合实战流程与常见误区
3.4.1 标准处理流程清单
- 数据盘点:统计各字段缺失率、重复率、数据类型、值域范围。
- 清洗执行:格式统一 → 去重 → 逻辑校验 → 文本标准化。
- 缺失值处理:判断缺失机制 → 选择插补策略 → 执行插补 → 记录不确定性。
- 异常值识别:全局统计 → 空间邻域 → 地质约束三重检验。
- 异常值校正:剔除/替换/降权/保留,并生成校正日志。
- 质量验证:对比处理前后数据的均值、方差、空间分布特征,绘制QQ图或直方图确认数据形态改善。
- 生成最终数据集:包含原始值、处理值、处理标记、处理原因四列,便于追溯。
3.4.2 常见误区与规避
| 误区 | 后果 | 正确做法 |
|---|---|---|
| 对所有异常值一律剔除 | 丢失真实矿化异常或构造信息 | 先地质验证,再决定处理方式 |
| 缺失值全部用均值填充 | 降低数据方差,扭曲空间变异结构 | 优先使用多重插补或地质约束插补 |
| 清洗后不保留日志 | 无法复核,成果不可信 | 每一步操作均记录原始值、新值、原因 |
| 忽略空间自相关性 | 异常值识别脱离地质背景 | 结合邻域信息和地质图件综合判断 |
| 处理顺序颠倒 | 先识别异常再清洗,导致误判 | 严格按“清洗→补缺→异常识别→校正”顺序 |
3.4.3 总结复盘
数据预处理是地质趋势分析中最耗时但最关键的环节。一个高质量的数据集应满足三个标准:空间连续性(无因缺失导致的空洞)、统计稳健性(无极端值主导分析结果)、地质合理性(数据符合已知地质规律)。本章所述方法并非孤立使用,而是形成一套“清洗→补缺→识别→校正→验证”的流水线。建议在实际项目中,将预处理流程固化为标准化脚本或模板,确保不同项目、不同人员操作的一致性。最终,所有处理步骤都应可追溯、可复现,这是地质成果经得起检验的基础。