【数据可视化-67】基于pyecharts的航空安全深度剖析:坠毁航班数据集可视化分析

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

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

在这里插入图片描述

【数据可视化-67】基于pyecharts的航空安全深度剖析:坠毁航班数据集可视化分析

    • 一、引言
    • 二、数据集介绍
    • 三、分析目标
    • 四、环境准备
    • 五、数据加载与预处理
    • 六、可视化分析
      • 6.1 事故随时间的变化趋势
      • 6.2 哪些机型最致命
      • 6.3 哪些运营商的事故最多
      • 6.4 事故严重程度占比
      • 6.5 哪些地点最血腥
      • 6.6 时间对事故的影响
      • 6.7 机型 - 运营商 - 死亡人数
    • 七、总结


一、引言

  在航空领域,安全始终是最重要的议题之一。尽管现代航空技术已经取得了巨大的进步,但航空事故仍然时有发生。今天,我们将通过分析一个从航空安全网络(ASN)抓取的坠毁航班数据集,深入探讨航空事故的多个维度。我们将使用Python和Pyecharts库,以炫酷的黑色背景图表展示分析结果,帮助我们更好地理解航空事故的特征和趋势。

二、数据集介绍

  该数据集包含以下字段:

  • 日期:事故发生的日期
  • 类型:飞机型号
  • 注册:飞机注册码
  • 运营商:运营飞机的航空公司或组织
  • fat:事故中报告的死亡人数(乘客 + 机组人员)
  • 地点:事故发生的地点
  • dmg:损坏严重程度(编码)

三、分析目标

  我们将从以下角度对数据进行分析:

  1. 事故随时间的变化趋势
  2. 哪些机型最致命
  3. 哪些运营商的事故最多
  4. 事故严重程度占比
  5. 哪些地点最血腥
  6. 时间对事故的影响
  7. 机型、运营商与死亡人数的关系

四、环境准备

  在开始之前,请确保你已经安装了以下Python库:

pip install pandas pyecharts

五、数据加载与预处理

  首先,我们需要加载数据并进行一些基本的预处理。

import pandas as pd
import numpy as np
from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import ThemeType
import warnings, datetime, re
warnings.filterwarnings("ignore")# 1. 读入数据
df = pd.read_csv("flight.csv")# 2. 数据清洗
df['acc.date'] = pd.to_datetime(df['acc.date'], errors='coerce')
df['fat'] = pd.to_numeric(df['fat'], errors='coerce')
df = df.dropna(subset=['acc.date', 'fat'])# 3. 衍生字段
df['year'] = df['acc.date'].dt.year
df['month'] = df['acc.date'].dt.month
df['weekday'] = df['acc.date'].dt.day_name()# 通用暗黑主题
dark = {"background_color": "#000","title_color": "#fff","legend_color": "#fff","text_color": "#fff","axis_line_color": "#fff","split_line_color": "#333"
}

六、可视化分析

6.1 事故随时间的变化趋势

  我们将绘制一个时间轴的折线图线图,展示每年事故的数量变化。

# 1️⃣ 时间轴动态折线
tl = Timeline(init_opts=opts.InitOpts(width="1000px", height="500px", theme=ThemeType.DARK))
for y in sorted(df['year'].unique()):y_data = df[df['year']==y].groupby('acc.date').size().cumsum().reset_index()line = (Line().add_xaxis(y_data['acc.date'].dt.strftime("%Y-%m-%d").tolist()).add_yaxis("累计事故", y_data[0].tolist(), is_smooth=True,linestyle_opts=opts.LineStyleOpts(width=3, color="#00ffcc")).set_global_opts(title_opts=opts.TitleOpts(title=f"{y} 时间轴")))tl.add(line, str(y))
tl.render_notebook()

6.2 哪些机型最致命

  我们将绘制一个3D柱状图,展示死亡人数最多的前15个机型。

# 3️⃣ 机型死亡 Top15 3D 柱状
top_type = df.groupby('type')['fat'].sum().nlargest(15).reset_index()
bar3d = (Bar3D(init_opts=opts.InitOpts(width="900px", height="600px", theme=ThemeType.DARK)).add("",[[i, j, top_type.iloc[i]['fat']] for i, j in enumerate(top_type['type'])],xaxis3d_opts=opts.Axis3DOpts(type_="category"),yaxis3d_opts=opts.Axis3DOpts(type_="category"),zaxis3d_opts=opts.Axis3DOpts(type_="value"),).set_global_opts(title_opts=opts.TitleOpts(title="最致命机型 Top15"))
)
bar3d.render_notebook()

6.3 哪些运营商的事故最多

  我们将绘制一个柱状图,展示事故数量最多的前15个运营商。

# 4️⃣ 运营商 PictorialBar
top_op = df['operator'].value_counts().head(15).reset_index()
pic = (PictorialBar(init_opts=opts.InitOpts(width="1000px", height="800px", theme=ThemeType.DARK)).add_xaxis(top_op['index'].tolist()).add_yaxis("",top_op['operator'].tolist(),symbol="image://https://img.icons8.com/color/48/000000/airplane-take-off.png",# symbol_size=30,).reversal_axis().set_global_opts(title_opts=opts.TitleOpts(title="事故最多运营商 Top15"))
)
pic.render_notebook()

6.4 事故严重程度占比

  我们将绘制一个环形图,展示不同严重程度的事故占比。

# 5️⃣ 损坏分级环形图
dmg = df['dmg'].value_counts().reset_index()
pie = (Pie(init_opts=opts.InitOpts(width="800px", height="600px", theme=ThemeType.DARK)).add("",[list(z) for z in zip(dmg['index'], dmg['dmg'])],radius=["40%", "75%"],rosetype="radius",label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)", color="#fff"),).set_global_opts(title_opts=opts.TitleOpts(title="事故损坏分级"))
)
pie.render_notebook()

6.5 哪些地点最血腥

  我们将绘制一个热力图,展示死亡人数最多的前10个地点。

# 3. 绘制热力图
heatmap = (HeatMap(init_opts=opts.InitOpts(width="1200px", height="600px", theme=ThemeType.DARK)).add_xaxis(x_axis).add_yaxis("Fatalities",y_axis,data,label_opts=opts.LabelOpts(is_show=True, position="inside", color="#fff"),).set_global_opts(title_opts=opts.TitleOpts(title="最血腥地点 Top20"),visualmap_opts=opts.VisualMapOpts(max_=int(loc['fat'].max()),min_=0,orient="vertical",pos_right="5%",is_show=True,textstyle_opts=opts.TextStyleOpts(color="#fff")),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(is_show=False)),yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(color="#fff")),)
)heatmap.render("最血腥地点 Top20.html")

6.6 时间对事故的影响

  我们将绘制一个日历图,展示不同时间段的事故数量。

# 7️⃣ 月份事故日历图
cal = (Calendar(init_opts=opts.InitOpts(width="1200px", height="260px", theme=ThemeType.DARK)).add("",[[row['acc.date'].strftime("%Y-%m-%d"), 1] for _, row in df.iterrows()],calendar_opts=opts.CalendarOpts(range_=["2018", "2022"], daylabel_opts=opts.CalendarDayLabelOpts(name_map="en"),monthlabel_opts=opts.CalendarMonthLabelOpts(name_map="en"))).set_global_opts(title_opts=opts.TitleOpts(title="每日事故日历 2018-2022"))
)
cal.render_notebook()

6.7 机型 - 运营商 - 死亡人数

  我们将绘制一个桑基图,展示机型、运营商与死亡人数的关系。

links, nodes = [], []
for _, row in df[df['fat'] > 10].iterrows():links.append({"source": row['type'], "target": row['operator'], "value": row['fat']})nodes.extend([{"name": row['type']}, {"name": row['operator']}])from pyecharts.charts import Sankeyc = (Sankey(init_opts=opts.InitOpts(width="1000px", height="600px", theme=ThemeType.DARK)).add("sankey",nodes,links,linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source"),label_opts=opts.LabelOpts(position="right"),).set_global_opts(title_opts=opts.TitleOpts(title="机型-运营商-死亡桑基图")).render("sankey_base.html")
)

七、总结

  通过以上分析,我们从多个角度对航空事故数据进行了可视化展示。从时间趋势到机型、运营商、地点等多个维度,我们能够更全面地了解航空事故的特征。这些图表不仅具有视觉冲击力,还能帮助我们快速提取关键信息,为航空安全研究提供有力支持。

  如果你对航空安全感兴趣,或者想了解更多数据可视化技巧,欢迎关注我的博客!🎉


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89497.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【科研绘图系列】R语言绘制分组箱线图

文章目录 介绍 加载R包 数据下载 导入数据 画图1 画图2 合并图 系统信息 参考 介绍 【科研绘图系列】R语言绘制分组箱线图 加载R包 library(ggplot2) library(patchwork)rm(list = ls()) options(stringsAsFactors = F)

基于Android的旅游计划App

项目介绍系统打开进入登录页面,如果没有注册过账号,点击注册按钮输入账号、密码、邮箱即可注册,注册后可登录进入系统,系统分为首页、预订、我的三大模块,下面具体详细说说三大模块功能说明。1.首页显示旅游备忘或旅游…

【LeetCode 2163. 删除元素后和的最小差值】解析

目录LeetCode中国站原文原始题目题目描述示例 1:示例 2:提示:讲解分割线的艺术:前后缀分解与优先队列的完美邂逅第一部分:算法思想 —— “分割线”与前后缀分解1. 想象一条看不见的“分割线”2. 前后缀分解&#xff1…

控制鼠标和键盘

控制鼠标和键盘的Python库Python中有多个库可以用于控制鼠标和键盘,常用的包括pyautogui、pynput、keyboard和mouse等。这些库提供了模拟用户输入的功能,适用于自动化测试、GUI操作等场景。使用pyautogui控制鼠标pyautogui是一个跨平台的库,支…

基于按键开源MultiButton框架深入理解代码框架(二)(指针的深入理解与应用)

文章目录2、针对该开源框架理解3、分析代码3.1 再谈指针、数组、数组指针3.2 继续分析源码2、针对该开源框架理解 在编写按键模块的框架中,一定要先梳理按键相关的结构体、枚举等变量。这些数据是判断按键按下、状态跳转、以及绑定按键事件的核心。 这一部分定义是…

web前端渡一大师课 CSS属性计算过程

你是否了解CSS 的属性计算过程呢? <body> <h1>这是一个h1标题</h1> </body> 目前我们没有设置改h1的任何样式,但是却能看到改h1有一定的默认样式,例如有默认的字体大小,默认的颜色 那么问题来了,我们这个h1元素上面除了有默认字体大小,默认颜色等…

Redis高频面试题:利用I/O多路复用实现高并发

Redis 通过 I/O 多路复用&#xff08;I/O Multiplexing&#xff09;技术实现高并发&#xff0c;这是其单线程模型能够高效处理大量客户端连接的关键。以下是通俗易懂的解释&#xff0c;结合 Redis 的工作原理&#xff0c;详细说明其实现过程。 1. 什么是 I/O 多路复用&#xff…

爬虫小知识(二)网页进行交互

一、提交信息到网页 1、模块核心逻辑 “提交信息到网页” 是网络交互关键环节&#xff0c;借助 requests 库的 post() 函数&#xff0c;能模拟浏览器向网页发数据&#xff08;如表单、文件 &#xff09;&#xff0c;实现信息上传&#xff0c;让我们能与网页背后的服务器 “沟通…

WPF学习(五)

文章目录一、FileStream和StreamWriter理解1.1、具体关系解析1.2、类比理解1.3、总结1.4、示例代码1.5、 WriteLine()和 Write&#xff08;&#xff09;的区别1.6、 StreamWriter.Close的作用二、一、FileStream和StreamWriter理解 在 C# 中&#xff0c;StreamWriter 和 FileS…

ctf.show-web习题-web2-最简单的sql注入-flag获取详解、总结

解题思路打开靶场既然提示是最简单的sql注入了&#xff0c;那么直接尝试永真登录1 or 11#这里闭合就是简单的单引号可以看到没登录成功&#xff0c;但是有回显&#xff1a;欢迎你&#xff0c;ctfshowsql注入最喜欢的就是回显了&#xff01;这题的思路就是靠这个回显&#xff0c…

upload-labs 靶场通关(1-20)

目录 Pass-01(JS 绕过) Pass-02(文件类型验证) Pass-03(黑名单验证) Pass-04(黑名单验证.htaccess) Pass-05(大小写绕过) Pass-06(末尾空格) Pass-07(增加一个.) Pass-08(增加一个::$DATA) Pass-09&#xff08;代码不严谨&#xff09; Pass-10&#xff08;PPHPHP&am…

[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+vue实现的酒店预订管理系统,推荐!

摘 要 使用旧方法对酒店预订信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在酒店预订信息的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。 这次开发的酒店预订管理系…

LSTM入门案例(时间序列预测)| pytorch实现(可复现)

需求 假如我有一个时间序列&#xff0c;例如是前113天的价格数据&#xff08;训练集&#xff09;&#xff0c;然后我希望借此预测后30天的数据&#xff08;测试集&#xff09;&#xff0c;实际上这143天的价格数据都已经有了。这里为了简单&#xff0c;每一天的数据只有一个价…

Axure RP 10 预览显示“无标题文档”的空白问题探索【护航版】

1. 安装情况 官网 Axure RP 10&#xff1a;Download Axure RP 10 - Axure &#xff08;PS&#xff1a;11都出了&#xff09; 版本&#xff1a;10.0.0.3924 激活码&#xff1a;49bb9513c40444b9bcc3ce49a7a022f9 &#xff08;10/11都可以用&#xff0c;但只尝试了10&#xff…

基于SpringBoot+Vue的汽车租赁系统(协同过滤算法、腾讯地图API、支付宝沙盒支付、WebsSocket实时聊天、ECharts图形化分析)

系统亮点&#xff1a;协同过滤算法、腾讯地图API、支付宝沙盒支付、WebsSocket实时聊天、ECharts图形化分析&#xff1b;01系统开发工具与环境搭建—前后端分离架构项目架构&#xff1a;B/S架构运行环境&#xff1a;win10/win11、jdk17前端&#xff1a;技术&#xff1a;框架Vue…

数据结构入门:像整理收纳一样简单!

在我们生活中&#xff0c;经常会面对这样的问题&#xff1a; “我要怎么整理我的衣柜&#xff1f;” “电脑里照片太多了&#xff0c;怎么归类才方便查找&#xff1f;” 其实&#xff0c;程序员也有类似的烦恼。他们不整理衣柜&#xff0c;而是“整理数据”。而这门关于如何“收…

力扣每日一题--2025.7.15

&#x1f4da; 力扣每日一题–2025.7.15 3135. 有效单词 &#xff08;简单&#xff09; 大家好&#xff01;今天我们要来聊聊一道有趣的编程题——有效单词 &#x1f4dd; 题目描述 题目分析 &#x1f4da; 题目要求我们判断一个字符串是否为有效单词。有效单词需要满足以下…

Mysql数据库——增删改查CRUD

文章目录一、数据库的基础命令二、创建表三、增(create)四、查询&#xff08;retrieve)五、条件查询&#xff08;where&#xff09;六、修改&#xff08;update&#xff09;七、删除&#xff08;delete&#xff09;一、数据库的基础命令 1.使用客户端连接服务器 mysql -u root…

关于pytorch虚拟环境及具体bug问题修改

本篇博客包含对于虚拟环境概念的讲解和代码实现过程中相关bug的解决关于虚拟环境我的pytorch虚拟环境在D盘&#xff0c;相应python解释器也在D盘&#xff08;一起&#xff09;&#xff0c;但是我的pycharm中的项目在C盘&#xff0c;使用的是pytorch的虚拟环境&#xff0c;这是为…

U盘量产工具与性能优化完全指南

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;U盘量产工具是IT行业中的专业软件&#xff0c;用于批量生产或修复U盘。安国和银灿是两个提供U盘量产工具的主控芯片制造商&#xff0c;提供初始化、格式化、分区管理、性能优化、故障修复、个性化定制、固件升级…