0


python智慧交通数据分析系统 时间序列预测算法 爬虫 出行速度预测 拥堵预测 大数据 毕业设计(源码)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏)

毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、项目介绍

技术栈:
Python语言、Flask框架、requests爬虫、sqlite数据库、时间序列预测fbprophet库、预测出行速度、拥堵预测、HTML

本课题通过网络爬虫技术采集高德地图提供的一个交通情报和路况报告网站,获取交通拥堵情况、路况状况数据,为系统的搭建提供了夯实的基础。使用Python语言对数据进行采集,使用pycharm内嵌的sqlite数据库对数据进行存储;采用时间序列预测算法,对各城市的出行速度进行预测。通过使用直观的可视化工具,如图表、地图等,系统可以将数据结果以更易理解的方式呈现给用户。同时,系统可能提供友好的用户界面,使用户能够方便地输入选项,并进行交互式的数据分析。

2、项目界面

(1)智慧交通数据

在这里插入图片描述

(2)广州大数据智慧交通数据分析大屏

在这里插入图片描述

(3)北京大数据智慧交通数据分析大屏

在这里插入图片描述

(4)出行速度预测分析

在这里插入图片描述

(5)拥堵系数预测

在这里插入图片描述

(6)注册登录界面

在这里插入图片描述

(7)后台数据管理

在这里插入图片描述

3、项目说明

本课题通过网络爬虫技术采集高德地图提供的一个交通情报和路况报告网站,获取交通拥堵情况、路况状况数据,为系统的搭建提供了夯实的基础。使用Python语言对数据进行采集,使用pycharm内嵌的sqlite数据库对数据进行存储;采用时间序列预测算法,对各城市的出行速度进行预测。通过使用直观的可视化工具,如图表、地图等,系统可以将数据结果以更易理解的方式呈现给用户。同时,系统可能提供友好的用户界面,使用户能够方便地输入选项,并进行交互式的数据分析。本课题主要分为以下六个模块:
1、数据获取
使用Python网络爬虫技术结合requests爬虫框架采集高德地图提供的一个交通情报和路况报告网站,获取交通拥堵情况、路况状况数据。
2、注册登录
用户必须先进行注册,输入用户名、密码进行注册,系统根据账号密码查询数据库进行验证,重复注册系统会提示用户已存在。
3、北京交通数据分析可视化
系统对采集的北京交通数据进行分析与可视化展示,包括:各个行政区的最新拥堵系数、拥堵情况变化、拥堵系数变化、出行速度情况等等指标。
4、广州交通数据分析可视化
系统对采集的广州交通数据进行分析与可视化展示,包括:各个行政区的最新拥堵系数、拥堵情况变化、拥堵系数变化、出行速度情况等等指标。
5、出行速度预测
本文使用了时间序列预测算法,对各城市的出行速度进行预测。
6、后台数据管理
系统开发了数据后台管理,管理员可以登录账号进入后台数据管理界面,对采集的数据进行增删改查,对前台注册的用户进行管理和权限设置。

在这里插入图片描述

4、核心代码

# !/usr/bin/env python# _*_ coding: utf-8 _*_from flask import Flask, request, render_template,jsonify,abort,session,redirect, url_for
import os
import models
from models import app
import time
from sqlalchemy import or_,and_
import pandas
import datetime
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView

app = Flask(__name__)# 配置sqlite数据库
app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///transportation.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False

app.secret_key ='a_secret_key'
db = SQLAlchemy(app)# 初始化Flask Admin
admin = Admin(app, name='后台管理')@app.route('/', methods=['GET','POST'])@app.route('/index', methods=['GET','POST'])defindex():#主页
    uuid = session.get('uuid')#获取session的数据,判断是否登录,如未登录跳转到登录页if uuid:ifnot models.User.query.get(uuid):return redirect(url_for('login'))else:
            username = models.User.query.get(uuid).name
    else:return redirect(url_for('login'))if request.method =='GET':
        results = models.Transportation.query.all()return render_template('index.html',**locals())@app.route('/yuce', methods=['GET','POST'])defyuce():if request.method =='GET':
        result =list(set([str(i.city)+'-'+str(i.city_proper)for i in models.Transportation.query.all()]))
        result.sort()
        name = request.args.get('name','广州-天河区')print(name)
        name = name.split('-')[-1]
        datas = yuce1(name)print(datas)
        riqi =[i['riqi']for i in datas]
        piaofang =[round(i['xisu'],2)for i in datas]return render_template('yuce.html',**locals())@app.route('/yuce_prophet', methods=['GET','POST'])defyuce_prophet():if request.method =='GET':
        result =list(set([str(i.city)+'-'+str(i.city_proper)for i in models.Transportation.query.all()]))
        result.sort()
        name = request.args.get('name','广州-天河区')print(name)
        name = name.split('-')[-1]
        datas = yuce2(name)print(datas)return render_template('yuce_prophet.html',**locals())@app.route('/gz_charts', methods=['GET','POST'])defgz_charts():#主页
    uuid = session.get('uuid')#获取session的数据,判断是否登录,如未登录跳转到登录页if uuid:ifnot models.User.query.get(uuid):return redirect(url_for('login'))else:
            username = models.User.query.get(uuid).name
    else:return redirect(url_for('login'))if request.method =='GET':

        sql_command ='select * from Transportation '
        df = pandas.read_sql(sql_command, models.db.engine)
        datas = df[df['城市'].map(lambda xx:xx =='广州')]

        city_propers =list(set([i[2]for i in datas.values.tolist()]))
        city_propers.sort()
        map_data =[]for resu in city_propers:
            reslut = datas[datas['城区'].map(lambda xx: xx == resu)].values.tolist()
            map_data.append({"name": resu,"value": reslut[-1][4]})print(map_data)#最新拥堵系数
        city_proper_name =[]
        city_proper_index =[]for resu in city_propers:
            reslut = datas[datas['城区'].map(lambda xx: xx == resu)].values.tolist()
            city_proper_name.append(resu)
            city_proper_index.append(reslut[-1][3])#天河区拥堵情况变化
        tianhe_names =[]
        tianhe_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='天河区')]

        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))

        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            tianhe_names.append(resu)
            tianhe_count.append(resu1[0][4])#荔湾区拥堵系数变化
        liwan_names =[]
        liwan_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='荔湾区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            liwan_names.append(resu)
            liwan_count.append(resu1[0][3])#越秀区拥堵情况变化
        yuexiu_names =[]
        yuexiu_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='越秀区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            yuexiu_names.append(resu)
            yuexiu_count.append(resu1[0][4])return render_template('gz_daping.html',**locals())@app.route('/cq_charts', methods=['GET','POST'])defcq_charts():#主页
    uuid = session.get('uuid')#获取session的数据,判断是否登录,如未登录跳转到登录页if uuid:ifnot models.User.query.get(uuid):return redirect(url_for('login'))else:
            username = models.User.query.get(uuid).name
    else:return redirect(url_for('login'))if request.method =='GET':

        sql_command ='select * from Transportation '
        df = pandas.read_sql(sql_command, models.db.engine)
        datas = df[df['城市'].map(lambda xx:xx =='重庆')]

        city_propers =list(set([i[2]for i in datas.values.tolist()]))
        city_propers.sort()
        map_data =[]for resu in city_propers:
            reslut = datas[datas['城区'].map(lambda xx: xx == resu)].values.tolist()
            map_data.append({"name": resu,"value": reslut[-1][4]})print(map_data)#最新拥堵系数
        city_proper_name =[]
        city_proper_index =[]for resu in city_propers:
            reslut = datas[datas['城区'].map(lambda xx: xx == resu)].values.tolist()
            city_proper_name.append(resu)
            city_proper_index.append(reslut[-1][3])#大渡口区拥堵情况变化
        tianhe_names =[]
        tianhe_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='大渡口区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            tianhe_names.append(resu)
            tianhe_count.append(resu1[0][4])#江北区拥堵系数变化
        liwan_names =[]
        liwan_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='江北区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            liwan_names.append(resu)
            liwan_count.append(resu1[0][3])#南岸区拥堵情况变化
        yuexiu_names =[]
        yuexiu_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='南岸区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            yuexiu_names.append(resu)
            yuexiu_count.append(resu1[0][4])return render_template('cq_daping.html',**locals())@app.route('/wuhan_charts', methods=['GET','POST'])defwuhan_charts():#主页
    uuid = session.get('uuid')#获取session的数据,判断是否登录,如未登录跳转到登录页if uuid:ifnot models.User.query.get(uuid):return redirect(url_for('login'))else:
            username = models.User.query.get(uuid).name
    else:return redirect(url_for('login'))if request.method =='GET':

        sql_command ='select * from Transportation '
        df = pandas.read_sql(sql_command, models.db.engine)
        datas = df[df['城市'].map(lambda xx:xx =='武汉')]

        city_propers =list(set([i[2]for i in datas.values.tolist()]))
        city_propers.sort()
        map_data =[]for resu in city_propers:
            reslut = datas[datas['城区'].map(lambda xx: xx == resu)].values.tolist()
            map_data.append({"name": resu,"value": reslut[-1][4]})print(map_data)#最新拥堵系数
        city_proper_name =[]
        city_proper_index =[]for resu in city_propers:
            reslut = datas[datas['城区'].map(lambda xx: xx == resu)].values.tolist()
            city_proper_name.append(resu)
            city_proper_index.append(reslut[-1][3])#江汉区拥堵情况变化
        tianhe_names =[]
        tianhe_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='江汉区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            tianhe_names.append(resu)
            tianhe_count.append(resu1[0][4])#武昌区拥堵系数变化
        liwan_names =[]
        liwan_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='武昌区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            liwan_names.append(resu)
            liwan_count.append(resu1[0][3])#江岸区拥堵情况变化
        yuexiu_names =[]
        yuexiu_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='江岸区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            yuexiu_names.append(resu)
            yuexiu_count.append(resu1[0][4])return render_template('wuhan_daping.html',**locals())@app.route('/zhangzhou_daping', methods=['GET','POST'])defzhangzhou_daping():#主页
    uuid = session.get('uuid')#获取session的数据,判断是否登录,如未登录跳转到登录页if uuid:ifnot models.User.query.get(uuid):return redirect(url_for('login'))else:
            username = models.User.query.get(uuid).name
    else:return redirect(url_for('login'))if request.method =='GET':

        sql_command ='select * from Transportation '
        df = pandas.read_sql(sql_command, models.db.engine)
        datas = df[df['城市'].map(lambda xx:xx =='漳州')]

        city_propers =list(set([i[2]for i in datas.values.tolist()]))
        city_propers.sort()
        map_data =[]for resu in city_propers:
            reslut = datas[datas['城区'].map(lambda xx: xx == resu)].values.tolist()
            map_data.append({"name": resu,"value": reslut[-1][4]})print(map_data)#最新拥堵系数
        city_proper_name =[]
        city_proper_index =[]for resu in city_propers:
            reslut = datas[datas['城区'].map(lambda xx: xx == resu)].values.tolist()
            city_proper_name.append(resu)
            city_proper_index.append(reslut[-1][3])#龙文区拥堵情况变化
        tianhe_names =[]
        tianhe_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='龙文区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            tianhe_names.append(resu)
            tianhe_count.append(resu1[0][4])#芗城区拥堵系数变化
        liwan_names =[]
        liwan_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='芗城区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            liwan_names.append(resu)
            liwan_count.append(resu1[0][3])#龙文区拥堵情况变化
        yuexiu_names =[]
        yuexiu_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='龙文区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            yuexiu_names.append(resu)
            yuexiu_count.append(resu1[0][4])return render_template('zhangzhou_daping.html',**locals())@app.route('/ganzhou_charts', methods=['GET','POST'])defganzhou_charts():#主页
    uuid = session.get('uuid')#获取session的数据,判断是否登录,如未登录跳转到登录页if uuid:ifnot models.User.query.get(uuid):return redirect(url_for('login'))else:
            username = models.User.query.get(uuid).name
    else:return redirect(url_for('login'))if request.method =='GET':

        sql_command ='select * from Transportation '
        df = pandas.read_sql(sql_command, models.db.engine)
        datas = df[df['城市'].map(lambda xx:xx =='赣州')]

        city_propers =list(set([i[2]for i in datas.values.tolist()]))
        city_propers.sort()
        map_data =[]for resu in city_propers:
            reslut = datas[datas['城区'].map(lambda xx: xx == resu)].values.tolist()
            map_data.append({"name": resu,"value": reslut[-1][4]})print(map_data)#最新拥堵系数
        city_proper_name =[]
        city_proper_index =[]for resu in city_propers:
            reslut = datas[datas['城区'].map(lambda xx: xx == resu)].values.tolist()
            city_proper_name.append(resu)
            city_proper_index.append(reslut[-1][3])#章贡区拥堵情况变化
        tianhe_names =[]
        tianhe_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='章贡区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            tianhe_names.append(resu)
            tianhe_count.append(resu1[0][4])#南康区拥堵系数变化
        liwan_names =[]
        liwan_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='南康区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            liwan_names.append(resu)
            liwan_count.append(resu1[0][3])#赣县区拥堵情况变化
        yuexiu_names =[]
        yuexiu_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='赣县区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            yuexiu_names.append(resu)
            yuexiu_count.append(resu1[0][4])return render_template('ganzhou_daping.html',**locals())@app.route('/bj_charts', methods=['GET','POST'])defbj_charts():#主页
    uuid = session.get('uuid')#获取session的数据,判断是否登录,如未登录跳转到登录页if uuid:ifnot models.User.query.get(uuid):return redirect(url_for('login'))else:
            username = models.User.query.get(uuid).name
    else:return redirect(url_for('login'))if request.method =='GET':

        sql_command ='select * from Transportation '
        df = pandas.read_sql(sql_command, models.db.engine)
        datas = df[df['城市'].map(lambda xx:xx =='北京')]

        city_propers =list(set([i[2]for i in datas.values.tolist()]))
        city_propers.sort()
        map_data =[]for resu in city_propers:
            reslut = datas[datas['城区'].map(lambda xx: xx == resu)].values.tolist()
            map_data.append({"name": resu,"value": reslut[-1][4]})print(map_data)#最新拥堵系数
        city_proper_name =[]
        city_proper_index =[]for resu in city_propers:
            reslut = datas[datas['城区'].map(lambda xx: xx == resu)].values.tolist()
            city_proper_name.append(resu)
            city_proper_index.append(reslut[-1][3])#朝阳区拥堵情况变化
        tianhe_names =[]
        tianhe_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='朝阳区')]

        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))

        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            tianhe_names.append(resu)
            tianhe_count.append(resu1[0][4])#海淀区拥堵系数变化
        liwan_names =[]
        liwan_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='海淀区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            liwan_names.append(resu)
            liwan_count.append(resu1[0][3])#西城区拥堵情况变化
        yuexiu_names =[]
        yuexiu_count =[]
        reslut = datas[datas['城区'].map(lambda xx: xx =='西城区')]
        date_set =list(set([resu[-1].split(':')[0]for resu in reslut.values.tolist()]))
        date_set.sort()for resu in date_set[-24:]:
            resu1 = reslut[reslut['获取日期'].map(lambda xx: xx.split(':')[0]== resu)].values.tolist()
            yuexiu_names.append(resu)
            yuexiu_count.append(resu1[0][4])return render_template('bj_daping.html',**locals())if __name__ =='__main__':
    app.run(debug=True)

5、源码获取方式

🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看我的【用户名】、【专栏名称】、【顶部选题链接】就可以找到我啦🍅

感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看👇🏻获取联系方式👇🏻

标签: python 算法 爬虫

本文转载自: https://blog.csdn.net/q_3375686806/article/details/136015451
版权归原作者 q_3375686806 所有, 如有侵权,请联系我们删除。

“python智慧交通数据分析系统 时间序列预测算法 爬虫 出行速度预测 拥堵预测 大数据 毕业设计(源码)✅”的评论:

还没有评论