【数据可视化-88】航空公司航班数据分析与可视化:Python + pyecharts洞察航空旅行趋势

发布于:2025-08-17 ⋅ 阅读:(20) ⋅ 点赞:(0)

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

一、引言

  在当今的全球化时代,航空旅行已成为连接世界的重要纽带。通过深入分析航空公司的航班数据,我们可以揭示旅行趋势、优化定价策略,并提升客户体验。本文将利用Python和pyecharts库对航空公司航班数据进行详尽的分析和可视化,以期为航空业提供数据驱动的洞察。

二、数据概览

  我们的数据集包含了以下关键特征:

  • 航空公司:涉及6家不同的航空公司。
  • 航班:飞机航班代码信息。
  • 始发城市和目的地城市:共6个独特的城市。
  • 出发时间和到达时间:包含6个唯一的时间标签。
  • 停靠点:源城市和目的地城市之间的停靠点数量,共3个不同值。
  • 等级:座位等级信息,包括商业和经济两种。
  • 持续时间:城市间旅行所需的总时间(小时)。
  • 剩余天数:旅行日期减去预订日期。
  • 价格:票价信息。

三、数据可视化

  为了更好地理解数据,我们将绘制以下几种图表:

  1. 航空公司频率分析(玫瑰图)
  2. 出发时间和到达时间分布(条形图)
  3. 源城市和目的地城市分布(条形图)
  4. 航空公司票价对比(箱线图)
  5. 出发时间与价格关系(热力图)
  6. 提前购票天数与价格关系(散点图)

3.1 航空公司频率分析(玫瑰图)

# 1. 航空公司频率分析(玫瑰图)
def airline_frequency():
    data = df['airline'].value_counts()
    c = (
        Pie(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color='#0A0A0A'))
        .add(
            series_name="航空公司",
            data_pair=[list(z) for z in zip(data.index.tolist(), data.values.tolist())],
            radius=["30%", "70%"],
            rosetype="radius",
            label_opts=opts.LabelOpts(color="#fff"),
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title="各航空公司航班频率分布", 
                pos_left="center",
                title_textstyle_opts=opts.TextStyleOpts(color="#fff")
            ),
            legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%", textstyle_opts=opts.TextStyleOpts(color="#fff")),
        )
    )
    return c

3.2 出发时间和到达时间分布(条形图)

# 2. 出发时间和到达时间分布(条形图)
def time_distribution():
    dep_data = df['departure_time'].value_counts().sort_index()
    arr_data = df['arrival_time'].value_counts().sort_index()
    
    bar = (
        Bar()
        .add_xaxis(dep_data.index.tolist())
        .add_yaxis("出发时间", dep_data.values.tolist(), stack="stack1")
        .add_yaxis("到达时间", arr_data.values.tolist(), stack="stack1")
    )
    return bar

3.3 城市间航班分布(桑基图)

# 3. 城市间航班分布(桑基图)
def city_sankey():
    sankey = (
        Sankey(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color='#0A0A0A'))
        .add(
            series_name="",
            nodes=nodes,
            links=links,
            linestyle_opt=opts.LineStyleOpts(opacity=0.3, curve=0.5, color="source"),
            label_opts=opts.LabelOpts(color="rgba(255,255,255,0.8)"),
            node_width=20,
            node_gap=10,
        )
    )
    return sankey

3.4 航空公司价格对比(箱线图)

# 4. 航空公司价格对比(箱线图)
def airline_price_boxplot():
    boxplot = Boxplot()
    boxplot = (
        boxplot.add_xaxis(airlines.tolist())
        .add_yaxis("", y_axis=boxplot.prepare_data(data))
    )
    return boxplot

3.5 出发时间与价格关系(热力图)

# 5. 出发时间与价格关系(热力图)
def time_price_heatmap():
    heatmap = (
        HeatMap(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color='#0A0A0A'))
        .add_xaxis(pivot_table.columns.tolist())
        .add_yaxis(
            series_name="价格",
            yaxis_data=pivot_table.index.tolist(),
            value=value,
            label_opts=opts.LabelOpts(is_show=True, position="inside"),
        )
    )
    return heatmap

3.6 提前购票天数与价格关系(散点图)

# 6. 提前购票天数与价格关系(散点图)
def booking_days_price():
    scatter = (
        Scatter()
        .add_xaxis(data['days_left'].tolist())
        .add_yaxis(
            series_name="价格",
            y_axis=data['mean_price'].tolist(),
            symbol_size=8,
            label_opts=opts.LabelOpts(is_show=False),
        )
    )
    return scatter

四、创建可视化大屏

# 创建可视化大屏
def create_dashboard():
    page = Page(layout=Page.DraggablePageLayout, page_title="航空公司航班数据分析大屏")
    page.add(
        airline_frequency(),
        time_distribution(),
        city_sankey(),
        airline_price_boxplot(),
        time_price_heatmap(),
        booking_days_price()
    )
    page.render("airline_dashboard.html")
    print("可视化大屏已生成: airline_dashboard.html")

create_dashboard()

五、可视化结果分析

5.1 航空公司频率分析(玫瑰图)

  玫瑰图展示了不同航空公司的航班频率。通过图表,我们可以直观地看到哪些航空公司在数据集中占据主导地位。

5.2 出发时间和到达时间分布(条形图)

  条形图展示了不同出发时间和到达时间的航班数量。通过图表,我们可以观察到航班在一天中的分布情况,识别出高峰时段。

5.3 源城市和目的地城市分布(条形图)

  条形图展示了不同始发城市和目的地城市的航班数量。这有助于我们了解哪些城市之间的航班最为频繁。

5.4 航空公司票价对比(箱线图)

  箱线图展示了不同航空公司的票价分布。通过图表,我们可以分析出哪些航空公司的票价更高。

5.5 出发时间与价格关系(热力图)

  热力图显示了不同出发时间和到达时间的票价分布。这有助于我们了解票价在一天中的变化趋势。

5.6 提前购票天数与价格关系(散点图)

  散点图展示了提前购票天数与票价的关系。通过图表,我们可以分析出提前购票对票价的影响。

六、结论

  通过上述分析,我们可以得出以下结论:

  1. 某些航空公司在数据集中占据主导地位,这可能与它们的市场份额和运营策略有关。
  2. 航班在一天中的分布不均,存在明显的高峰时段,这可能与旅客的出行习惯和需求有关。
  3. 某些城市之间的航班更为频繁,这可能与这些城市的经济活动和旅游吸引力有关。
  4. 不同航空公司的票价存在差异,这可能与它们的服务水平和品牌形象有关。
  5. 票价在一天中的变化趋势可能与供需关系和运营成本有关。
  6. 提前购票对票价有显著影响,这表明提前预订可能有助于降低票价。

  这些分析结果可以帮助航空公司优化航班安排、调整票价策略,并提升客户满意度。



网站公告

今日签到

点亮在社区的每一天
去签到