姜一波,李方方
(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文件,将文件中的数据信息进行统计分析并绘制可视化图形。停车时间数据分布和月收入分析采用柱状图展示,停车高峰时间占比和每周繁忙比例采用饼图展示,每日接待数量和车位使用率采用折线图展示。
本文主要是对停车场内的数据进行整理分析并对分析结果进行可视化展示。本系统的实现,能够帮助停车场管理者直观了解整个停车场内的运营状况,有利于停车场的运营调整。
本系统最大的不足就是数据的来源问题,停车场运营分析所需要的数据涉及了车牌号及进出停车场时间等敏感信息,无法在网络上获取到公开的有用数据。本系统使用的数据是通过程序进行虚拟的,不能表现数据分析结果的差异,无法对分析结果进行真实的参考。
后续如果能够获取到公开有效的真实数据,那么本系统就突破了一个难点,赋予了分析结果真实性,今后本系统的界面也可以进行优化,提高用户使用体验,增加更多数据分析功能,展示更多的分析结果,不断对系统进行完善。