基于python汽车销售数据采集分析可视化系统

184 篇文章 44 订阅
178 篇文章 6 订阅

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

Python项目——毕业设计选题参考

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。

项目介绍

Python语言、MySQL数据库、Flask框架、网络爬虫技术、html
车主之家数据、汽车销量数据

Flask汽车销售数据采集分析可视化系统是基于Flask框架开发的一个应用系统,旨在帮助用户采集、分析和可视化汽车销售数据。

1、各品牌汽车总销量对比分析可视化界面
在这里插入图片描述

2、各品牌汽车月销量分析可视化界面

在这里插入图片描述

3、各汽车品牌理念销量分析可视化界面

在这里插入图片描述

4、系统首页----注册登录

在这里插入图片描述

5、爬虫数据采集界面

在这里插入图片描述

数据采集:系统提供方便易用的界面,用户可以通过该界面输入和管理汽车销售数据。用户可以添加新的汽车销售记录,包括销售日期、销售地点、车型、销售数量、销售额等信息。系统还支持导入和导出数据,方便用户进行批量操作。

数据分析:系统内置多种数据分析工具,帮助用户深入了解汽车销售数据。用户可以选择特定时间范围或地区进行数据筛选,系统将生成相应的统计报表和图表,如销售额趋势图、热门车型排行榜、地区销售对比等。用户可以根据这些统计结果进行业务分析和决策。

可视化展示:系统提供丰富的可视化展示功能,将数据以直观的图表和图形展示给用户。用户可以通过柱状图、折线图、饼图、地图等方式直观地观察和比较销售数据。同时,用户可以根据自己的需求进行图表的定制和设置,以满足个性化的可视化需求。

用户管理:系统支持多用户管理,管理员可以创建账户并设置不同角色的权限。用户可以根据自己的权限进行数据的查看、编辑和删除操作,保证数据的安全和隐私。

效率和易用性:系统具有高效和易用性的特点。采用Flask框架开发,系统响应快速,界面友好,操作简单。用户无需具备专业的数据分析和编程技能,即可轻松使用系统进行汽车销售数据的采集、分析和可视化工作。

总之,Flask汽车销售数据采集分析可视化系统为用户提供了一个便捷、高效的平台,帮助他们管理和分析汽车销售数据,并通过可视化展示,帮助用户更好地洞察市场动态和制定销售策略。

部分代码

import json
import os
import random
import time

from flask import Flask, send_from_directory, request
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow

from api.alipayApi import payBp
from api.baiduApi import idocr
from api.musicApi import musicBp
from api.orderApi import orderBp
from base.core import JSONEncoder
from base.response import ResMsg
from api.userApi import userBp

import logging

# Flask配置
from deeplearning.predict_lstm import sentimentalAnalysis_single
from utils.smsutil import Sms

app = Flask(__name__)
# 注册用户相关的方法
app.register_blueprint(userBp, url_prefix='/user')
app.register_blueprint(payBp, url_prefix='/alipay')
app.register_blueprint(orderBp, url_prefix='/order')  # 订单接口
# 具体业务
app.register_blueprint(musicBp, url_prefix='/music')

# 数据库配置信息
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@localhost:3306/flask_music_b'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['JSON_AS_ASCII'] = False
app.config['SECRET_KEY'] = 'KJDFLSjfldskj'

UPLOAD_FOLDER="upload"
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
basedir = os.path.abspath(os.path.dirname(__file__))
ALLOWED_EXTENSIONS = set(['txt','png','jpg','xls','JPG','PNG','gif','GIF'])

# 日志系统配置
handler = logging.FileHandler('error.log', encoding='UTF-8')
logging_format = logging.Formatter(
            '%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s')
handler.setFormatter(logging_format)
app.logger.addHandler(handler)

# 返回json格式转换 使用这个的话就不需要每次都写json返回了,简化代码
app.json_encoder = JSONEncoder

# SQLAlchemy 为ORM框架,即用来简化操作数据库的包,具体内容需要学习ORM相关知识
db = SQLAlchemy(app)
# Marshmallow 是用来封装返回SQLAlchemy 的返回结果的,通过这个包可以直接把数据转成JSON,从而返回给前端使用
ma = Marshmallow(app)

# 一个测试的方法,可以测试服务器是否启动了
# @app.route('/test')
# def test():  # put application's code here
#     res = ResMsg()
#     test_dict = dict(name="zhang", age=19)
#     res.update(data=test_dict, code=0)
#     return res.data
#

@app.errorhandler(500)
def special_exception_handler(error):
    app.logger.error(error)
    return '请联系管理员', 500

#判断文件后缀
def allowed_file(filename):
    return '.' in filename and filename.rsplit('.',1)[1] in ALLOWED_EXTENSIONS

@app.route('/file/upload', methods=['POST'], strict_slashes=False)
def api_upload():
    res = ResMsg()
    file_dir=os.path.join(basedir, app.config['UPLOAD_FOLDER'])
    if not os.path.exists(file_dir):
        os.makedirs(file_dir)
    f = request.files['myfile']
    if f and allowed_file(f.filename):
        fname = f.filename
        # fname = secure_filename(f.filename)
        print(fname)
        ext = fname.rsplit('.', 1)[1]
        unix_time = int(time.time())
        new_filename = str(unix_time)+'.'+ext
        f.save(os.path.join(file_dir, new_filename))
    res.update(data=new_filename, code=0)
    return res.data

@app.route('/file/idocr', methods=['POST'], strict_slashes=False)
def api_id_ocr():
    res = ResMsg()
    file_dir=os.path.join(basedir, app.config['UPLOAD_FOLDER'])
    if not os.path.exists(file_dir):
        os.makedirs(file_dir)
    f = request.files['myfile']
    if f and allowed_file(f.filename):
        fname = f.filename
        # fname = secure_filename(f.filename)  有中文这个会有问题
        # print(fname)
        ext = fname.rsplit('.', 1)[1]
        unix_time = int(time.time())
        new_filename = str(unix_time)+'.'+ext
        f.save(os.path.join(file_dir, new_filename))
        idno = idocr(new_filename)[0]
        name = idocr(new_filename)[1]
    res.update(data=dict(idno=idno,pic=new_filename,name=name), code=0)
    return res.data

@app.route('/file/download/<filename>/')
def api_download(filename):
    # print('下载..' + filename)
    return send_from_directory('upload', filename, as_attachment=False)

#阿里云短信接口
@app.route('/sms/sendSms', methods=['POST'])
def sendSms():
    res = ResMsg()
    phone = request.json['phone']
    code = random.randint(100000, 999999)
    response = json.loads(Sms().sendCode(phone, code))
    if response['Code'] == "OK":
        res.update(msg="发送成功", code=0, data=code)
    else:
        res.update(msg="发送失败", code=-1)
    return res.data

# 深度学习情感分析接口
@app.route('/deeplearning/senti_single', methods=['POST'])
def senti_single():
    res = ResMsg()
    data = request.json['data']
    datas = [data]
    print(datas)
    result = sentimentalAnalysis_single(datas)
    res.update(msg="成功", code=0, data=result)
    return res.data

if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0',port=5000)

源码获取:

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

大家点赞、收藏、关注、评论啦 !

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值