3. 产量数据整理与时间序列构建
递减分析和EUR测算的全部前提,是拥有一条"干净、连续、口径统一"的产量时间序列。现场拿到的数据往往来自不同来源:生产日报的日产量、月度报表的月产量、SCADA导出的瞬时流量、甚至手工填写的班报。这些数据在导入Excel后,常见问题包括日期被识别为文本、缺失日被跳过导致时间轴断裂、关井或修井期间的零值与异常高值混杂、以及日产量与月产量口径不一致。本节的任务,就是把这些原始数据整理成一条可直接用于递减拟合的统一时间轴产量序列。
一、先明确口径:日产量与月产量如何统一
日产量通常是单日计量或分配后的结果,波动大但时间分辨率高;月产量是月度累计值,平稳但粒度粗。二者不能简单混用。实践中推荐以日产量序列作为主时间轴,月产量用于交叉校验和补缺。统一口径的关键有三点:
- 单位统一:将液体产量统一为m³/d或t/d,气量统一为10⁴m³/d,避免同一列中混入不同单位。
- 时间基准统一:以生产日期(而非报表提交日期)为索引,月产量需按当月实际生产天数折算为平均日产量,或保留为月度节点单独标注。
- 归属统一:明确产量归属到"日历日"还是"生产日",关井日是否计入时间轴。建议保留日历日连续轴,用状态列标记生产/关井/修井。
二、日期格式与时间轴构建
Excel中最常见的坑是日期以文本形式存在,如"2024/3/1"、"2024.03.01"、"3月1日"混排。导入后应先用"分列"或DATEVALUE统一转换为真正的日期序列值,再用TEXT或单元格格式统一显示。判断是否转换成功,可观察单元格是否右对齐(数值/日期默认右对齐,文本左对齐)。
构建连续时间轴的标准做法是:确定首末日期后,用填充序列生成逐日日期列,再以该列为基准用VLOOKUP或XLOOKUP把原始产量匹配进来。这样即使原始数据缺失某几天,时间轴仍然连续,缺失位置显示为空值,便于后续识别和处理。
假设 A 列为连续日期(A2 起始),原始数据在 Sheet2 的 A:B 列
B2: =IFERROR(XLOOKUP(A2,Sheet2!$A:$A,Sheet2!$B:$B),"")
C2(状态标记): =IF(B2="","缺失",IF(B2=0,"关井/零产","正常生产"))
这段公式的价值在于:它把"数据是否存在"和"数据是否为零"区分开来。空值代表没有记录,零值代表有记录但无产量,二者在后续处理中含义完全不同,绝不能混为一谈。
三、缺失值与异常值的处理原则
缺失值的处理要区分原因。若是短期计量故障(如1~3天),可用前后正常生产日的均值插补,并在备注列标记"插补";若是长时间停产(如超过7天),不应插补,而应保留空值并在状态列标注停产原因,因为强行插补会人为抬高产量、扭曲递减趋势。异常值的识别可借助简单统计规则:对日产量序列计算中位数和四分位距,超出中位数 ± 3×IQR的点视为疑似异常,再结合生产日志判断是真实高产(如压裂返排初期)还是计量错误。
四、整理成果的结构
建议最终形成一张"产量主表",至少包含:日期、日产量、状态标记(正常/关井/修井/缺失/插补)、数据来源(日报/月报折算)、备注。这张表就是后续递减拟合和EUR测算的唯一数据源。下图展示了从原始数据到统一时间轴序列的整理逻辑与关键判断分支。
五、整理后的自检要点
完成整理后,建议做三项快速自检:其一,时间轴是否逐日连续、无跳日;其二,状态列中"正常生产"天数与月报统计的生产天数是否吻合;其三,正常生产段的日产量合计与月产量折算值偏差是否在合理范围(一般不超过5%)。若偏差过大,说明存在重复记录、单位错误或归属错误,需回溯原始数据。只有通过自检的序列,才适合进入下一步的递减拟合与EUR测算,否则后续所有参数都会被系统性污染。
需要强调的是,本节整理出的"状态"列并非可有可无的备注,它是后续筛选拟合区间的依据。递减分析通常只取稳定生产段,而EUR测算则要区分已产与预测两部分,这些都依赖状态标记的准确性。把这一步做扎实,后面的递减率、b值、EUR才有可信的输入基础。