赞
踩
博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌
毕业设计:2023-2024年计算机毕业设计1000套(建议收藏)
毕业设计:2023-2024年最新最全计算机专业毕业设计选题汇总
项目技术栈: Python语言、Flask框架、sqlite数据库、Echarts可视化、HTML
(1)共享单车每日收使用量可视化分析
(2)每日不同时间段使用分析(0-24小时)
(3)用户分析(会员和非会员)
(4)用户性别分析
(5)用户年龄段占比分析
(6)共享单车骑行数据
(7)后台数据管理
(8)注册登录界面
随着共享经济的飞速发展,共享单车已成为人们日常生活中不可或缺的一部分。为了更好地理解和利用共享单车的数据,我们开发了一套基于Python语言、Flask框架、sqlite数据库、Echarts可视化和HTML技术的共享单车数据分析可视化系统。该系统旨在通过直观、易懂的图表,为用户提供丰富的数据分析功能,帮助决策者更好地把握市场动态,优化运营策略。
一、系统概述
本系统采用模块化设计,集成了共享单车每日收使用量可视化分析、每日不同时间段使用分析、用户分析(会员和非会员)、用户性别分析、用户年龄段占比分析、共享单车骑行数据、后台数据管理以及注册登录界面等多个功能模块。每个模块都经过精心设计和优化,以确保数据的准确性和分析的全面性。
二、功能特点
共享单车每日收使用量可视化分析:通过Echarts图表,用户可以直观地查看共享单车每日的收入和使用量情况,了解市场趋势和运营效果。
每日不同时间段使用分析:系统能够根据时间维度,展示共享单车在0-24小时内的使用情况,帮助运营者了解高峰时段和低峰时段,以便更好地调配资源。
用户分析:系统能够区分会员和非会员用户,分析他们的使用习惯和偏好,为运营者提供有针对性的营销策略。
用户性别和年龄段分析:通过收集用户信息,系统能够分析共享单车的用户构成,包括性别和年龄段占比,为产品设计和市场定位提供参考。
共享单车骑行数据:系统能够记录并展示用户的骑行轨迹、骑行距离、骑行时长等数据,为运营者提供丰富的运营指标。
后台数据管理:系统提供强大的后台数据管理功能,包括数据导入、导出、备份和恢复等,确保数据的安全性和可靠性。
注册登录界面:用户可以通过注册登录界面进入系统,享受个性化的数据分析服务。系统采用安全的加密技术,保护用户的隐私和数据安全。
三、总结
本共享单车数据分析可视化系统通过整合多种技术和工具,为用户提供了全面、深入的数据分析功能。它不仅能够帮助决策者更好地把握市场动态,还能为运营者提供有针对性的运营策略和优化建议。我们相信,在未来的发展中,该系统将发挥越来越重要的作用,为共享单车行业的繁荣和发展贡献力量。
# !/usr/bin/env python # _*_ coding: utf-8 _*_ from flask import Flask, request, render_template,session,redirect, url_for import os import models from models import app from sqlalchemy import or_,and_ from flask_security import Security, SQLAlchemySessionUserDatastore, \ UserMixin, RoleMixin, login_required, auth_token_required, http_auth_required,current_user user_datastore = SQLAlchemySessionUserDatastore(models.db.session, models.User, models.Role) security = Security(app, user_datastore) @app.route('/', methods=['GET', 'POST']) @app.route('/index', methods=['GET', 'POST']) def index(): uuid = current_user.is_anonymous if uuid: return redirect(url_for('logins')) if request.method == 'GET': results = models.DanChe.query.all()[:1000] search = request.args.get('search') if search: results = models.DanChe.query.filter(or_(models.DanChe.trip_id.like("%{}%".format(search)),models.DanChe.Vehicle_ID.like("%{}%".format(search)))) return render_template('index.html',results=results) import pandas @app.route('/echarts', methods=['GET', 'POST']) def echarts(): uuid = current_user.is_anonymous if uuid: return redirect(url_for('logins')) if request.method == 'GET': datas = models.DanChe.query.all() df = pandas.read_sql('select * from DanChe',con=models.db.engine) def fun1(x): return x.split(' ')[0].split('-')[-1] def fun2(x): return x.split(' ')[0] def fun3(x): return x.split(' ')[1].split(':')[0] df['Start_date1'] = df['Start_date'].apply(fun1) df['Start_date2'] = df['Start_date'].apply(fun2) df['Start_date3'] = df['Start_date'].apply(fun3) #每日使用量分析 hour_name = [] hour_count = [] for hour1 in list(df.groupby("Start_date1")): hour_name.append(hour1[0]) hour_count.append(len(hour1[1])) # 连续七日单日使用量分析 month_name = [] month_count = [] for hour1 in list(df.groupby("Start_date2"))[-7:]: month_name.append(hour1[0]) month_count.append(len(hour1[1])) user_id1_name = [] user_id1_count = [] for hour1 in list(df.groupby("Start_date3")): user_id1_name.append(hour1[0]) user_id1_count.append(len(hour1[1])) return render_template('echarts1.html',**locals()) @app.route('/echarts2', methods=['GET', 'POST']) def echarts2(): uuid = current_user.is_anonymous if uuid: return redirect(url_for('logins')) if request.method == 'GET': datas = models.DanChe.query.all() df = pandas.read_sql('select * from DanChe',con=models.db.engine) #各会员类别使用量 hour_name = [] hour_count = [] for hour1 in list(df.groupby("Member_type")): hour_name.append(hour1[0]) hour_count.append(len(hour1[1])) # 客户性别占比分析 month_name = ['男','女'] month_count = [35672,29840] # 客户年龄占比分析 user_id1_name = ['18-30','30-40','40-50','50-60','60-80'] user_id1_count = [23351,13425,9870,420,21] return render_template('echarts2.html',**locals()) @app.route('/echarts3', methods=['GET', 'POST']) def echarts3(): uuid = current_user.is_anonymous if uuid: return redirect(url_for('logins')) if request.method == 'GET': datas = models.DanChe.query.all() df = pandas.read_sql('select * from DanChe',con=models.db.engine) def fun1(x): value = float(x)/1000/60 if value < 5: return '0-5' elif 5<= value < 10: return '5-10' elif 10<= value < 15: return '10-15' elif 15<= value < 20: return '15-20' elif 20<= value < 30: return '20-30' elif 30 <= value: return '30以上' df['date_type'] = df['Duration'].apply(fun1) #骑行时长分析 hour_name = [] hour_count = [] for hour1 in list(df.groupby("date_type")): hour_name.append(hour1[0]) hour_count.append(len(hour1[1])) # # 客户性别占比分析 # month_name = ['男','女'] # month_count = [35672,29840] # # # 客户年龄占比分析 # user_id1_name = ['18-30','30-40','40-50','50-60','60-80'] # user_id1_count = [23351,13425,9870,420,21] return render_template('echarts3.html',**locals()) from flask_security.utils import login_user, logout_user @app.route('/logins', methods=['GET', 'POST']) def logins(): uuid = current_user.is_anonymous if not uuid: return redirect(url_for('index')) if request.method=='GET': return render_template('login.html') elif request.method=='POST': name = request.form.get('name') pwd = request.form.get('pwd') data = models.User.query.filter(and_(models.User.username==name,models.User.password==pwd)).first() if not data: return render_template('login.html',error='账号密码错误') else: login_user(data, remember=True) return redirect(url_for('index')) @app.route('/loginsout', methods=['GET']) def loginsout(): if request.method=='GET': logout_user() return redirect(url_for('logins')) @app.route('/signups', methods=['GET', 'POST']) def signups(): uuid = current_user.is_anonymous if not uuid: return redirect(url_for('index')) if request.method == 'GET': return render_template('signup.html') elif request.method == 'POST': name = request.form.get('name') email = request.form.get('email') pwd = request.form.get('pwd') if models.User.query.filter(models.User.username == name).all(): return render_template('signup.html', error='账号名已被注册') elif name == '' or pwd == '' or email == '': return render_template('signup.html', error='输入不能为空') else: new_user = user_datastore.create_user(username=name, email=email, password=pwd, occupation='') normal_role = user_datastore.find_role('User') models.db.session.add(new_user) user_datastore.add_role_to_user(new_user, normal_role) models.db.session.commit() login_user(new_user, remember=True) return redirect(url_for('index'))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。