
1) 【一句话结论】航班正常率计算需整合空管、航空公司、地勤多源数据,通过定义“正常航班”(准点起飞/到达、无取消/严重延误)规则,经数据提取、清洗、规则匹配后,按小时或天统计正常航班数与总航班数之比,输出结果。
2) 【原理/概念讲解】
老师口吻解释关键概念:
航班正常率是衡量航班运营效率的核心指标,定义为“正常航班数/总航班数×100%”。其中,“正常航班”需满足以下条件:① 起飞延误≤30分钟(或约定阈值);② 到达延误≤15分钟(或约定阈值);③ 状态为“正常”(非取消、严重延误等)。
数据源整合涉及三系统:空管系统提供计划时间(计划起飞、计划到达、状态)、航空公司系统提供实际运行数据(实际时间、状态、延误原因)、地勤系统提供地面延误信息(辅助判断是否可控)。
数据清洗需处理三类问题:① 缺失值(如实际到达时间缺失,尝试从其他系统补全或标记缺失);② 异常值(如实际起飞时间晚于计划到达时间,标记为数据错误);③ 格式统一(如时间格式统一为“YYYY-MM-DD HH:MM”)。
规则匹配是将清洗后的数据按航班号关联,应用“正常航班”定义,标记正常/非正常。
3) 【对比与适用场景】
| 时间粒度 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 按小时 | 以小时为单位统计航班正常率 | 粒度细,能反映实时波动,受单次航班影响大 | 实时监控、快速响应运营问题(如某时段延误集中) | 数据量较大,计算复杂度较高 |
| 按天 | 以天为单位统计航班正常率 | 粒度粗,能反映趋势,受单次航班影响小 | 汇总报告、长期趋势分析(如月度/年度正常率) | 需要汇总小时数据,计算更简单 |
4) 【示例】
以按小时计算为例,伪代码逻辑:
# 数据提取
plan_data = 空管系统API(航班号) # 计划时间、状态
act_data = 航空公司系统API(航班号) # 实际时间、状态、延误原因
ground_data = 地勤系统API(航班号) # 地面延误时间、原因
# 数据清洗
clean_data = []
for rec in plan_data + act_data + ground_data:
if rec.航班号 is None or rec.计划时间 is None: # 检查完整性
continue
if rec.实际到达时间 is None: # 缺失值处理
rec.实际到达时间 = 尝试从航空公司系统补全(rec.航班号)
if rec.实际起飞时间 > rec.计划到达时间: # 异常值处理
rec.状态 = "数据异常"
continue
clean_data.append(rec)
# 规则匹配
normal_flights = []
for rec in clean_data:
if (rec.实际起飞时间 - rec.计划起飞时间 <= 30) and \
(rec.实际到达时间 - rec.计划到达时间 <= 15) and \
rec.状态 == "正常":
normal_flights.append(rec)
# 计算过程
hourly_normal_rate = {}
for hour in 按小时分组的时间范围:
hourly_flights = [rec for rec in clean_data if rec.实际时间 in hour]
hourly_normal = [rec for rec in hourly_flights if rec in normal_flights]
hourly_normal_rate[hour] = len(hourly_normal) / len(hourly_flights) * 100
5) 【面试口播版答案】
面试官您好,计算航班正常率的核心是整合多源数据并应用统一规则。首先,数据提取阶段,我会从空管系统获取航班计划(计划时间、状态),从航空公司系统获取实际运行数据(实际时间、状态),从地勤系统获取地面延误信息。然后进行数据清洗,比如检查数据完整性、处理缺失值(如实际到达时间缺失时尝试补全),处理异常值(如实际起飞时间晚于计划到达时间标记为异常)。接着应用规则匹配,定义正常航班为起飞延误≤30分钟、到达延误≤15分钟且状态正常的航班,对每个航班判断是否正常。最后按小时或天分组统计正常航班数与总航班数之比,得到正常率。比如按小时计算,就是统计每个小时的正常航班数除以该小时的总航班数;按天计算则是汇总全天的数据。这样就能得到准确的航班正常率。
6) 【追问清单】
7) 【常见坑/雷区】