机场的出租车问题折线图

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

本文将详细介绍如何使用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.mzph.cn/diannao/42945.shtml

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

相关文章

6000字以上论文参考:基于Java+SpringMvc+Vue技术的实验室管理系统设计与实现

可参考:基于JavaSpringMvcVue技术的实验室管理系统设计与实现(6000字以上论文参考)-CSDN博客 论文参考:

2024 WAIC|第四范式胡时伟分享通往AGI之路:行业大模型汇聚成海

7月4日,2024世界人工智能大会(WAIC)正式开幕。此次大会围绕核心技术、智能终端、应用赋能等板块展开,展览规模、参展企业数均达历史最高。第四范式受邀参展,集中展示公司十年来在行业大模型产业应用方面的实践。在当天…

【知网CNKI-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

NewspaceGPT带你玩系列之【Song Maker】

目录 注册一个账号,用qq邮箱,然后登录选一个可用的Plus,不要选3.5探索GPT今天的主角是【Song Maker】翻译一下用汉语吧我写词。你谱曲和其他伴奏,例子: 摇滚,忧伤,吉他,鼓&#xff0…

Android约束布局的概念与属性(1)

目录 1.相对定位约束2.居中和偏移约束 约束布局(ConstraintLayout)是当前Android Studio默认的布局方式,也是最灵活的一种布局方式。约束布局推荐使用所见即所得的模式进行布局,约束布局的大部分布局可以通…

CentOS7下安装Doris

Doris简介 Apache Doris 是一款基于 MPP 架构的高性能、实时的分析型数据库,以高效、简单、统一的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场…

从0到1搭建个性化推送引擎:百数教学带你掌握核心技术

百数低代码的推送提醒功能允许用户高度自定义提醒规则,支持多种提醒方式(如钉钉、企业微信、微信、短信、语音、邮件等),以满足不同场景下的需求。 通过预设字段和模板,用户可以快速编辑提醒内容,减少重复…

BaseServlet的封装

创建BaseServlet的必要性 如果不创建BaseServlet,现在我们只要实现一个功能,我们就需要创建一个servlet! 例如:用户模块(登录,注册,退出录,激活,发送邮件等等功能) 也就是说,我们必须要创建一…

java-数据结构与算法-02-数据结构-03-递归

1. 概述 定义 计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集 In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instances…

IT项目经理转行大模型,项目经理的进来,你想知道的都在这里非常详细

大模型(如人工智能、机器学习和深度学习模型)可以通过提供数据驱动的决策支持、自动化流程和预测分析来赋能IT项目经理。这些工具可以帮助项目经理更有效地管理项目,预测潜在的风险,并提高项目成功的可能性。以下是IT项目经理如何…

IPD流程学习笔记

一、前言 互联网行业讲究的是快速试错,所以IPD流程的应用并不多,但是传统企业数字化转型中,怎么确保项目投入可以切合市场需求,有较好的ROI及落地性,轻量级的IPD还是很有必要了解下的,特别是重资产类的业务…

探讨大数据在视频汇聚平台LntonCVS国标GB28181协议中的应用

随着摄像头和视频监控系统的普及和数字化程度的提高,视频监控系统产生的数据量急剧增加。大数据技术因其优秀的数据管理、分析和利用能力,成为提升视频监控系统效能和价值的重要工具。 大数据技术可以将视频监控数据与其他数据源进行融合分析&#xff0c…

libaom 编码器实验 AV1 标准 SVC 分层编码

SVC编码 视频SVC编码,即Scalable Video Coding(可适性视讯编码或可分级视频编码),是H.264/MPEG-4 AVC编码的一种扩展,它提供了更大的编码弹性,并且具有时间可适性(Temporal Scalability&#x…

【基础算法总结】分治—归并

分治—归并 1.排序数组2.交易逆序对的总数3.计算右侧小于当前元素的个数4.翻转对 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.排序数组 …

NFTScan | 07.01~07.07 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2024.07.01~ 2024.07.07 NFT Hot News 01/ 数据:Mad Lads 地板价回升至 100 SOL 上方,24 小时涨幅为 13.65% 7 月 1 日,据数据显示,Solana…

ARM架构以及程序运行解析

文章目录 1. ARM架构 2. ARM处理器程序运行的过程 3. 示例 3. 基于ARM架构的STM32单片机 1. 运行模式 2. 寄存器组 3. STM32的基本结构 4. STM32的运行模式 4. 寄存器组详解 1. 未备份寄存器 2. 备份寄存器 3. 程序计数器 4. 程序状态寄存器 5. CPSR和SPSR寄存器…

【Unity】UGUI的基本介绍

Unity的UGUI(Unity User Interface)是Unity引擎内自带的UI系统,官方称之为UnityUI,是目前Unity商业游戏开发中使用最广泛的UI系统开发解决方案。以下是关于Unity的UGUI的详细介绍: 一、UGUI的特点 灵活性&#xff1a…

Python 爬虫 tiktok API接口获取tiktok用户关注列表

此接口可获取tiktok用户关注列表。若有需要,请点击文末链接联系我们。 详细采集页面如下https://www.tiktok.com/quanap_official 请求API http://api.xxxx.com/tt/user/following?user_id7252644648840381445&count10&offset0&tokentest 请求参数 返…

改进Transformer模型其实也不难

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 目录 原理简介 数据介绍 结果展示 完整代码 之前…

【学术会议征稿】第五届计算机工程与智能控制学术会议(ICCEIC 2024)

第五届计算机工程与智能控制学术会议(ICCEIC 2024) 2024 5th International Conference on Computer Engineering and Intelligent Control 第五届计算机工程与智能控制学术会议(ICCEIC 2024)将于2024年10月18日至22日在广州举办&#xff0…