姜一波,李方方
(1.南京城市職業(yè)學(xué)院,江蘇 南京 211200; 2.南京信息職業(yè)技術(shù)學(xué)院,江蘇 南京 210043)
近年來,汽車在人群中的普及率直線上升,我國一些大中型城市汽車數(shù)量激增,私家小汽車的數(shù)量在機(jī)動車總數(shù)中占據(jù)絕大多數(shù)。目前,經(jīng)濟(jì)發(fā)展迅速,城市用地緊張,車多位少的矛盾每天都在上演。市民出行后,車輛無處可停,這一問題也得到了許多城市建設(shè)者的重視,但是仍然發(fā)現(xiàn)在一些停車場內(nèi),有很多車位得不到有效使用,車位閑置情況不容樂觀。現(xiàn)在,人工智能產(chǎn)業(yè)蓬勃發(fā)展,日常生活中隨處可見智能化標(biāo)簽,智能停車場的出現(xiàn)緩解了停車場不能有效運(yùn)營的問題[1]。由于停車場內(nèi)每天的流量過大, 運(yùn)營人員在停車場的管理上出現(xiàn)了很多的問題,車位數(shù)量多,造成車位使用混亂,停車時間點(diǎn)復(fù)雜,不能合理有效安排人員調(diào)控,停車場的管理人員需要整天疲于應(yīng)付停車管理問題。不僅如此,對于每月的運(yùn)營情況,管理者也不能直觀地獲取,大量的數(shù)據(jù)荒廢流失。針對這種情況,本文設(shè)計開發(fā)了一款智能停車場運(yùn)營分析平臺[2]。
智能停車場運(yùn)營分析平臺使用PyCharm開發(fā),編程語言采用Python,數(shù)據(jù)處理使用Pandas模塊,可視化的效果圖使用Matplotlib模塊進(jìn)行展示,使用Excel存儲數(shù)據(jù)。
本系統(tǒng)的開發(fā)從停車場管理系統(tǒng)的使用價值和經(jīng)濟(jì)利益出發(fā),通過數(shù)據(jù)分析手段的應(yīng)用,發(fā)現(xiàn)隱藏在數(shù)據(jù)信息背后的潛在規(guī)律[3-5]。本系統(tǒng)是一個智能停車場運(yùn)營分析平臺,通過對停車數(shù)據(jù)表中的車牌號碼、車輛進(jìn)出時間、停車費(fèi)用、車輛進(jìn)出的狀態(tài)、空余車的位數(shù)量字段數(shù)據(jù)進(jìn)行分析,得到智能停車場中停車高峰時間、接待車輛統(tǒng)計、每周繁忙統(tǒng)計以及車位的利用率的分析結(jié)果,并將結(jié)果以圖表的形式進(jìn)行展示,以實(shí)現(xiàn)基本功能,能夠滿足用戶的使用需求。設(shè)計本系統(tǒng)的目的在于提高停車管理的效率,減輕工作人員的負(fù)擔(dān),便于管理者對停車場運(yùn)營方式的調(diào)控,提高停車場管理效率。
為了解決現(xiàn)在運(yùn)營管理者無法有效對停車場運(yùn)營管理的難題,該系統(tǒng)在進(jìn)行了充分的需求分析后,設(shè)計出了一個可視化的智能停車場運(yùn)營分析平臺。經(jīng)過研究現(xiàn)有的開發(fā)平臺和技術(shù),最終考慮應(yīng)用Python中的Pandas和Matplotlib模塊實(shí)現(xiàn)停車場數(shù)據(jù)的處理分析,使用Pygame模塊對系統(tǒng)窗口進(jìn)行設(shè)計,不斷學(xué)習(xí),設(shè)計并美化窗口界面和功能,研究框架和算法,對停車場所收集的數(shù)據(jù)信息進(jìn)行分析并將統(tǒng)計結(jié)果通過可視化圖表的方式顯示在窗體中,對系統(tǒng)進(jìn)行測試并進(jìn)行維護(hù)。本系統(tǒng)主要設(shè)計以下功能:(1)停車時間的分布情況;(2)停車高峰的時間統(tǒng)計;(3)每周繁忙的比例;(4)月收入分析;(5)每日接待車輛的統(tǒng)計;(6)車位利用率的統(tǒng)計。
系統(tǒng)主要分為3層:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。表示層將分析結(jié)果進(jìn)行展示,為用戶提供頁面交互的功能,業(yè)務(wù)邏輯層進(jìn)行數(shù)據(jù)操作,并將數(shù)據(jù)分析結(jié)果作為文件提供給數(shù)據(jù)訪問層,以實(shí)際情況進(jìn)行考慮,本系統(tǒng)的數(shù)據(jù)以Excel文件形式保存。系統(tǒng)架構(gòu)如圖1所示。
圖1 系統(tǒng)架構(gòu)
本系統(tǒng)中的數(shù)據(jù)主要是為了支撐數(shù)據(jù)分析這一功能,涉及的數(shù)據(jù)較為隱蔽。采用虛擬數(shù)據(jù)進(jìn)行分析,在生成數(shù)據(jù)時,主要擬定了索引、車輛狀態(tài)、車牌號碼、車輛進(jìn)入時間、車輛駛出時間、停車所交費(fèi)用、空余車位數(shù)量等字段。其中,車輛狀態(tài)數(shù)據(jù)為1時,表示車輛駛出并已繳費(fèi);車輛狀態(tài)數(shù)據(jù)為0時,表示車輛尚未駛離停車場。本次用于分析的自擬數(shù)據(jù)全部符合字段的規(guī)范要求。
本系統(tǒng)中的數(shù)據(jù)是根據(jù)后期編寫的代碼自動生成的,因此是虛擬數(shù)據(jù),共生成了從2021年1月1日-2021年3月31日這3個月的數(shù)據(jù),數(shù)據(jù)表中共有6 910條數(shù)據(jù),設(shè)計了如下幾個字段:cn(車牌號碼)、timein(車輛進(jìn)入停車場時間)、timeout(車輛駛出停車場時間)、price(停車所交費(fèi)用)、state(車輛狀態(tài)標(biāo)記)、rps(當(dāng)前空余車位數(shù)量)。為了系統(tǒng)能夠更流暢地運(yùn)行,本文定義了單獨(dú)的用于生成數(shù)據(jù)的項目DataCarDate。
本次開始時間為2021-01-01 00:00:00,結(jié)束時間為2021-04-01 00:00:00。根據(jù)時間戳循環(huán)時間,設(shè)置更新數(shù)據(jù)概率1/600。如果第一次插入進(jìn)車數(shù)據(jù),則不對車牌號進(jìn)行重復(fù)判斷,直接插入時間、車牌號、進(jìn)車標(biāo)識、價格0以及當(dāng)前剩余車位數(shù)。如果不是第一次插入進(jìn)車數(shù)據(jù),要對車牌號進(jìn)行遍歷,判斷車牌號是否重復(fù),執(zhí)行出車程序時,將文檔中的隨機(jī)一個車牌號進(jìn)行出車處理,插入數(shù)據(jù)時間、車牌號、出車標(biāo)識、收入價格、當(dāng)前剩余車位數(shù),更新數(shù)據(jù)文檔。
在多數(shù)情況下,采集的數(shù)據(jù)不能直接使用,因?yàn)槠渲邪ǖ暮芏鄶?shù)據(jù)是不一致的,直接分析,得不到準(zhǔn)確結(jié)果,所以在實(shí)現(xiàn)系統(tǒng)前,應(yīng)該先對數(shù)據(jù)進(jìn)行預(yù)處理,再進(jìn)行數(shù)據(jù)分析。Pandas是首選庫,本系統(tǒng)數(shù)據(jù)放在Excel,利用Pandas的read_excel()方法獲取Excel中的數(shù)據(jù),但是數(shù)據(jù)本身比較混亂。因此,應(yīng)該先觀察停車場的數(shù)據(jù)結(jié)構(gòu),找到數(shù)據(jù)中的規(guī)律,然后依照發(fā)現(xiàn)的規(guī)律進(jìn)行數(shù)據(jù)分析。本系統(tǒng)在分析數(shù)據(jù)結(jié)構(gòu)時,先讀取文件然后將文件頭部信息打印出來,發(fā)現(xiàn)數(shù)據(jù)結(jié)構(gòu)規(guī)律。數(shù)據(jù)分析功能主要包括以下內(nèi)容。
3.2.1 停車時間數(shù)據(jù)分析
實(shí)現(xiàn)停車時間數(shù)據(jù)分布功能前,首先要清楚使用哪種方式來判斷停車時間,通過觀察分析停車場數(shù)據(jù)表格的頭部信息,可以了解到該停車場中計費(fèi)方式為每小時3元。因此,可以通過停車費(fèi)用來判斷停車時間。根據(jù)此規(guī)律,可以將所需分析的停車時間劃分為1小時、2小時、3~5小時、6~10小時、11~12小時以及停車時間超過12小時的停車數(shù)量,根據(jù)統(tǒng)計結(jié)果繪制圖表。
3.2.2 停車高峰時間分析
在實(shí)現(xiàn)分析停車高峰時間所占比例時,需要先將每個時間段的停車數(shù)據(jù)單獨(dú)獲取,但是有很多車輛并不是整時進(jìn)出。因此,存在很多零散數(shù)據(jù),比如00:59說明該時間在1點(diǎn)鐘以內(nèi),1:59是2點(diǎn)鐘以內(nèi)的范圍,如果說需要獲取0~3點(diǎn)的停車數(shù)據(jù),需要將00、01、02開頭的數(shù)據(jù)獲取,然后統(tǒng)計數(shù)據(jù)長度即可得到該時間內(nèi)的停車數(shù)量,最后根據(jù)各時間段的停車數(shù)量就可以分析出各時間段停車所占比例,即分析出了停車高峰時間。
3.2.3 每周繁忙比例
每周繁忙比例主要是用來分析周一至周日每天的繁忙比例,因此,此功能需要對周一至周日的所有數(shù)據(jù)進(jìn)行分別統(tǒng)計,定義fmbi()方法,首先獲取數(shù)據(jù)表中所有rps即車位剩余列為0的所有數(shù)據(jù),然后將數(shù)據(jù)轉(zhuǎn)換為列表,循環(huán)數(shù)據(jù)列表來判斷數(shù)據(jù)是星期幾。
3.2.4 月收入分析
在進(jìn)行停車場的月收入分析時,需要先篩選每個月的停車數(shù)據(jù),通過sum()函數(shù)來計算每個月的總收入,再將每個的收入進(jìn)行累加,獲得該時間段內(nèi)停車場的總收入。創(chuàng)建ysrfx()方法,根據(jù)月份篩選數(shù)據(jù),根據(jù)篩選結(jié)果對price列進(jìn)行累加計算。
3.2.5 每日接待車輛統(tǒng)計
每日接待車輛統(tǒng)計需要對每一天的數(shù)據(jù)進(jìn)行分析,循環(huán)遍歷2021-01-01至2021-03-31每天的數(shù)據(jù),然后根據(jù)日期統(tǒng)計停車數(shù)量,創(chuàng)建cljd()方法,獲取列表中stat為1即車輛狀態(tài)為出停車場的數(shù)據(jù),使用datetime.strptime轉(zhuǎn)換時間類型,對日期進(jìn)行循環(huán),判斷離開停車場的車輛數(shù)量。
3.2.6 車位利用率統(tǒng)計
車位利用率統(tǒng)計與每日接待車輛統(tǒng)計方法類似,需要從2021-01-01循環(huán)至2021-03-31,用停車場車位總數(shù)減去剩余車位數(shù)量的平均值,然后進(jìn)行百分比格式化,創(chuàng)建lyl()方法,獲取state列值為1的行,對日期進(jìn)行循環(huán),獲取當(dāng)前日期出庫車輛數(shù)量,計算每天的車位使用率。
數(shù)據(jù)可視化是數(shù)據(jù)分析的重要部分,使用圖形化的方式,清晰直觀有效地傳達(dá)數(shù)據(jù)分析后的有效信息,Matplotlib模塊可以繪制多種樣式的可視化圖表,常見的有折線圖、柱狀圖、條形圖等。本系統(tǒng)中使用Matplotlib模塊進(jìn)行繪制圖表。本系統(tǒng)對數(shù)據(jù)中的車牌號碼、車輛進(jìn)出時間、停車費(fèi)用、空余車位數(shù)量等數(shù)據(jù)進(jìn)行提取,將信息存在json文件,將文件中的數(shù)據(jù)信息進(jìn)行統(tǒng)計分析并繪制可視化圖形。停車時間數(shù)據(jù)分布和月收入分析采用柱狀圖展示,停車高峰時間占比和每周繁忙比例采用餅圖展示,每日接待數(shù)量和車位使用率采用折線圖展示。
本文主要是對停車場內(nèi)的數(shù)據(jù)進(jìn)行整理分析并對分析結(jié)果進(jìn)行可視化展示。本系統(tǒng)的實(shí)現(xiàn),能夠幫助停車場管理者直觀了解整個停車場內(nèi)的運(yùn)營狀況,有利于停車場的運(yùn)營調(diào)整。
本系統(tǒng)最大的不足就是數(shù)據(jù)的來源問題,停車場運(yùn)營分析所需要的數(shù)據(jù)涉及了車牌號及進(jìn)出停車場時間等敏感信息,無法在網(wǎng)絡(luò)上獲取到公開的有用數(shù)據(jù)。本系統(tǒng)使用的數(shù)據(jù)是通過程序進(jìn)行虛擬的,不能表現(xiàn)數(shù)據(jù)分析結(jié)果的差異,無法對分析結(jié)果進(jìn)行真實(shí)的參考。
后續(xù)如果能夠獲取到公開有效的真實(shí)數(shù)據(jù),那么本系統(tǒng)就突破了一個難點(diǎn),賦予了分析結(jié)果真實(shí)性,今后本系統(tǒng)的界面也可以進(jìn)行優(yōu)化,提高用戶使用體驗(yàn),增加更多數(shù)據(jù)分析功能,展示更多的分析結(jié)果,不斷對系統(tǒng)進(jìn)行完善。