计算机毕业设计:新能源汽车多维度数据分析系统 Django框架 Scrapy爬虫 可视化 数据分析 大数据 大模型 机器学习(建议收藏)✅

博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅

点击查看作者主页,了解更多项目!

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

1、毕业设计:2026年计算机专业毕业设计选题汇总(建议收藏)✅

2、大数据毕业设计:2026年选题大全 深度学习 python语言 JAVA语言 hadoop和spark(建议收藏)✅

1、项目介绍

技术栈

python语言、django框架、mysql数据库、vue框架、scrapy爬虫、echarts可视化、懂车帝网数据、html

功能模块

  • 数据采集与管理模块
  • 核心查询与详情模块
  • 可视化分析模块
  • 汽车详情信息页面
  • 汽车数据分析页面
  • 首页条件选车
  • 数据可视化分析
  • 销量榜单分析
  • 差评榜单分析
  • 注册登录
  • 后台数据管理

项目介绍

本项目依托python语言开发,采用django搭配vue构建前后端分离架构,以mysql存储数据,通过scrapy爬虫从懂车帝获取汽车相关信息,借助echarts实现可视化展示。系统具备条件选车、车型详情查看、销量与投诉数据分析、榜单展示等功能,同时配有登录权限与后台数据管理功能,能够为用户和行业人员提供直观全面的汽车市场数据参考与决策支持。

2、项目界面

(1)汽车详情信息页面

该页面是新能源汽车数据分析系统的车型详情分析页面,左侧提供条件选车、销量榜单、差评榜单、可视化分析等功能入口,页面展示车型基本信息、评分雷达图、质量问题词云及故障类型时间趋势等内容,可直观呈现车型口碑与质量问题情况。

(2)汽车数据分析---销量走势、销量排名曲线、投诉走势等等

该页面是新能源汽车数据分析系统的可视化分析页面,左侧设有条件选车、销量榜单、差评榜单、可视化分析等功能导航栏,页面依次展示投诉量走势图、销量走势图、销量排名走势图,可直观呈现车型投诉、销量及排名的月度变化趋势。

(3)首页----按条件选车

该页面是新能源汽车数据分析系统的条件选车页面,左侧设有条件选车、销量榜单、差评榜单、可视化分析等功能导航栏,页面上方提供关键词搜索、品牌、价格、车型等多维度筛选条件,下方以卡片形式展示符合条件的车型信息,包含车型名称、评分、价格等内容,支持按不同维度排序浏览。

(4)数据可视化分析----降价排行榜、汽车品牌分布、价格分布分析

该页面是新能源汽车数据分析系统的可视化分析页面,左侧设有条件选车、销量榜单、差评榜单、可视化分析等功能导航栏,页面依次展示车型价格横向条形图、汽车品牌数量环形饼图、价格范围数量柱状图,可直观呈现车型价格、品牌分布及价格区间的车系数量情况。

(5)销量榜单分析

该页面是新能源汽车数据分析系统的销量榜单页面,左侧设有条件选车、销量榜单、差评榜单、可视化分析等功能导航栏,页面上方支持按月份筛选,下方以列表形式展示对应月份的新能源汽车销量排名,包含车型图片、名称、价格、评分、销量等信息,直观呈现各车型的市场销量表现。

(6)差评榜单---质量、服务、其他

该页面是新能源汽车数据分析系统的差评榜单页面,左侧设有条件选车、销量榜单、差评榜单、可视化分析等功能导航栏,页面上方支持按月份和问题类型筛选,下方以列表形式展示对应条件下的车型差评排名,包含车型图片、名称、价格、评分、问题数及各类问题标签,直观呈现各车型的投诉与口碑情况。

(7)汽车详情页面

该页面是新能源汽车数据分析系统的车型详情分析页面,左侧设有条件选车、销量榜单、差评榜单、可视化分析等功能入口,页面展示车型基本信息、综合评分雷达图、质量问题标签、质量问题词云等内容,可直观呈现车型的综合评分、故障问题与口碑情况。

(8)注册登录

该页面是新能源汽车数据分析系统的登录页面,以淡紫渐变背景呈现,中间设有账号和密码输入框,搭配渐变色登录按钮,同时提供注册入口,用于用户身份验证,验证通过后可进入系统后台,保障系统访问安全。

(9)后台数据管理

该页面是新能源汽车数据分析系统的后台管理车系管理页面,顶部为导航栏,左侧设有数据管理等功能菜单,页面提供多条件搜索、添加删除等操作,以表格形式展示车系图片、品牌、价格、评分等详细信息,支持批量操作与数据管理,保障系统数据维护。

3、项目说明

一、技术栈简要说明

本项目以Python为核心开发语言,采用Django搭建后端服务,Vue构建前端交互界面,MySQL数据库负责数据存储,通过Scrapy爬虫框架抓取懂车帝平台汽车数据,结合Echarts实现图表可视化展示,同时运用HTML完成页面基础布局,形成完整的前后端分离开发体系。

二、功能模块详细介绍

  • 数据采集与管理模块:借助Scrapy爬虫定向采集懂车帝的车型、销量、价格、投诉及差评等数据,由MySQL统一存储,后台支持数据的增删改查与异常数据清洗,搭配注册登录功能实现用户权限管控,保障系统数据安全与规范。
  • 首页条件选车模块:作为系统入口页面,提供品牌、价格、车型等多维度筛选与关键词搜索功能,以卡片形式展示匹配车型信息,支持排序浏览,方便用户快速定位目标车型。
  • 汽车详情信息模块:展示车型基础信息、综合评分、故障问题标签与词云等内容,通过评分雷达图直观呈现车型口碑,让用户全面了解车型优缺点。
  • 汽车数据分析模块:以折线图形式呈现销量走势、销量排名曲线及投诉量变化趋势,清晰反映车型市场表现与质量问题的时间变化规律。
  • 数据可视化分析模块:通过条形图、饼图、柱状图展示降价排行、品牌占比与价格区间分布,直观呈现汽车市场整体结构特征。
  • 销量榜单分析模块:支持按月份筛选查看车型销量排名,以列表形式展示车型图片、价格、销量等信息,清晰呈现各车型市场销量表现。
  • 差评榜单分析模块:可按月份与问题类型筛选,展示车型差评排名,标注质量、服务等问题标签,直观反映车型口碑短板。
  • 注册登录模块:采用简洁渐变设计,提供账号密码输入与注册跳转功能,完成用户身份验证,实现系统访问权限控制。
  • 后台数据管理模块:具备数据搜索、新增、删除与批量操作能力,以表格形式管理车系信息,方便管理员维护系统数据。

三、项目总结

本系统构建了集数据采集、查询、可视化分析与后台管理于一体的汽车数据服务平台,通过多技术栈协同实现从数据获取到直观展示的全流程覆盖。系统可满足普通用户选车参考、行业人员市场分析等不同需求,通过可视化图表降低数据理解难度,后台管理保障数据稳定可靠,为汽车市场研究、购车决策提供了实用且高效的量化工具,具备较强的实际应用价值。

4、核心代码

python 复制代码
from django.shortcuts import render
from datetime import datetime, timedelta
from .models import *
from django.http.response import JsonResponse
from itertools import groupby
from .models import *
import json
from django.http.response import HttpResponse
from django.shortcuts import render
from django.http import JsonResponse
from pyecharts import options as opts
from pyecharts.charts import Map, Grid, Bar, Line, Pie, WordCloud, Radar, Timeline
from pyecharts.faker import Faker
from pyecharts.commons.utils import JsCode
from pyecharts.options.charts_options import MapItem
from datetime import datetime, time
from django.core.paginator import Paginator
from django.db.models import Q, F
from pyecharts.globals import SymbolType
from django.db.models import Sum, Count, Max, Min, Avg
from collections import Counter
from requests_html import requests
from itertools import chain
from functools import lru_cache


def to_dict(l, exclude=tuple(), single=False):
    # 将数据库模型 变为 字典数据 的工具类函数
    def transform(v):
        if isinstance(v, datetime):
            return v.strftime("%Y-%m-%d %H:%M:%S")
        return v

    def _todict(obj):
        j = {
            k: transform(v)
            for k, v in obj.__dict__.items()
            if not k.startswith("_") and k not in exclude
        }
        return j

    if single:
        return _todict(l)
    return [_todict(i) for i in l]

def car_rank(request):
    body = request.json
    id = body.get("id")
    return _car_rank(id)


@lru_cache()
def _car_rank(id):
    # 获取当前日期及1年前的日期
    today = datetime.now().date()
    one_year_ago = today - timedelta(days=365)
    # 设置查询条件
    q = Q(month__gte=one_year_ago.strftime("%Y%m"), month__lte=today.strftime("%Y%m"))
    result = (
        CarSale.objects.filter(q)
        .values("series_id", "series_name")
        .annotate(total_sales=Sum("rank_value"))
        .filter(total_sales__gt=0)
        .order_by("-total_sales")
    )
    sales_rank = next(
        (
            i
            for i, e in enumerate(
                result,
                start=1,
            )
            if e["series_id"] == int(id)
        ),
        -1,
    )
    # ---------
    # 获取当前日期及1年前的日期
    q = Q(
        stime__gte=one_year_ago.strftime("%Y-%m-%d"),
        stime__lte=today.strftime("%Y-%m-%d"),
    )
    result = (
        CarIssue.objects.filter(q)
        .values("series_id", "series_name")
        .annotate(total_issues=Sum("count"))
        .filter(total_issues__gt=0)
        .order_by("-total_issues")
    )
    issue_rank = next(
        (
            i
            for i, e in enumerate(
                result,
                start=1,
            )
            if e["series_id"] == int(id)
        ),
        -1,
    )

    return JsonResponse(dict(sales_rank=sales_rank, issue_rank=issue_rank))


def car_sales_rank(request):
    # 获取请求体中的数据
    body = request.json
    # 获取请求体中的月份
    month = body.get("month")
    # 定义查询条件
    q = Q()
    # 根据月份设置查询条件
    if month == "1y":
        # 获取当前日期及1年前的日期
        today = datetime.now().date()
        one_year_ago = today - timedelta(days=365)
        # 设置查询条件
        q &= Q(
            month__gte=one_year_ago.strftime("%Y%m"), month__lte=today.strftime("%Y%m")
        )
    elif month == "6m":
        # 近半年,即6个月
        today = datetime.now().date()
        half_year_ago = today - timedelta(days=365 // 2)
        # 设置查询条件
        q &= Q(
            month__gte=half_year_ago.strftime("%Y%m"), month__lte=today.strftime("%Y%m")
        )
    else:
        q &= Q(month=month)
    # 统计各个车系一年内的总销量,并按照销量进行排序和排名
    result = (
        CarSale.objects.filter(q)
        .values("series_id", "series_name")
        .annotate(total_sales=Sum("rank_value"))
        .order_by("-total_sales")
    )
    # 对结果进行排名
    result_list = list(result)
    for i, item in enumerate(result_list):
        item["sales_rank"] = i + 1
    # 分页处理数据
    pagesize = body.get("pagesize", 20)
    page_num = body.get("page", 1)
    paginator = Paginator(result_list, pagesize)  # 创建Paginator对象
    page = paginator.get_page(page_num)  # 获取指定页码的数据
    result = list(page.object_list)
    # 获取每个车系的详细信息,并将其添加到结果中
    for i in result:
        car_series = to_dict([CarSeries.objects.get(series_id=i["series_id"])])[0]
        i.update(**car_series)
    # 返回分页后的结果
    return JsonResponse({"total": paginator.count, "records": result})


def car_issue_rank(request):
    body = request.json
    stime = body.get("stime")
    type = body.get("type")
    q = Q()
    if stime == "1y":
        # 获取当前日期及1年前的日期
        today = datetime.now().date()
        one_year_ago = today - timedelta(days=365)
        q &= Q(
            stime__gte=one_year_ago.strftime("%Y-%m-%d"),
            stime__lte=today.strftime("%Y-%m-%d"),
        )
    elif stime == "6m":
        # 近半年,即6个月
        today = datetime.now().date()
        half_year_ago = today - timedelta(days=365 // 2)
        q &= Q(
            stime__gte=half_year_ago.strftime("%Y-%m-%d"),
            stime__lte=today.strftime("%Y-%m-%d"),
        )
    else:
        q &= Q(stime=stime)
    if type:
        q &= Q(type=type)
    # 统计各个车系一年内的总问题数,并按照问题数进行排序和排名
    result = (
        CarIssue.objects.filter(q)
        .values("series_id", "series_name")
        .annotate(total_issues=Sum("count"))
        .order_by("-total_issues")
    )

    # 对结果进行排名
    result_list = list(result)
    for i, item in enumerate(result_list):
        item["issues_rank"] = i + 1

    # 分页处理数据
    pagesize = body.get("pagesize", 20)
    page_num = body.get("page", 1)
    paginator = Paginator(result_list, pagesize)  # 创建Paginator对象
    page = paginator.get_page(page_num)  # 获取指定页码的数据
    result = list(page.object_list)
    for i in result:
        car_series = to_dict([CarSeries.objects.get(series_id=i["series_id"])])[0]
        counter = Counter()
        for x in CarIssue.objects.filter(q, series_id=i["series_id"]).values_list(
            "dxwt", flat=True
        ):
            counter.update(dict([(j["ctiTitle"], j["count"]) for j in x]))
        i["issues"] = counter.most_common(10)
        i.update(**car_series)
    return JsonResponse({"total": paginator.count, "records": result})


def get_detail(request):
    body = request.json
    id = body.get("id")
    o = CarSeries.objects.get(pk=id)
    o = to_dict(o, single=True)
    o["brand"] = to_dict(Brand.objects.get(brand_id=o["brand_id"]), single=True)
    return JsonResponse(o)


def car_360_color_pic(request):
    body = request.json
    id = body.get("id")
    try:
        color_pic_list = requests.get(
            f"https://www.dongchedi.com/motor/pc/car/series/car_360_color_pic?aid=1839&app_name=auto_web_pc&series_id={id}"
        ).json()["data"]["color_pic_list"]
    except:
        color_pic_list = []
    return JsonResponse(color_pic_list, safe=False)

5、项目列表


6、源码获取方式

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

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

相关推荐
好好学习,天天向上~2 小时前
一套从 HTTP 抓取到动态页面爬取的 Python 全栈爬虫框架(附安装与实战)
爬虫·python·http
ACGkaka_2 小时前
ES 学习(五):DSL常用操作整理
大数据·学习·elasticsearch
CDA数据分析师干货分享2 小时前
统计学本科生CDA数据分析师二级备考经验分享
大数据·人工智能·经验分享·数据分析·cda证书·cda数据分析师
无忧智库2 小时前
破局与重构:从“图纸交付”到“数据服务”的建筑设计企业数字化跃迁(PPT)
大数据
大数据新鸟2 小时前
Java 泛型(Generic)完整使用指南
java·windows·python
SoulRoar.2 小时前
Armbian离线安装ES+SkyWalking并注册系统服务
大数据·elasticsearch·skywalking
D愿你归来仍是少年3 小时前
Apache Spark 第 13 章 附加篇 · Apache Spark Real-Time Mode 实时计算
大数据·spark·apache
菜鸡00013 小时前
把一个项目传到 GitLab 的某个群组
大数据·elasticsearch·gitlab
Ulyanov3 小时前
构建企业级雷达电子战仿真引擎的工程化基础 第一篇:CI/CD流水线与自动化测试体系
python·ci/cd·架构·系统仿真·雷达电子战仿真