You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整航班起飞时间统计图表的小时排序并合并0与24小时数据?

航班小时统计排序与合并解决方案

核心思路

先把24小时的记录合并到0小时,再强制指定小时的排序顺序,确保图表按0-23的顺序展示。


1. 处理小时字段,合并0与24时段

从DepTime提取小时部分,将24替换为0,完成同一时段的合并:

# 提取起飞小时
data['DepHour'] = data['DepTime'].floordiv(100)
# 将24小时合并到0小时
data['DepHour'] = data['DepHour'].replace(24, 0)

2. 固定小时的排序顺序

用pandas的分类类型强制指定小时顺序为0到23,后续统计和绘图都会遵循这个顺序:

import pandas as pd

# 设置小时为分类类型,指定0-23的顺序
data['DepHour'] = pd.Categorical(data['DepHour'], categories=range(24), ordered=True)

3. 统计并绘制有序柱状图

用value_counts(sort=False)按分类顺序统计,再生成柱状图:

import matplotlib.pyplot as plt

# 按指定顺序统计各小时航班数
hour_counts = data['DepHour'].value_counts(sort=False)

# 绘制柱状图
hour_counts.plot(kind='bar')
plt.xlabel('起飞小时')
plt.ylabel('航班数量')
plt.title('全天各时段航班数量分布')
plt.show()

完整代码示例

import pandas as pd
import matplotlib.pyplot as plt

# 假设data是你的航班数据集
# 处理小时字段
data['DepHour'] = data['DepTime'].floordiv(100)
data['DepHour'] = data['DepHour'].replace(24, 0)

# 固定小时排序顺序
data['DepHour'] = pd.Categorical(data['DepHour'], categories=list(range(24)), ordered=True)

# 统计并绘图
hour_counts = data['DepHour'].value_counts(sort=False)
hour_counts.plot(kind='bar')
plt.xlabel('起飞小时')
plt.ylabel('航班数量')
plt.title('全天各时段航班数量分布')
plt.show()

关键说明

  • replace(24, 0)直接完成0和24小时的统计合并,逻辑简单直接
  • pd.Categorical是确保排序正确的核心,避免value_counts默认按计数排序的问题
  • sort=False参数让统计结果严格遵循分类的预设顺序,保证图表x轴按0-23升序排列

内容的提问来源于stack exchange,提问作者Toshik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:36:35