机场的出租车问题折线图

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

本文将详细介绍如何使用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,一经查实,立即删除!

相关文章

Android C++系列:Linux常用函数和工具

1. 时间函数 1.1 文件访问时间 #include <sys/types.h> #include <utime.h> int utime (const char *name, const struct utimebuf *t); 返回:若成功则为 0,若出错则为- 1如果times是一个空指针,则存取时间和修改时间两者都设置为当前时间; 如果times是非空指针…

一个python文件实现openai 转换请求转换成 ollama

最近在微软开源了GraphRAG,项目&#xff0c;是一个很棒的项目&#xff0c;本着研究学习的态度下载了该项目测试&#xff0c;发现目前只可以使用openai chat gpt,或azure open chat gpt,也就是说意味着资料要上传到第三方网站处理&#xff0c;为了本地的ollama也可以使用特意开发…

轮播图案例

丐版轮播图 <!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title> 基础轮播图 banner 移入移出</t…

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

可参考&#xff1a;基于JavaSpringMvcVue技术的实验室管理系统设计与实现&#xff08;6000字以上论文参考&#xff09;-CSDN博客 论文参考&#xff1a;

【python】字典、列表、集合综合练习

1、练习1(字典) 字典dic,dic {‘k1’:‘v1’, ‘k2’: ‘v2’, ‘k3’: [11,22,33]} (1). 请循环输出所有的key dic {"k1": "v1", "k2": "v2", "k3": [11, 22, 33]} for k in dic.keys():print(k)k1 k2 k3(2). 请循环输…

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

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

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

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

dockerfile里的copy只能使用相对路径吗?

在 Dockerfile 中&#xff0c;COPY 指令既可以使用相对路径&#xff0c;也可以使用绝对路径&#xff08;但绝对路径的使用方式和上下文有关&#xff09;。不过&#xff0c;在实践中&#xff0c;你通常会看到使用相对路径&#xff0c;因为 Dockerfile 的构建上下文&#xff08;b…

NewspaceGPT带你玩系列之【Song Maker】

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

聊一聊Oracle的空间计算函数SDO_NN

网上对这个函数介绍的很少&#xff0c;对使用上也很模糊&#xff0c;我来补充一下&#xff0c;让大家了解一下这个函数 from test1 y, test2 p where SDO_NN(p.geom,y.geom,sdo_num_res1, 0.5 )TRUE; 上面这个表达式的含义也就是说在test2中找到一个距离test1很近的&#x…

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

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

超详细的 Linux 环境下 Anaconda 安装与使用教程

超详细的 Linux 环境下 Anaconda 安装与使用教程 前言 在数据科学和机器学习领域&#xff0c;Anaconda 是一个非常受欢迎的发行版&#xff0c;提供了许多常用的包和工具。本文将详细介绍如何在 Linux 系统上安装和配置 Anaconda 环境&#xff0c;并展示如何高效地使用它。 一…

CentOS7下安装Doris

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

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

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

BaseServlet的封装

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

idea无法实力化id

解决&#xff1a;https://blog.csdn.net/qq_41264674/article/details/83409810?ops_request_misc&request_id&biz_id102&utm_termSerializable%E4%B8%8D%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90%E5%AE%9E%E5%8A%9B%E5%8C%96id&utm_mediumdistribute.pc_search_…

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

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

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

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

IPD流程学习笔记

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

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

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