Python智慧停车场运营分析系统

这篇具有很好参考价值的文章主要介绍了Python智慧停车场运营分析系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

该文章所使用的资料可以私聊获取

该项目小白不用担心,因为全部都有注释,不用担心看不懂 (贴心boy)

所有代码为完整的代码,不用担心(放心)

项目使用的xlse文件(表格部分截图)

if 20<= event.pos[0] and event.pos[0] <= 130 + 170 and 20 <= event.pos[1] an,Python,python,pygame,开发语言

先看完成实现效果(0_0)

if 20<= event.pos[0] and event.pos[0] <= 130 + 170 and 20 <= event.pos[1] an,Python,python,pygame,开发语言

各个按钮实现情况图

if 20<= event.pos[0] and event.pos[0] <= 130 + 170 and 20 <= event.pos[1] an,Python,python,pygame,开发语言

if 20<= event.pos[0] and event.pos[0] <= 130 + 170 and 20 <= event.pos[1] an,Python,python,pygame,开发语言

if 20<= event.pos[0] and event.pos[0] <= 130 + 170 and 20 <= event.pos[1] an,Python,python,pygame,开发语言

if 20<= event.pos[0] and event.pos[0] <= 130 + 170 and 20 <= event.pos[1] an,Python,python,pygame,开发语言

if 20<= event.pos[0] and event.pos[0] <= 130 + 170 and 20 <= event.pos[1] an,Python,python,pygame,开发语言

项目结构

if 20<= event.pos[0] and event.pos[0] <= 130 + 170 and 20 <= event.pos[1] an,Python,python,pygame,开发语言

btn.py文件代码

import pygame

class Button:
    def __init__(self, screen,centerxy,width,height,button_color,text_color,msg,size):
        """
        创建一个按钮对象
        参数:
        screen:pygame.Surface对象,代表屏幕
        centerxy:tuple,代表按钮的中心坐标
        width:int,代表按钮的宽度
        height:int,代表按钮的高度
        button_color:tuple,代表按钮的背景颜色
        text_color:tuple,代表按钮上文字的颜色
        msg:str,代表按钮上显示的文字
        size:int,代表字体的大小
        """
        self.screen = screen  # 设置屏幕属性
        self.width, self.height = width, height  # 设置宽度和高度属性
        self.button_color = button_color  # 设置按钮颜色属性
        self.text_color = text_color  # 设置文字颜色属性
        self.font = pygame.font.SysFont('SimHei', size)  # 设置字体属性
        self.rect = pygame.Rect(0, 0, self.width, self.height)  # 创建一个矩形对象,设置宽度和高度属性
        self.rect.centerx = centerxy[0]  # 设置矩形的中心点x坐标
        self.rect.centery = centerxy[1]  # 设置矩形的中心点y坐标
        self.deal_msg(msg)  # 处理消息方法


    def deal_msg(self,msg):
        """
        处理按钮上的文字图片

        参数:
        msg:str,按钮上显示的文字
        """
        self.msg_img = self.font.render(msg, True, self.text_color)  # 创建一个图像对象,将传入的文本渲染为图像,并设置文字为前景颜色和背景颜色
        self.msg_img = self.font.render(msg, True, self.text_color, self.button_color)  # 创建一个图像对象,将传入的文本渲染为图像,并设置文字为前景颜色和背景颜色
        self.msg_img_rect = self.msg_img.get_rect()  # 创建一个矩形对象,用于表示图像的位置和大小
        self.msg_img_rect.center = self.rect.center  # 设置图像矩形的中心点为父对象矩形的中心点


    def draw_button(self):
        # 绘制按钮背景
        self.screen.fill(self.button_color,self.rect)
        # 绘制按钮文字
        self.screen.blit(self.msg_img,self.msg_img_rect)


import sys  # 导入sys模块,用于退出程序和打印错误信息
import pygame  # 导入pygame模块,用于开发跨平台的电子游戏和多媒体应用程序
import btn  # 导入btn模块,用于处理按钮的相关操作
import TimeUtil  # 导入TimeUtil模块,用于处理时间相关操作

pygame.init()  # 初始化pygame模块
# size = width, height = 320,240  # 设置窗口大小为800x600
size = width, height = 360,240  # 设置窗口大小为800x600

WHITE = (255,255,255)  # 定义白色RGB值
BLUE = (72,61,139)  # 定义蓝色RGB值
screen = pygame.display.set_mode(size)  # 创建一个pygame屏幕对象,并设置屏幕的大小
screen.fill(WHITE)  # 将屏幕填充为白色
while True:
    # button1 = btn.Button(screen, (90, 50), 140, 60, BLUE, WHITE, '关闭窗口', 20)  # 创建一个矩形按钮对象,指定位置、尺寸、颜色、文字颜色、文字内容和文字大小
    # button1.draw_button()  # 绘制按钮

    # 创建按钮1
    btn1 = btn.Button(screen, (90, 50), 140, 60, BLUE, WHITE, '停车时间分布', 20)
    # 绘制按钮1
    btn1.draw_button()

    # 创建按钮2
    btn2 = btn.Button(screen, (90, 130), 140, 60, BLUE, WHITE, '停车高峰时间', 20)
    # 绘制按钮2
    btn2.draw_button()

    # 创建按钮3
    btn3 = btn.Button(screen, (90, 210), 140, 60, BLUE, WHITE, '停车场信息', 20)
    # 绘制按钮3
    btn3.draw_button()

    # 创建按钮4
    btn4 = btn.Button(screen, (250, 50), 140, 60, BLUE, WHITE, '月收入分析', 20)
    # 绘制按钮4
    btn4.draw_button()

    # 创建按钮5
    btn5 = btn.Button(screen, (250, 130), 140, 60, BLUE, WHITE, '接待车辆统计', 20)
    # 绘制按钮5
    btn5.draw_button()

    pygame.display.update()  # 更新屏幕显示
    for event in pygame.event.get():  # 遍历事件列表
        if event.type == pygame.QUIT:  # 如果事件类型是退出窗口
            pygame.quit()  # 退出pygame
            sys.exit()  # 退出程序
        elif event.type == pygame.MOUSEBUTTONDOWN:  # 如果事件类型是鼠标按下

            # 如果鼠标位置在按钮的水平范围内
            if 20 <= event.pos[0] and event.pos[0] <= 90 + 70 and 20 <= event.pos[1] and event.pos[1] <= 50 + 30:

                # sys.exit()  # 退出程序
                TimeUtil.sjfb()
                pass
            elif 20 <= event.pos[0] and event.pos[0] <= 90 + 70  and 100 <= event.pos[1] and event.pos[1] <= 130 + 30:
                TimeUtil.tcgf()
                pass  # 终止当前函数,不做其他操作
            elif 20 <= event.pos[0] and event.pos[0] <= 90 + 70 and 180 <= event.pos[1] and event.pos[1] <= 210 + 30:
                TimeUtil.fmtj()
                pass
            elif 180 <= event.pos[0] and event.pos[0] <= 250 + 70 and 20 <= event.pos[1] and event.pos[1] <= 50 + 30:
                TimeUtil.ysrfx()
                pass
            elif 180 <= event.pos[0] and event.pos[0] <= 250 + 70 and 100 <= event.pos[1] and event.pos[1] <= 130 + 30:
                TimeUtil.cljd()
                pass

TimeUtil.py文件代码

import pandas as pd
import matplotlib.pyplot as plt
import datetime
import matplotlib.ticker as ticker
# 导入pandas库,用于数据处理和分析
# 导入matplotlib.pyplot库,用于数据可视化
# 导入datetime库,用于处理日期和时间相关函数


def get_week_numbeer(date):

    from datetime import datetime
    # 导入datetime模块

    # 将字符串日期转换为datetime对象
    date = datetime.datetime.strptime(date, "%Y-%m-%d %H:%M:%S")

    # 获取日期对应的星期几(0表示星期一,6表示星期日)
    day = date.weekday()

    # 返回星期几的值
    return day


# 停车时间分布图
def sjfb():
# 排除进入停车场未出停车场的车
    # 读取停车场信息表的数据
    pi_data = pd.read_excel("../datafile/停车场信息表.xlsx")

    # 选取timeout不为0的记录
    data = pi_data.loc[pi_data['timeout']!=0]

    # 将timein和timeout列转换为datetime格式
    data['timein']=pd.to_datetime(data['timein'])
    data['timeout']=pd.to_datetime(data['timeout'])

    # 计算停车时间差
    data['h']=data['timeout']-data['timein']

    # 设置停车时间分布图的标题
    plt.title('停车时间分布图')

    # 设置字体样式
    plt.rcParams['font.sans-serif'] = ['FangSong']

    # 分类统计数据
    df1 = data.loc[data['h']<='0 days 01:00:00']
    df2 = data.loc[(data['h']>'0 days 01:00:00') & (data['h']<='0 days 02:00:00')]
    df3 = data.loc[(data['h']>'0 days 02:00:00') & (data['h']<='0 days 03:00:00')]
    df4 = data.loc[(data['h']>'0 days 03:00:00') & (data['h']<='0 days 04:00:00')]
    df5 = data.loc[data['h']>'0 days 04:00:00']

    # 绘制停车时间分类统计图
    x = ['1小时','2小时','3小时','4小时','4小时以上']
    y = [len(df1),len(df2),len(df3),len(df4),len(df5)]
    plt.bar(x, y)

    # 在图中添加每类停车量的标签
    for x, y in enumerate(y):
        plt.text(x, y+20, str(y)+'台', ha='center')

    # 显示图形
    plt.show()

    pass


# 停车高峰期占比
def tcgf():

    # 导入pandas库并读取停车场信息表的Excel文件
    data = pd.read_excel("../datafile/停车场信息表.xlsx")

    # 设置图表标题为'停车高峰期占比'
    plt.title('停车高峰期占比')

    # 设置各类别标签
    labels = ['0-3点' ,'3-6点','6-9点','9-12点','12-15点','15-18点','18-21点','21-00点']

    # 分类统计数据
    # 获取具体时间点为00:00的停车数据
    kk0 = data[(data['timein'].str.contains(' 00:'))]
    # 获取具体时间点为01:00的停车数据
    kk1 = data[(data['timein'].str.contains(' 01:'))]
    # 获取具体时间点为02:00的停车数据
    kk2 = data[(data['timein'].str.contains(' 02:'))]
    # 获取具体时间点为03:00的停车数据
    kk3 = data[(data['timein'].str.contains(' 03:'))]
    # 获取具体时间点为04:00的停车数据
    kk4 = data[(data['timein'].str.contains(' 04:'))]
    # 获取具体时间点为05:00的停车数据
    kk5 = data[(data['timein'].str.contains(' 05:'))]
    # 获取具体时间点为06:00的停车数据
    kk6 = data[(data['timein'].str.contains(' 06:'))]
    # 获取具体时间点为07:00的停车数据
    kk7 = data[(data['timein'].str.contains(' 07:'))]
    # 获取具体时间点为08:00的停车数据
    kk8 = data[(data['timein'].str.contains(' 08:'))]
    # 获取具体时间点为09:00的停车数据
    kk9 = data[(data['timein'].str.contains(' 09:'))]
    # 获取具体时间点为10:00的停车数据
    kk10 = data[(data['timein'].str.contains(' 10:'))]
    # 获取具体时间点为11:00的停车数据
    kk11 = data[(data['timein'].str.contains(' 11:'))]
    # 获取具体时间点为12:00的停车数据
    kk12 = data[(data['timein'].str.contains(' 12:'))]
    # 获取具体时间点为13:00的停车数据
    kk13 = data[(data['timein'].str.contains(' 13:'))]
    # 获取具体时间点为14:00的停车数据
    kk14 = data[(data['timein'].str.contains(' 14:'))]
    # 获取具体时间点为15:00的停车数据
    kk15 = data[(data['timein'].str.contains(' 15:'))]
    # 获取具体时间点为16:00的停车数据
    kk16 = data[(data['timein'].str.contains(' 16:'))]
    # 获取具体时间点为17:00的停车数据
    kk17 = data[(data['timein'].str.contains(' 17:'))]
    # 获取具体时间点为18:00的停车数据
    kk18 = data[(data['timein'].str.contains(' 18:'))]
    # 获取具体时间点为19:00的停车数据
    kk19 = data[(data['timein'].str.contains(' 19:'))]
    # 获取具体时间点为20:00的停车数据
    kk20 = data[(data['timein'].str.contains(' 20:'))]
    # 获取具体时间点为21:00的停车数据
    kk21 = data[(data['timein'].str.contains(' 21:'))]
    # 获取具体时间点为22:00的停车数据
    kk22 = data[(data['timein'].str.contains(' 22:'))]
    # 获取具体时间点为23:00的停车数据
    kk23 = data[(data['timein'].str.contains(' 23:'))]

    # 统计各类别停车数量
    x = [(len(kk0) + len(kk1) + len(kk2)), (len(kk3) + len(kk4) + len(kk5)), (len(kk6) + len(kk7) + len(kk8)), (len(kk9) + len(kk10) + len(kk11)), (len(kk12) + len(kk13) + len(kk14)), (len(kk15) + len(kk16) + len(kk17)), (len(kk18) + len(kk19) + len(kk20)), (len(kk21) + len(kk22) + len(kk23))]

    # 绘制饼图
    # 生成一个饼图
    plt.pie(x, labels=labels, autopct='%1.1f%%')
    # 设置x轴和y轴相等
    plt.axis('equal')
    # 在右上角添加图例,图例的字体大小为10
    plt.legend(loc='upper right', fontsize=10, bbox_to_anchor=(1.1, 0.5), borderaxespad=0.3)
    # 显示图形
    plt.show()

    pass


# 停车星期比
def fmtj():
    # 读取停车场信息表的Excel文件
    data = pd.read_excel("../datafile/停车场信息表.xlsx")

    # 筛选出状态为1的记录
    ds=data.loc[data['state']==1]

    # 复制筛选结果
    ds=ds.copy()

    # 将时间列timein转换为DateTime格式
    ds['timein']=pd.to_datetime(ds['timein'])

    # 统计每周一到周日的停车数量
    ds['timeinweek']=ds['timein'].dt.dayofweek
    ds2=ds.groupby('timeinweek')
    weeksuns=ds2.size()

    # 定义星期的标签
    labels=['星期一','星期二','星期三','星期四','星期五','星期六','星期天']

    # 设置中文字符集为方正字体
    plt.rcParams['font.sans-serif']=['FangSong']

    # 绘制饼图,显示每周停车数量占比
    plt.pie(weeksuns,labels=labels,autopct='%.2f%%')

    # 设置图表标题
    plt.title('停车星期比')

    # 显示图表
    plt.show()

    pass


# 月收入分析
def ysrfx():
    # 读取停车场信息表的Excel文件
    data = pd.read_excel("../datafile/停车场信息表.xlsx")

    # 筛选出state为1的数据
    srdf = data.loc[data['state'] == 1]


    # 筛选出2018年1月的数据
    kk1 = srdf[(srdf['timeout'].str.contains('2018-01'))]

    # 筛选出2018年2月的数据
    kk2 = srdf[(srdf['timeout'].str.contains('2018-02'))]

    # 筛选出2018年3月的数据
    kk3 = srdf[(srdf['timeout'].str.contains('2018-03'))]

    # 计算每个月的收入总和
    price1 = kk1['price'].sum()
    price2 = kk2['price'].sum()
    price3 = kk3['price'].sum()

    # 设置x轴和y轴的标签
    labels_x = ['1月', '2月', '3月']
    y = [price1, price2, price3]

    # 绘制柱状图
    plt.bar(labels_x, y)

    # 在每个柱子上显示具体的数值
    for x, y in enumerate(y):
        plt.text(x, y + 300, str(y) + '元', ha='center')

    # 设置标题和总收入
    plt.title('2018年1月-3月收入分析-总收入:' + str(price1 + price2 + price3) + '元')
    plt.xlabel('月份')
    plt.ylabel('收入')

    # 显示图形
    plt.show()

    pass



#每日接待车辆统计
def cljd():
    # 读取停车场信息表的Excel文件
    data = pd.read_excel("../datafile/停车场信息表.xlsx")

    # 筛选出状态为1的数据
    data = data.loc[data['state']==1]

    # 设置开始日期和结束日期
    iin = '2018-01-01'
    end = '2018-03-31'

    # 使用strptime将字符串转换为时间元组
    dataiin = datetime.datetime.strptime(iin,'%Y-%m-%d')
    dataend = datetime.datetime.strptime(end,'%Y-%m-%d')

    # 初始化x和y列表
    x = []
    y = []

    # 循环遍历日期范围内的每一天
    while dataiin <= dataend:
        # 将时间元组转换为字符串,并将结果添加到x列表中
        x.append(dataiin.strftime('%y-%m-%d'))

        # 统计该日期下车辆的数量,并将结果添加到y列表中
        y.append(len(data[data['timein'].str.contains(dataiin.strftime('%y-%m-%d'))]))

        # 增加一天后继续下一次循环
        dataiin = dataiin + datetime.timedelta(days=1)

    # 设置中文显示格式
    plt.rcParams['font.sans-serif'] = ['SimHei']

    # 绘制折线图
    plt.plot(x,y)

    # 清除刻度标签
    plt.xticks([])

    # 设置图表标题
    plt.title('每日接待车辆统计')

    # 设置x轴标签
    plt.xlabel('2018-01-01到2018-03-31')

    # 显示图形
    plt.show()
    pass

结尾

没什么说的,愿各位代码无bug。

网络乞丐求打赏!(❀_❀)文章来源地址https://www.toymoban.com/news/detail-765422.html

到了这里,关于Python智慧停车场运营分析系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 电梯节能落座-智慧停车场️,电梯不仅可载人也可以载汽车!

    电梯不仅可载人也可以载汽车哦! 在北京市丰台区,有这么一个智慧停车场🅿️ ,共298个停车位,全部智能一体化,简直是“豪华” + “智能” 的象征。 523能源 :小伍,你跑题了... 小伍 :抱歉,抱歉,我对这种【高科技产品】没啥抵抗力,不过话说我们【电梯节能】也

    2024年01月19日
    浏览(27)
  • 分布式I/O应用于智慧停车场的方案介绍

    客户案例背景       目前车位检测技术有磁电技术、超声波技术、红外线技术、图像识别车位技术。考虑到例如电磁干扰、信号干扰等的环境因素影响,通常会采用组合使用的方式进行,如采用 不同的传感器、应用不同的协议 等,以便提高车位检测的准确性和实时性。  

    2024年02月01日
    浏览(24)
  • 基于python停车场管理系统的设计与实现(论文+源码)_kaic

    摘  要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 智能停车场管理系统,主要的模块包括首页、个人中心、用户管理、车位区域管理、车位信息管理、车位租用管理、车位退租管理、系统管理等功

    2024年02月02日
    浏览(31)
  • 停车场收费管理系统/停车场管理系统的设计与实现

    摘  要 ABSTRACT 目   录 第 1 章 绪论 1.1背景及意义 1.2 国内外研究概况 1.3 研究的内容 第2章 相关技术 2.1 JSP技术介绍 2.2 SSM三大框架 2.3 MyEclipse开发环境 2.4 Tomcat服务器 2.5 MySQL数据库 第3章 系统分析 3.1 需求分析 3.2 系统可行性分析 3.2.1技术可行性:技术背景 3.2.2经济可行性

    2024年02月12日
    浏览(40)
  • 共享停车位小程序,微信小程序停车场车位,微信小程序停车场系统毕设作品

      目的 :首先,在社会上“停车难”是一个众所周知的问题,每个小区,每个大厦都有自己的停车场,但是在没有进入停车场之前,我们没办法知道是否有空车位,空车位在哪个地方。为了解决这个问题我们打算做一个停车场车位预约小程序,来解决车主在进入停车场之前了

    2024年02月08日
    浏览(59)
  • 停车场收费系统

        1.1 AppServe集成应用     Mysql:MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。该数据库系统是由瑞典的 MySQL AB 公司开发、发布并支持,由 MySQL 的初始开发人员 David Axmark 和 Michael Monty Widenius 于 1995 年建立的。     Php:PHP是

    2024年02月03日
    浏览(74)
  • 停车场管理系统

    开发   以下为停车场管理系统的代码:   首先定义Car类,记录车辆信息:   ```java public class Car {     private String plateNumber;  // 车牌号     private long enterTime;  // 进入停车场时间     private long exitTime;  // 离开停车场时间       public Car(String plateNumber, long enterTime) {      

    2024年02月09日
    浏览(31)
  • SV-6002T-P 网络对讲求助终端,立柱式智慧城市网络对讲求助终端,停车场出入口一键求助终端

    描述: SV-6002T是深圳锐科达电子有限公司的一款新型立柱型室外防水一键求助对讲终端,具有10/100M以太网接口,其接收网络的音频数据,实时解码播放,还配置了麦克风输入和扬声器输出。SV-6002T可实现对讲、广播、监听等功能,作为网络广播对讲系统的终端,可用于需要对

    2024年02月09日
    浏览(32)
  • C#停车场管理系统

    现如今随着经济的发展, 私家车越来越多, 系统管理停车场变得尤为重要。所以我写了这个系统用来系统化的管理停车场的车辆的停入、驶出和计费,停车位的使用情况,停车证件的信息管理以及工作员工的信息管理,使得停车场的管理可以变的更加的方便快捷和人性化。

    2024年02月07日
    浏览(36)
  • 停车场管理系统(C++)

    大二写的肯定会有很多很多很多缺点~希望大佬们能指出~给大家提供一个可以改的一个小东西,改成其他的什么什么也是可以的~有bug在评论区里说一下~952行~基本重要的都有注释~ 本“项目”实现了: 1.大中小车型分类 2.进场候车道 3.时间的自动提取 4.车牌的判定 5.查询、进车

    2024年01月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包