数据清洗与预处理:构建干净的分析数据集
民航市场分析的数据来源极为庞杂——离港系统、订座系统(PNL/ADL)、收益管理系统、航班计划系统、气象服务、空管流量数据等,各自拥有不同的字段定义、时间粒度、编码规则和存储格式。原始数据中普遍存在缺失值、异常值、重复记录、时间格式不一致、航线编码混乱等问题。若不经清洗直接进入分析模型,轻则导致统计指标失真,重则使趋势判断完全偏离实际。本章围绕“处理缺失值、异常值、重复数据,统一时间格式与航线编码”五大任务,系统讲解构建干净分析数据集的完整流程与实战方法。
4.1 缺失值处理:从“留白”到“有据可依”
核心原理:民航数据中的缺失值并非随机出现,往往带有业务含义。例如,某航班在离港系统中缺少“实际起飞时间”,可能是航班取消、备降或系统未及时录入;收益数据中缺少“平均票价”,可能是该舱位无销售记录而非数据错误。因此,处理缺失值的第一步不是“填”,而是“理解缺失的原因”。
| 缺失类型 | 典型场景 | 处理策略 |
|---|---|---|
| 完全随机缺失(MCAR) | 系统故障导致个别记录丢失 | 直接删除或均值填充 |
| 随机缺失(MAR) | 航班取消导致起飞时间缺失 | 根据航班状态字段推断 |
| 非随机缺失(MNAR) | 低价舱位无票价记录 | 业务规则填充或单独标记 |
操作流程:首先统计各字段缺失率,绘制缺失矩阵;然后结合业务逻辑判断缺失原因;最后选择处理策略——对于关键字段(如航班号、日期)缺失率超过5%的记录直接剔除;对于连续型指标(如客座率)采用同航线、同时段的均值或中位数填充;对于分类字段(如航班状态)使用众数或“未知”标记。
4.2 异常值识别:区分“真异常”与“业务波动”
核心原理:民航市场数据中的异常值有两类:一是数据录入或传输错误(如客座率显示为250%),二是真实的业务极端值(如春运期间票价飙升300%)。前者必须修正或剔除,后者恰恰是市场趋势分析的重点信号,不能盲目清洗。
判断方法:采用“3σ原则”与“IQR(四分位距)法”双重校验。对于客座率、票价、航班量等指标,先计算均值和标准差,标记超出±3σ的记录;再用IQR法(Q1-1.5×IQR至Q3+1.5×IQR)交叉验证。同时设定业务阈值——例如客座率必须在0%-100%区间,票价不得低于0元,航班量不得为负数。
4.3 重复数据处理:识别“同一条记录”的多种形态
核心原理:重复数据不仅指完全相同的记录,还包括部分字段重复的“近似重复”。在民航数据中,同一航班可能被多个系统重复上报,或同一旅客的订座记录在不同时间点被多次抓取。
操作流程:第一步,定义唯一标识键——通常为“航班号+计划起飞日期+起飞机场+到达机场”的组合;第二步,使用排序和分组检测完全重复记录;第三步,对近似重复记录,比较关键字段的相似度(如时间差小于30分钟、航班号相同但舱位不同),根据业务规则决定保留哪一条。
-- 示例:检测重复航班记录
SELECT flight_no, dep_date, dep_airport, arr_airport, COUNT(*)
FROM raw_flight_data
GROUP BY flight_no, dep_date, dep_airport, arr_airport
HAVING COUNT(*) > 1;
4.4 时间格式统一:跨越时区与系统差异
核心原理:民航数据涉及多种时间表达:本地时间(LST)、协调世界时(UTC)、Unix时间戳、字符串日期等。不同系统对同一时刻的记录方式可能完全不同——离港系统使用本地时间,收益系统使用UTC,而订座系统可能使用带时区偏移的ISO格式。若不统一,时间序列分析将产生系统性偏差。
统一策略:建议将所有时间字段转换为“UTC时间戳+本地时区偏移”的双重格式。具体步骤:①识别各字段的原始时区;②使用Python的pandas.to_datetime()或SQL的CONVERT_TZ()函数统一转换;③生成三个派生字段——utc_time(用于计算)、local_time(用于业务解读)、time_zone(用于追溯)。
| 原始格式 | 示例 | 统一后格式 |
|---|---|---|
| 本地时间字符串 | 2025-03-15 08:30:00 | 2025-03-15T00:30:00Z (UTC) |
| Unix时间戳 | 1742005800 | 2025-03-15T00:30:00Z (UTC) |
| ISO带时区 | 2025-03-15T08:30:00+08:00 | 2025-03-15T00:30:00Z (UTC) |
4.5 航线编码统一:从“多套编码”到“单一标准”
核心原理:航线编码是民航市场分析的骨架字段。国内数据常用三字码(如PEK代表北京首都),国际数据常用ICAO四字码(如ZBAA),部分系统还使用城市对编码(如BJS-SHA)。同一航线在不同系统中可能呈现完全不同的编码形式,直接关联会导致数据断裂。
统一方案:建立“航线编码映射表”,包含以下字段:route_key(统一主键,格式为“出发三字码-到达三字码”)、dep_airport_icao、arr_airport_icao、dep_city_code、arr_city_code、airline_iata。通过映射表将各系统的编码统一转换,同时保留原始编码字段以便追溯。
4.6 构建干净数据集的完整流程与质量校验
操作流程:将上述五步整合为标准化流水线:①数据加载与字段探查 → ②缺失值处理 → ③异常值识别与修正 → ④重复数据去重 → ⑤时间格式统一 → ⑥航线编码映射 → ⑦数据质量校验 → ⑧输出干净数据集。每一步都需要记录处理日志,包括处理规则、影响记录数、处理前后对比。
质量校验指标:完整性(无关键字段缺失)、准确性(抽样比对原始数据)、一致性(时间、编码格式统一)、唯一性(无重复记录)、时效性(数据时间范围符合分析需求)。建议使用数据质量报告自动生成工具,输出各字段的健康度评分。