姜一波,李方方
(1.南京城市職業學院,江蘇 南京 211200; 2.南京信息職業技術學院,江蘇 南京 210043)
近年來,汽車在人群中的普及率直線上升,我國一些大中型城市汽車數量激增,私家小汽車的數量在機動車總數中占據絕大多數。目前,經濟發展迅速,城市用地緊張,車多位少的矛盾每天都在上演。市民出行后,車輛無處可停,這一問題也得到了許多城市建設者的重視,但是仍然發現在一些停車場內,有很多車位得不到有效使用,車位閑置情況不容樂觀。現在,人工智能產業蓬勃發展,日常生活中隨處可見智能化標簽,智能停車場的出現緩解了停車場不能有效運營的問題[1]。由于停車場內每天的流量過大, 運營人員在停車場的管理上出現了很多的問題,車位數量多,造成車位使用混亂,停車時間點復雜,不能合理有效安排人員調控,停車場的管理人員需要整天疲于應付停車管理問題。不僅如此,對于每月的運營情況,管理者也不能直觀地獲取,大量的數據荒廢流失。針對這種情況,本文設計開發了一款智能停車場運營分析平臺[2]。
智能停車場運營分析平臺使用PyCharm開發,編程語言采用Python,數據處理使用Pandas模塊,可視化的效果圖使用Matplotlib模塊進行展示,使用Excel存儲數據。
本系統的開發從停車場管理系統的使用價值和經濟利益出發,通過數據分析手段的應用,發現隱藏在數據信息背后的潛在規律[3-5]。本系統是一個智能停車場運營分析平臺,通過對停車數據表中的車牌號碼、車輛進出時間、停車費用、車輛進出的狀態、空余車的位數量字段數據進行分析,得到智能停車場中停車高峰時間、接待車輛統計、每周繁忙統計以及車位的利用率的分析結果,并將結果以圖表的形式進行展示,以實現基本功能,能夠滿足用戶的使用需求。設計本系統的目的在于提高停車管理的效率,減輕工作人員的負擔,便于管理者對停車場運營方式的調控,提高停車場管理效率。
為了解決現在運營管理者無法有效對停車場運營管理的難題,該系統在進行了充分的需求分析后,設計出了一個可視化的智能停車場運營分析平臺。經過研究現有的開發平臺和技術,最終考慮應用Python中的Pandas和Matplotlib模塊實現停車場數據的處理分析,使用Pygame模塊對系統窗口進行設計,不斷學習,設計并美化窗口界面和功能,研究框架和算法,對停車場所收集的數據信息進行分析并將統計結果通過可視化圖表的方式顯示在窗體中,對系統進行測試并進行維護。本系統主要設計以下功能:(1)停車時間的分布情況;(2)停車高峰的時間統計;(3)每周繁忙的比例;(4)月收入分析;(5)每日接待車輛的統計;(6)車位利用率的統計。
系統主要分為3層:表示層、業務邏輯層、數據訪問層。表示層將分析結果進行展示,為用戶提供頁面交互的功能,業務邏輯層進行數據操作,并將數據分析結果作為文件提供給數據訪問層,以實際情況進行考慮,本系統的數據以Excel文件形式保存。系統架構如圖1所示。

圖1 系統架構
本系統中的數據主要是為了支撐數據分析這一功能,涉及的數據較為隱蔽。采用虛擬數據進行分析,在生成數據時,主要擬定了索引、車輛狀態、車牌號碼、車輛進入時間、車輛駛出時間、停車所交費用、空余車位數量等字段。其中,車輛狀態數據為1時,表示車輛駛出并已繳費;車輛狀態數據為0時,表示車輛尚未駛離停車場。本次用于分析的自擬數據全部符合字段的規范要求。
本系統中的數據是根據后期編寫的代碼自動生成的,因此是虛擬數據,共生成了從2021年1月1日-2021年3月31日這3個月的數據,數據表中共有6 910條數據,設計了如下幾個字段:cn(車牌號碼)、timein(車輛進入停車場時間)、timeout(車輛駛出停車場時間)、price(停車所交費用)、state(車輛狀態標記)、rps(當前空余車位數量)。為了系統能夠更流暢地運行,本文定義了單獨的用于生成數據的項目DataCarDate。
本次開始時間為2021-01-01 00:00:00,結束時間為2021-04-01 00:00:00。根據時間戳循環時間,設置更新數據概率1/600。如果第一次插入進車數據,則不對車牌號進行重復判斷,直接插入時間、車牌號、進車標識、價格0以及當前剩余車位數。如果不是第一次插入進車數據,要對車牌號進行遍歷,判斷車牌號是否重復,執行出車程序時,將文檔中的隨機一個車牌號進行出車處理,插入數據時間、車牌號、出車標識、收入價格、當前剩余車位數,更新數據文檔。
在多數情況下,采集的數據不能直接使用,因為其中包括的很多數據是不一致的,直接分析,得不到準確結果,所以在實現系統前,應該先對數據進行預處理,再進行數據分析。Pandas是首選庫,本系統數據放在Excel,利用Pandas的read_excel()方法獲取Excel中的數據,但是數據本身比較混亂。因此,應該先觀察停車場的數據結構,找到數據中的規律,然后依照發現的規律進行數據分析。本系統在分析數據結構時,先讀取文件然后將文件頭部信息打印出來,發現數據結構規律。數據分析功能主要包括以下內容。
3.2.1 停車時間數據分析
實現停車時間數據分布功能前,首先要清楚使用哪種方式來判斷停車時間,通過觀察分析停車場數據表格的頭部信息,可以了解到該停車場中計費方式為每小時3元。因此,可以通過停車費用來判斷停車時間。根據此規律,可以將所需分析的停車時間劃分為1小時、2小時、3~5小時、6~10小時、11~12小時以及停車時間超過12小時的停車數量,根據統計結果繪制圖表。
3.2.2 停車高峰時間分析
在實現分析停車高峰時間所占比例時,需要先將每個時間段的停車數據單獨獲取,但是有很多車輛并不是整時進出。因此,存在很多零散數據,比如00:59說明該時間在1點鐘以內,1:59是2點鐘以內的范圍,如果說需要獲取0~3點的停車數據,需要將00、01、02開頭的數據獲取,然后統計數據長度即可得到該時間內的停車數量,最后根據各時間段的停車數量就可以分析出各時間段停車所占比例,即分析出了停車高峰時間。
3.2.3 每周繁忙比例
每周繁忙比例主要是用來分析周一至周日每天的繁忙比例,因此,此功能需要對周一至周日的所有數據進行分別統計,定義fmbi()方法,首先獲取數據表中所有rps即車位剩余列為0的所有數據,然后將數據轉換為列表,循環數據列表來判斷數據是星期幾。
3.2.4 月收入分析
在進行停車場的月收入分析時,需要先篩選每個月的停車數據,通過sum()函數來計算每個月的總收入,再將每個的收入進行累加,獲得該時間段內停車場的總收入。創建ysrfx()方法,根據月份篩選數據,根據篩選結果對price列進行累加計算。
3.2.5 每日接待車輛統計
每日接待車輛統計需要對每一天的數據進行分析,循環遍歷2021-01-01至2021-03-31每天的數據,然后根據日期統計停車數量,創建cljd()方法,獲取列表中stat為1即車輛狀態為出停車場的數據,使用datetime.strptime轉換時間類型,對日期進行循環,判斷離開停車場的車輛數量。
3.2.6 車位利用率統計
車位利用率統計與每日接待車輛統計方法類似,需要從2021-01-01循環至2021-03-31,用停車場車位總數減去剩余車位數量的平均值,然后進行百分比格式化,創建lyl()方法,獲取state列值為1的行,對日期進行循環,獲取當前日期出庫車輛數量,計算每天的車位使用率。
數據可視化是數據分析的重要部分,使用圖形化的方式,清晰直觀有效地傳達數據分析后的有效信息,Matplotlib模塊可以繪制多種樣式的可視化圖表,常見的有折線圖、柱狀圖、條形圖等。本系統中使用Matplotlib模塊進行繪制圖表。本系統對數據中的車牌號碼、車輛進出時間、停車費用、空余車位數量等數據進行提取,將信息存在json文件,將文件中的數據信息進行統計分析并繪制可視化圖形。停車時間數據分布和月收入分析采用柱狀圖展示,停車高峰時間占比和每周繁忙比例采用餅圖展示,每日接待數量和車位使用率采用折線圖展示。
本文主要是對停車場內的數據進行整理分析并對分析結果進行可視化展示。本系統的實現,能夠幫助停車場管理者直觀了解整個停車場內的運營狀況,有利于停車場的運營調整。
本系統最大的不足就是數據的來源問題,停車場運營分析所需要的數據涉及了車牌號及進出停車場時間等敏感信息,無法在網絡上獲取到公開的有用數據。本系統使用的數據是通過程序進行虛擬的,不能表現數據分析結果的差異,無法對分析結果進行真實的參考。
后續如果能夠獲取到公開有效的真實數據,那么本系統就突破了一個難點,賦予了分析結果真實性,今后本系統的界面也可以進行優化,提高用戶使用體驗,增加更多數據分析功能,展示更多的分析結果,不斷對系統進行完善。