博主介紹:?全網(wǎng)粉絲10W+,前互聯(lián)網(wǎng)大廠軟件研發(fā)、集結(jié)碩博英豪成立工作室。專注于計(jì)算機(jī)相關(guān)專業(yè)畢業(yè)設(shè)計(jì)項(xiàng)目實(shí)戰(zhàn)6年之久,選擇我們就是選擇放心、選擇安心畢業(yè)?感興趣的可以先收藏起來(lái),點(diǎn)贊、關(guān)注不迷路?
畢業(yè)設(shè)計(jì):2023-2024年計(jì)算機(jī)畢業(yè)設(shè)計(jì)1000套(建議收藏)
畢業(yè)設(shè)計(jì):2023-2024年最新最全計(jì)算機(jī)專業(yè)畢業(yè)設(shè)計(jì)選題匯總
1、項(xiàng)目介紹
技術(shù)棧:
Python語(yǔ)言、Flask框架、requests爬蟲、sqlite數(shù)據(jù)庫(kù)、時(shí)間序列預(yù)測(cè)fbprophet庫(kù)、預(yù)測(cè)出行速度、擁堵預(yù)測(cè)、HTML
2、項(xiàng)目界面
(1)北京大數(shù)據(jù)智慧交通數(shù)據(jù)分析大屏
(2)智慧交通數(shù)據(jù)
(3)廣州大數(shù)據(jù)智慧交通數(shù)據(jù)分析大屏
(4)出行速度預(yù)測(cè)分析
(5)擁堵系數(shù)預(yù)測(cè)
(6)注冊(cè)登錄界面
(7)后臺(tái)數(shù)據(jù)管理
3、項(xiàng)目說(shuō)明
本課題通過網(wǎng)絡(luò)爬蟲技術(shù)采集高德地圖提供的一個(gè)交通情報(bào)和路況報(bào)告網(wǎng)站,獲取交通擁堵情況、路況狀況數(shù)據(jù),為系統(tǒng)的搭建提供了夯實(shí)的基礎(chǔ)。使用Python語(yǔ)言對(duì)數(shù)據(jù)進(jìn)行采集,使用pycharm內(nèi)嵌的sqlite數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ);采用時(shí)間序列預(yù)測(cè)算法,對(duì)各城市的出行速度進(jìn)行預(yù)測(cè)。通過使用直觀的可視化工具,如圖表、地圖等,系統(tǒng)可以將數(shù)據(jù)結(jié)果以更易理解的方式呈現(xiàn)給用戶。同時(shí),系統(tǒng)可能提供友好的用戶界面,使用戶能夠方便地輸入選項(xiàng),并進(jìn)行交互式的數(shù)據(jù)分析。本課題主要分為以下六個(gè)模塊:
1、數(shù)據(jù)獲取
使用Python網(wǎng)絡(luò)爬蟲技術(shù)結(jié)合requests爬蟲框架采集高德地圖提供的一個(gè)交通情報(bào)和路況報(bào)告網(wǎng)站,獲取交通擁堵情況、路況狀況數(shù)據(jù)。
2、注冊(cè)登錄
用戶必須先進(jìn)行注冊(cè),輸入用戶名、密碼進(jìn)行注冊(cè),系統(tǒng)根據(jù)賬號(hào)密碼查詢數(shù)據(jù)庫(kù)進(jìn)行驗(yàn)證,重復(fù)注冊(cè)系統(tǒng)會(huì)提示用戶已存在。
3、北京交通數(shù)據(jù)分析可視化
系統(tǒng)對(duì)采集的北京交通數(shù)據(jù)進(jìn)行分析與可視化展示,包括:各個(gè)行政區(qū)的最新?lián)矶孪禂?shù)、擁堵情況變化、擁堵系數(shù)變化、出行速度情況等等指標(biāo)。
4、廣州交通數(shù)據(jù)分析可視化
系統(tǒng)對(duì)采集的廣州交通數(shù)據(jù)進(jìn)行分析與可視化展示,包括:各個(gè)行政區(qū)的最新?lián)矶孪禂?shù)、擁堵情況變化、擁堵系數(shù)變化、出行速度情況等等指標(biāo)。
5、出行速度預(yù)測(cè)
本文使用了時(shí)間序列預(yù)測(cè)算法,對(duì)各城市的出行速度進(jìn)行預(yù)測(cè)。
6、后臺(tái)數(shù)據(jù)管理
系統(tǒng)開發(fā)了數(shù)據(jù)后臺(tái)管理,管理員可以登錄賬號(hào)進(jìn)入后臺(tái)數(shù)據(jù)管理界面,對(duì)采集的數(shù)據(jù)進(jìn)行增刪改查,對(duì)前臺(tái)注冊(cè)的用戶進(jìn)行管理和權(quán)限設(shè)置。
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數(shù)據(jù)庫(kù)
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='后臺(tái)管理')
@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
def index():#主頁(yè)
uuid = session.get('uuid')#獲取session的數(shù)據(jù),判斷是否登錄,如未登錄跳轉(zhuǎn)到登錄頁(yè)
if uuid:
if not 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'])
def yuce():
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','廣州-天河區(qū)')
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'])
def yuce_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','廣州-天河區(qū)')
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'])
def gz_charts():#主頁(yè)
uuid = session.get('uuid')#獲取session的數(shù)據(jù),判斷是否登錄,如未登錄跳轉(zhuǎn)到登錄頁(yè)
if uuid:
if not 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['城區(qū)'].map(lambda xx: xx == resu)].values.tolist()
map_data.append({"name": resu, "value": reslut[-1][4]})
print(map_data)
#最新?lián)矶孪禂?shù)
city_proper_name = []
city_proper_index = []
for resu in city_propers:
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == resu)].values.tolist()
city_proper_name.append(resu)
city_proper_index.append(reslut[-1][3])
#天河區(qū)擁堵情況變化
tianhe_names = []
tianhe_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '天河區(qū)')]
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])
#荔灣區(qū)擁堵系數(shù)變化
liwan_names = []
liwan_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '荔灣區(qū)')]
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])
#越秀區(qū)擁堵情況變化
yuexiu_names = []
yuexiu_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '越秀區(qū)')]
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'])
def cq_charts():#主頁(yè)
uuid = session.get('uuid')#獲取session的數(shù)據(jù),判斷是否登錄,如未登錄跳轉(zhuǎn)到登錄頁(yè)
if uuid:
if not 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['城區(qū)'].map(lambda xx: xx == resu)].values.tolist()
map_data.append({"name": resu, "value": reslut[-1][4]})
print(map_data)
#最新?lián)矶孪禂?shù)
city_proper_name = []
city_proper_index = []
for resu in city_propers:
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == resu)].values.tolist()
city_proper_name.append(resu)
city_proper_index.append(reslut[-1][3])
#大渡口區(qū)擁堵情況變化
tianhe_names = []
tianhe_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '大渡口區(qū)')]
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])
#江北區(qū)擁堵系數(shù)變化
liwan_names = []
liwan_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '江北區(qū)')]
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])
#南岸區(qū)擁堵情況變化
yuexiu_names = []
yuexiu_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '南岸區(qū)')]
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'])
def wuhan_charts():#主頁(yè)
uuid = session.get('uuid')#獲取session的數(shù)據(jù),判斷是否登錄,如未登錄跳轉(zhuǎn)到登錄頁(yè)
if uuid:
if not 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['城區(qū)'].map(lambda xx: xx == resu)].values.tolist()
map_data.append({"name": resu, "value": reslut[-1][4]})
print(map_data)
#最新?lián)矶孪禂?shù)
city_proper_name = []
city_proper_index = []
for resu in city_propers:
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == resu)].values.tolist()
city_proper_name.append(resu)
city_proper_index.append(reslut[-1][3])
#江漢區(qū)擁堵情況變化
tianhe_names = []
tianhe_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '江漢區(qū)')]
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])
#武昌區(qū)擁堵系數(shù)變化
liwan_names = []
liwan_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '武昌區(qū)')]
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])
#江岸區(qū)擁堵情況變化
yuexiu_names = []
yuexiu_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '江岸區(qū)')]
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'])
def zhangzhou_daping():#主頁(yè)
uuid = session.get('uuid')#獲取session的數(shù)據(jù),判斷是否登錄,如未登錄跳轉(zhuǎn)到登錄頁(yè)
if uuid:
if not 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['城區(qū)'].map(lambda xx: xx == resu)].values.tolist()
map_data.append({"name": resu, "value": reslut[-1][4]})
print(map_data)
#最新?lián)矶孪禂?shù)
city_proper_name = []
city_proper_index = []
for resu in city_propers:
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == resu)].values.tolist()
city_proper_name.append(resu)
city_proper_index.append(reslut[-1][3])
#龍文區(qū)擁堵情況變化
tianhe_names = []
tianhe_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '龍文區(qū)')]
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])
#薌城區(qū)擁堵系數(shù)變化
liwan_names = []
liwan_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '薌城區(qū)')]
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])
#龍文區(qū)擁堵情況變化
yuexiu_names = []
yuexiu_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '龍文區(qū)')]
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'])
def ganzhou_charts():#主頁(yè)
uuid = session.get('uuid')#獲取session的數(shù)據(jù),判斷是否登錄,如未登錄跳轉(zhuǎn)到登錄頁(yè)
if uuid:
if not 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['城區(qū)'].map(lambda xx: xx == resu)].values.tolist()
map_data.append({"name": resu, "value": reslut[-1][4]})
print(map_data)
#最新?lián)矶孪禂?shù)
city_proper_name = []
city_proper_index = []
for resu in city_propers:
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == resu)].values.tolist()
city_proper_name.append(resu)
city_proper_index.append(reslut[-1][3])
#章貢區(qū)擁堵情況變化
tianhe_names = []
tianhe_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '章貢區(qū)')]
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])
#南康區(qū)擁堵系數(shù)變化
liwan_names = []
liwan_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '南康區(qū)')]
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])
#贛縣區(qū)擁堵情況變化
yuexiu_names = []
yuexiu_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '贛縣區(qū)')]
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'])
def bj_charts():#主頁(yè)
uuid = session.get('uuid')#獲取session的數(shù)據(jù),判斷是否登錄,如未登錄跳轉(zhuǎn)到登錄頁(yè)
if uuid:
if not 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['城區(qū)'].map(lambda xx: xx == resu)].values.tolist()
map_data.append({"name": resu, "value": reslut[-1][4]})
print(map_data)
#最新?lián)矶孪禂?shù)
city_proper_name = []
city_proper_index = []
for resu in city_propers:
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == resu)].values.tolist()
city_proper_name.append(resu)
city_proper_index.append(reslut[-1][3])
#朝陽(yáng)區(qū)擁堵情況變化
tianhe_names = []
tianhe_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '朝陽(yáng)區(qū)')]
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])
#海淀區(qū)擁堵系數(shù)變化
liwan_names = []
liwan_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '海淀區(qū)')]
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])
#西城區(qū)擁堵情況變化
yuexiu_names = []
yuexiu_count = []
reslut = datas[datas['城區(qū)'].map(lambda xx: xx == '西城區(qū)')]
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())
from collections import OrderedDict
import pandas as pd
import models
from sqlalchemy import or_,and_
import datetime
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import numpy
import traceback
def yuce1(name):
try:
sql_command = 'select * from Transportation '
df = pandas.read_sql(sql_command, models.db.engine)
da = df[df['城區(qū)'].map(lambda xx: xx == name)]
datas = df[df['城區(qū)'].map(lambda xx: xx == name)].values.tolist()
date_day = list(set([int(datetime.datetime.strptime(i[-1].split(':')[0],'%Y-%m-%d %H').strftime('%Y%m%d%H')) for i in datas]))
date_day.sort()
print(date_day)
liuliang = []
for i in date_day:
record_list = da[da['獲取日期'].map(
lambda xx:int(datetime.datetime.strptime(xx.split(':')[0],'%Y-%m-%d %H').strftime('%Y%m%d%H')) == i )].values.tolist()
liuliang.append(record_list[-1][3])
# 數(shù)據(jù)集
examDict = {
'時(shí)間': date_day,
'系數(shù)': liuliang
}
print(examDict)
examOrderedDict = OrderedDict(examDict)
examDf = pd.DataFrame(examOrderedDict)
examDf.head()
# exam_x 即為feature
exam_x = examDf.loc[:, '時(shí)間']
# exam_y 即為label
exam_y = examDf.loc[:, '系數(shù)']
x_train, x_test, y_train, y_test = train_test_split(exam_x, exam_y, train_size=0.5)
x_train = x_train.values.reshape(-1, 1)
x_test = x_test.values.reshape(-1, 1)
model = LinearRegression()
model.fit(x_train, y_train)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1)
# LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False) 原始代碼
rDf = examDf.corr()
model.score(x_test, y_test)
data1 = datetime.datetime.strptime(str(date_day[-5]), '%Y%m%d%H')
li1 = []
for i in range(24):
data1 = data1 + datetime.timedelta(hours=1)
li1.append([int(data1.strftime('%Y%m%d%H'))])
li2 = numpy.array(li1)
y_train_pred = model.predict(li2)
li2 = []
for i in range(len(li1)):
dicts = {}
dicts['riqi'] = li1[i][0]
dicts['xisu'] = round(abs(y_train_pred[i]),3)
li2.append(dicts)
return li2[2:]
except:
print(traceback.format_exc())
return []
from prophet import Prophet
# from fbprophet import Prophet
import pandas as pd
def yuce2(name):
sql_command = 'select * from Transportation'
df = pd.read_sql(sql_command, models.db.engine)
datas = df[df['城區(qū)'].map(lambda xx: xx == name)].values.tolist()
dicts = {
'ds': [],
'y': [],
'cap': [],
'floor': []
}
for resu in datas:
dicts['ds'].append(str(resu[-1].split(':')[0]))
dicts['y'].append(int(resu[4])),
dicts['cap'].append(60)
dicts['floor'].append(0)
df = pd.DataFrame.from_dict(dicts)
print(df)
# 擬合模型
m = Prophet(growth='logistic')
m.fit(df)
# 構(gòu)建待預(yù)測(cè)日期數(shù)據(jù)框,periods = 365 代表除歷史數(shù)據(jù)的日期外再往后推 365 天
future = m.make_future_dataframe(periods=15, freq='H')
future['cap'] = 60
future['floor'] = 0
# 預(yù)測(cè)數(shù)據(jù)集
forecast = m.predict(future)
data = forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']]
dicts = data.to_dict(orient="list")
datas = []
for i in range(len(dicts['ds'])):
dicts1 = {}
dicts1['yhat'] = round(dicts['yhat'][i], 1)
dicts1['yhat_lower'] = dicts['yhat_lower'][i]
dicts1['yhat_upper'] = dicts['yhat_upper'][i]
dicts1['ds'] = dicts['ds'][i].strftime("%Y-%m-%d")
datas.append(dicts1)
datas = datas[-15:][::-1]
return datas
@app.route('/login', methods=['GET', 'POST'])
def login():
uuid = session.get('uuid')#如果已經(jīng)登錄則跳轉(zhuǎn)到主頁(yè)
datas = models.User.query.get(uuid)
if datas:
return redirect(url_for('index'))
if request.method=='GET':
return render_template('account/index.html')
elif request.method=='POST':
user = request.form.get('user')
password = request.form.get('password')
data = models.User.query.filter(and_(models.User.name==user,models.User.pwd==password)).all()
if not data:
return render_template('account/index.html',error='賬號(hào)密碼錯(cuò)誤')
else:
session['uuid'] = data[0].id #賬號(hào)密碼正確,就把用戶id記錄到session里面
session.permanent = True
return redirect(url_for('index'))
@app.route('/loginout', methods=['GET'])
def loginout():
if request.method == 'GET':
session['uuid'] = ''#退出登錄清楚記錄
session.permanent = False
return redirect(url_for('login'))
@app.route('/signup', methods=['GET', 'POST'])
def signup():
if request.method == 'GET':
uuid = session.get('uuid')
datas = models.User.query.get(uuid)
if datas:
return redirect(url_for('index'))
return render_template('account/register.html')
elif request.method == 'POST':
user = request.form.get('user')
email = request.form.get('email')
password = request.form.get('password')
if models.User.query.filter(models.User.name == user).all():
return render_template('account/register.html', error='賬號(hào)名已被注冊(cè)')
elif user == '' or password == '' or email == '':
return render_template('account/register.html', error='輸入不能為空')
else:
models.db.session.add(models.User(name=user, pwd=password,email=email))#注冊(cè)用戶信息
models.db.session.commit()
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
???感興趣的可以先收藏起來(lái),點(diǎn)贊關(guān)注不迷路,想學(xué)習(xí)更多項(xiàng)目可以查看主頁(yè),大家在畢設(shè)選題,項(xiàng)目代碼以及論文編寫等相關(guān)問題都可以給我留言咨詢,希望可以幫助同學(xué)們順利畢業(yè)!???
5、源碼獲取方式
??由于篇幅限制,獲取完整文章或源碼、代做項(xiàng)目的,拉到文章底部即可看到個(gè)人聯(lián)系方式。??文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-836334.html
點(diǎn)贊、收藏、關(guān)注,不迷路,下方查看????獲取聯(lián)系方式????文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-836334.html
到了這里,關(guān)于大數(shù)據(jù)畢業(yè)設(shè)計(jì):智慧交通數(shù)據(jù)分析系統(tǒng) python 時(shí)間序列預(yù)測(cè)算法 爬蟲 出行速度預(yù)測(cè) 擁堵預(yù)測(cè)(源碼)?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!