机场的出租车问题折线图

分析并可视化机场离场车辆数数据

本文将详细介绍如何使用Python的正则表达式库re和绘图库matplotlib对机场离场车辆数数据进行分析和可视化。以下是具体步骤和代码实现。

数据资源:
链接:https://pan.baidu.com/s/1rU-PRhrVSXq-8YdR6obc6Q?pwd=1234
提取码:1234

1. 导入必要的库

首先,我们需要导入用于数据处理和绘图的库:

import re
import matplotlib.pyplot as plt
from datetime import datetime
import matplotlib.font_manager as fm

2. 读取文件内容

假设我们有两个文件,分别是郑州机场9月14上午原始数据.txt郑州机场9月14下午原始数据.txt,其中包含了机场的离场车辆数数据。我们需要读取这两个文件的内容并合并:

# 文件路径
file_paths = ['郑州机场9月14上午原始数据.txt', '郑州机场9月14下午原始数据.txt']

# 初始化数据列表
data = ''

# 读取文件内容
for file_path in file_paths:
    with open(file_path, 'r', encoding='utf-8') as file:
        data += file.read()  # 读取文件中的所有内容并合并
# 若没有文件,先用一下数据代替
# 示例数据
# data = """
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:40:19) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:40:30) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:40:41) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:40:52) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:41:04) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:41:15) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:41:26) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:41:39) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:41:50) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:42:01) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:42:12) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:42:22) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:0 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:42:34) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:42:45) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:42:57) 场内待运车辆数为:80 辆; 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:43:08) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:43:19) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:19 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:43:30) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:43:41) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:43:53) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:44:05) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:44:16) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:44:27) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:44:38) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:44:50) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辆; 前半小时离场车辆数为:1 辆;
# 郑州机场出租车秩序管理站 截止目前为止(2019-09-14 07:45:01) 场内待运车辆数为:81 辆(场内待运较多); 前半小时进场车辆数为:18 辅辆; 前半小时离场车辆数为:1 辆;
# """

3. 使用正则表达式匹配数据

我们使用正则表达式来提取文件中的时间戳和前半小时离场车辆数。这里的正则表达式模式匹配类似于(2023-09-14 08:30:00)前半小时离场车辆数为:123 辆;的文本。

# 正则表达式匹配时间和前半小时离场车辆数
pattern = r"((\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})).*?前半小时离场车辆数为:(\d+) 辆;"
matches = re.findall(pattern, data)  # 使用正则表达式查找所有匹配的模式

4. 解析匹配结果

将匹配到的时间字符串转换为datetime对象,并将离场车辆数转换为整数:

# 解析匹配结果
timestamps = [datetime.strptime(match[0], "%Y-%m-%d %H:%M:%S") for match in matches]  # 将匹配到的时间字符串转换为datetime对象
leaving_counts = [int(match[1]) for match in matches]  # 将匹配到的离场车辆数转换为整数

5. 设置字体

为了支持中文显示,我们需要设置字体。这里假设我们使用的是SimHei字体:

# 设置字体
font_path = 'C:/Windows/Fonts/simhei.ttf'  # 你可以根据需要更改字体路径
font_prop = fm.FontProperties(fname=font_path)  # 创建字体属性对象

6. 绘制折线图

使用matplotlib绘制离场车辆数随时间变化的折线图:

# 绘制折线图
plt.figure(figsize=(10, 6))  # 设置图表大小
plt.plot(timestamps, leaving_counts, marker='o', markersize=1, linestyle='-', color='b')  # 绘制折线图,设置节点样式和颜色
plt.title("前半小时离场车辆数随时间的变化", fontproperties=font_prop)  # 设置图表标题
plt.xlabel("时间", fontproperties=font_prop)  # 设置X轴标签
plt.ylabel("前半小时离场车辆数", fontproperties=font_prop)  # 设置Y轴标签
plt.grid(True)  # 显示网格
plt.xticks(rotation=45, fontproperties=font_prop)  # 旋转X轴刻度标签以防止重叠
plt.yticks(fontproperties=font_prop)  # 设置Y轴刻度标签的字体
plt.tight_layout()  # 自动调整子图参数以适应图形区域

# 调整边距以确保字体不被遮盖
plt.subplots_adjust(left=0.15, bottom=0.2)  # 调整图表的左边距和下边距

# 保存图片
plt.savefig('离场车辆数变化图.png')  # 将图表保存为PNG文件

# 显示图表
plt.show()  # 显示图表

7. 完整代码

以下是完整的代码片段,包含了从读取数据到绘制并保存图表的所有步骤:

import re
import matplotlib.pyplot as plt
from datetime import datetime
import matplotlib.font_manager as fm

# 文件路径
file_paths = ['郑州机场9月14上午原始数据.txt', '郑州机场9月14下午原始数据.txt']

# 初始化数据列表
data = ''

# 读取文件内容
for file_path in file_paths:
    with open(file_path, 'r', encoding='utf-8') as file:
        data += file.read()  # 读取文件中的所有内容并合并

# 正则表达式匹配时间和前半小时离场车辆数
pattern = r"((\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})).*?前半小时离场车辆数为:(\d+) 辆;"
matches = re.findall(pattern, data)  # 使用正则表达式查找所有匹配的模式

# 解析匹配结果
timestamps = [datetime.strptime(match[0], "%Y-%m-%d %H:%M:%S") for match in matches]  # 将匹配到的时间字符串转换为datetime对象
leaving_counts = [int(match[1]) for match in matches]  # 将匹配到的离场车辆数转换为整数

# 设置字体
font_path = 'C:/Windows/Fonts/simhei.ttf'  # 你可以根据需要更改字体路径
font_prop = fm.FontProperties(fname=font_path)  # 创建字体属性对象

# 绘制折线图
plt.figure(figsize=(10, 6))  # 设置图表大小
plt.plot(timestamps, leaving_counts, marker='o', markersize=1, linestyle='-', color='b')  # 绘制折线图,设置节点样式和颜色
plt.title("前半小时离场车辆数随时间的变化", fontproperties=font_prop)  # 设置图表标题
plt.xlabel("时间", fontproperties=font_prop)  # 设置X轴标签
plt.ylabel("前半小时离场车辆数", fontproperties=font_prop)  # 设置Y轴标签
plt.grid(True)  # 显示网格
plt.xticks(rotation=45, fontproperties=font_prop)  # 旋转X轴刻度标签以防止重叠
plt.yticks(fontproperties=font_prop)  # 设置Y轴刻度标签的字体
plt.tight_layout()  # 自动调整子图参数以适应图形区域

# 调整边距以确保字体不被遮盖
plt.subplots_adjust(left=0.15, bottom=0.2)  # 调整图表的左边距和下边距

# 保存图片
plt.savefig('离场车辆数变化图.png')  # 将图表保存为PNG文件

# 显示图表
plt.show()  # 显示图表

通过以上步骤,我们实现了从原始数据文件中提取数据并绘制离场车辆数随时间变化的折线图。这样的方法不仅可以用于分析机场的交通情况,还可以应用于其他类似的数据分析场景。

8. 效果展示

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AutoCAD 2025:探索设计的未来

AutoCAD 2025是Autodesk公司推出的一款最新版本的计算机辅助设计(CAD)软件。作为一名长期使用AutoCAD的用户,我深感这款软件在设计、绘图和建模方面的卓越性能。以下是我对AutoCAD 2025功能的详细介绍以及我的使用体验。 AutoCAD 2025的主要…

Linux学习笔记(二)账户和组

一、基本概念 用 户:用户id,被称为UID 基本组:账户id,被称为GID。用户只能加一个基本组。 0代表超级管理员,root账号。 附加组:用户能加多个基本组。 二、添加账户和组 创建用户名tom,失效…

星间链路与星地链路

目录 一、星间链路 1.1 层内星间链路(Intra-layer ISLs) 1.2 层间星间链路(Inter-layer ISLs) 1.3 实现方式 1.3.1 微波链路 1.3.2 激光链路 二、星地链路 2.1 星地链路的关键特性 2.1.2 Ka信关站 2.1.2 Q/V信关站 2.1…

【uniapp-ios】App端与webview端相互通信的方法以及注意事项

前言 在开发中,使用uniapp开发的项目开发效率是极高的,使用一套代码就能够同时在多端上线,像笔者之前写过的使用Flutter端和webview端之间的相互通信方法和问题,这种方式本质上实际上是h5和h5之间的通信,网上有非常多…

科研绘图系列:R语言分组柱状图一(Grouped Bar Chart)

介绍 分组柱状图(Grouped Bar Chart)是一种数据可视化图表,用于比较不同类别(分组)内各子类别(子组)的数值。在分组柱状图中,每个分组有一组并列的柱子,每个柱子代表一个子组的数值,不同的分组用不同的列来表示。 特点: 并列柱子:每个分组内的柱子是并列的,便于…

【LLM】二、python调用本地的ollama部署的大模型

系列文章目录 往期文章: 【LLM】一、利用ollama本地部署大模型 目录 文章目录 前言 一、ollama库调用 二、langchain调用 三、requests调用 四、相关参数说明: 总结 前言 本地部署了大模型,下一步任务便是如何调用的问题&#xff0c…

科普文:K8S中常见知识点梳理

简单说一下k8s集群内外网络如何互通的 要在 Kubernetes(k8s)集群内外建立网络互通,可以采取以下措施: 使用service: 使用Service类型为NodePort或LoadBalancer的Kubernetes服务。这可以使服务具有一个公共IP地址或端口…

探展2024世界人工智能大会之令人惊艳的扫描黑科技~

文章目录 ⭐️ 前言⭐️ AIGC古籍修复文化遗产焕新⭐️ 高效的文档图像处理解决方案⭐️ AIGC扫描黑科技一键全搞定⭐️ 行业级的知识库大模型加速器⭐️ 结语 ⭐️ 前言 大家好,我是 哈哥(哈哥撩编程),这次非常荣幸受邀作为专业…

基于单片机的太阳能智能追光系统设计

摘 要: 光伏能源是一种发电新能源,具有高清洁度、高再生的特点,在能源紧张的当代其应用价值极高。目前,光伏能源发电主要利用光伏设备来实现,但在初期应用过程中,人们发现,太阳光的移动会决定光…

ElasticSearch学习篇14_《检索技术核心20讲》进阶篇之大倒排索引

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243,文档形式记录笔记。 内容 主要是海量数据的大倒排索引的一些原理设计思想,ES底层就是基于这些设计思想以及原理,主要涉及读写分离、索引分层等…

C++ | Leetcode C++题解之第223题矩形面积

题目: 题解: class Solution { public:int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int area1 (ax2 - ax1) * (ay2 - ay1), area2 (bx2 - bx1) * (by2 - by1);int overlapWidth min(ax2, bx2) - max…

vb.netcad二开自学笔记9:界面之ribbon

一个成熟的软件怎么能没有ribbon呢&#xff0c;在前面的框架基础上再加个命令AddRibbon <CommandMethod("AddRibbon")> Public Sub AddRibbon() Dim ribbonControl As RibbonControl ComponentManager.Ribbon Dim tab As RibbonTab New RibbonTab() tab.Tit…

# 昇思25天学习打卡营第10天 | 使用静态图加速

昇思25天学习打卡营第10天 | 使用静态图加速 文章目录 昇思25天学习打卡营第10天 | 使用静态图加速动态图的开启方式静态图的开启方式基于全局context的开启方式基于修饰器的开启方式 总结打卡 AI编译框架分为两种运行模式&#xff1a; 动态图模式&#xff1a; 计算图的构建和计…

近红外光谱脑功能成像(fNIRS):2.实验设计、指标计算与多重比较

一、实验设计的策略与方法 近红外光谱成像&#xff08;INIRS&#xff09;作为一种非侵入性脑功能成像技术&#xff0c;为研究大脑活动提供了一种高效、生态效度高的方法。然而&#xff0c;为了充分利用INIRS技术并确保实验结果的准确性和可靠性&#xff0c;研究者必须精心设计实…

AGAST (角点检测)

AGAST检测原理 AGAST(Adaptive and Generic Accelerated Segment Test)算法是Elmar于2010年提出的特征检测算法,改进了FAST(Features from Accelerated Segment Test)特征检测方法,使其具有更快的速度和更好的鲁棒性。AGAST算法提供了比FAST算法更详细的特征标记方式和判断依…

DWM 相关实现代码 [自用]

1. DWM 缩略图和模糊隐藏实现半透明 #include <windows.h> #include <dwmapi.h> #include <string> #pragma comment(lib, "dwmapi.lib")// 检查 UWP 窗口是否可见 bool IsUWPWindowVisible(HWND hwnd) {DWORD cloaked 0;DwmGetWindowAttribute(…

matplotlib颜色对照表

matplotlib的色彩设置: #------------------------------------------------------------------------------------------------------------------------------- #-------------------------------------------------------------------------------------------------------…

【linux服务器】大语言模型实战教程:LLMS大模型快速部署到个人服务器

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 说到大语言模型相信大家都不会陌生&#xff0c;大型语言模型(LLMs)是人工智能文本处理的主要类型,也现在最流行的人工智能…

【AI大模型】赋能儿童安全:楼层与室内定位实践与未来发展

文章目录 引言第一章&#xff1a;AI与室内定位技术1.1 AI技术概述1.2 室内定位技术概述1.3 楼层定位的挑战与解决方案 第二章&#xff1a;儿童定位与安全监控的需求2.1 儿童安全问题的现状2.2 智能穿戴设备的兴起 第三章&#xff1a;技术实现细节3.1 硬件设计与选择传感器选择与…

报修小程序论文(设计)开题报告

一、课题的背景和意义 近些年来&#xff0c;随着移动互联网巅峰时期的来临&#xff0c;互联网产业逐渐趋于“小、轻、微”的方向发展&#xff0c;符合轻应用时代特点的各类技术受到了不同领域的广泛关注。在诸多产品中&#xff0c;被誉为“运行着程序的网站”之名的微信小程序…