機場的出租車問題折線圖

分析并可視化機場離場車輛數數據

本文將詳細介紹如何使用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.pswp.cn/diannao/42945.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42945.shtml
英文地址,請注明出處:http://en.pswp.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…