python二手车数据分析可视化系统 Django框架 requests爬虫 Echarts可视化 毕业设计(源码)✅

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

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

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

1、项目介绍

技术栈:
python语言、Django框架、MySQL数据库、requests爬虫技术、汽车之家二手车、Echarts可视化

Python语言:作为开发语言,用于编写爬虫和后端程序。

Django框架:作为Web框架,提供了丰富的工具和组件,用于快速搭建Web应用。

MySQL数据库:用于存储二手车相关的数据。

requests爬虫技术:用于从汽车之家网站上获取二手车数据。

汽车之家二手车:作为数据来源,提供了大量的二手车信息。

Echarts可视化:用于将二手车数据进行可视化展示,以便用户更加直观地了解数据。

2、项目界面

(1)中国地图–全国各地车辆数据

python二手车数据分析可视化系统 Django框架 requests爬虫 Echarts可视化 毕业设计(源码)✅_第1张图片

(2)会员注册年份与等级
python二手车数据分析可视化系统 Django框架 requests爬虫 Echarts可视化 毕业设计(源码)✅_第2张图片

(3)二手车数据

python二手车数据分析可视化系统 Django框架 requests爬虫 Echarts可视化 毕业设计(源码)✅_第3张图片

(4)车辆品牌数据统计

python二手车数据分析可视化系统 Django框架 requests爬虫 Echarts可视化 毕业设计(源码)✅_第4张图片

(5)会员占比

python二手车数据分析可视化系统 Django框架 requests爬虫 Echarts可视化 毕业设计(源码)✅_第5张图片

(6)里程区间数据统计分析

python二手车数据分析可视化系统 Django框架 requests爬虫 Echarts可视化 毕业设计(源码)✅_第6张图片

(7)车辆购买日期分析

python二手车数据分析可视化系统 Django框架 requests爬虫 Echarts可视化 毕业设计(源码)✅_第7张图片

3、项目说明

这是一个使用Python语言和Django框架开发的二手车数据分析可视化系统,主要技术栈包括:

Python语言:作为开发语言,用于编写爬虫和后端程序。

Django框架:作为Web框架,提供了丰富的工具和组件,用于快速搭建Web应用。

MySQL数据库:用于存储二手车相关的数据。

requests爬虫技术:用于从汽车之家网站上获取二手车数据。

汽车之家二手车:作为数据来源,提供了大量的二手车信息。

Echarts可视化:用于将二手车数据进行可视化展示,以便用户更加直观地了解数据。

该系统的主要功能包括爬取汽车之家网站上的二手车数据、将数据存储到MySQL数据库中、根据用户输入的条件查询二手车数据、使用Echarts将数据进行可视化展示。用户可以通过Web界面进行操作和查询,轻松获取所需的二手车数据和分析结果。

4、核心代码


from pyecharts.charts import WordCloud
from pyecharts.globals import ThemeType
from pyecharts.charts import Pie
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot

# 词云图表
def getciyun(data):
    c=(
        WordCloud()
        .add(series_name="车型词云", data_pair=data, word_size_range=[6, 66])
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title="车型词云", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
            ),
            tooltip_opts=opts.TooltipOpts(is_show=True),
        )
        # .render("map3d_with_bar3d.html")
    )
    # 渲染的html保存为png图片
    # make_snapshot(snapshot, c.render(), "词云图表.png")
    return c

# 品牌图表
def getchex(data):
    c = (
        Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
        .add_xaxis(["宝马","奥迪","奔驰","飞度","朗逸","凯美瑞","凯迪拉克","蒙迪欧","高尔夫","荣放"])
        # .add_xaxis(xaxis)
        .add_yaxis("品牌", data, stack="stack1", category_gap="50%")
        .set_series_opts(
            label_opts=opts.LabelOpts(
                position="right",
                # formatter=JsCode(
                #     "function(x){return Number(x.data.percent * 100).toFixed() + '%';}"
                # ),
            )
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="车辆品牌数据统计"),#, subtitle="经过统计分析,发现BBA的二手车品牌居多,因此购买BBA可以考虑二手车的市场"
        )
    )
    # make_snapshot(snapshot, c.render(), "品牌图表.png")
    return c


def getmemberpage(data):
    c = (
        Pie()
        .add("", data)
        .set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])
        .set_global_opts(title_opts=opts.TitleOpts(title="会员占比"))#, subtitle="经过统计分析,发现黄金会员占据网站的主体,高级会员人数偏少,网站可以改边营业策略以增加高级会员人数提高用户粘度"
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
        # .render("pie_set_color.html")
    )
    # make_snapshot(snapshot, c.render(), "会员占比图表.png")
    return c

#里程图表
def getmileage(data):
    c = (
    Bar()
    .add_xaxis(
        data['fw']
    )
    .add_yaxis("区间数量 ", data['count'])
    # .add_yaxis("商家B", [20, 10, 40, 30, 40, 50])
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title="里程区间数据统计"),#, subtitle="经过统计分析,发现二手车的使用里程1万公里以下,其中0-2千公里的车辆占比46%,对于想要买来用来代步的买家可以考虑二手的市场"
    )
    # .render("bar_rotate_xaxis_label.html")
    )
    # make_snapshot(snapshot, c.render(), "里程图表.png")
    return c
    # pass

#价格图表
def getjiage(data):
    c = (
    Bar()
    .add_xaxis(
        data['fw']
    )
    .add_yaxis("价格区间", data['count'])
    # .add_yaxis("商家B", [20, 10, 40, 30, 40, 50])
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title="二手车价格区间"),#, subtitle="经过统计分析,发现价格在0-48万的价格的二手车居多,因此考虑低端和中端车的买家可以关注二手车市场"
    )
    # .render("bar_rotate_xaxis_label.html")
    )
    # make_snapshot(snapshot, c.render(), "价格图表.png")
    return c
# getmemberpage(None)

def getshuangzhu(data):
    # print(data.columns)
    datasplit=data.信息.str.split('/').apply(lambda x:pd.Series(x))
    # print(type(datasplit))
    datasplit.columns=['表显里程','上牌时间','车辆所在地','会员']
    datasplit=datasplit.会员.str.split('年')
    data=[]
    for i in datasplit:
        try:
            if type(i) is list and len(i)>1:
                data.append(i)
        except BaseException as e:
            print(e)
            print(i)

    data=pd.DataFrame(data)
    data.columns=['年','类型']
    print(data)
    data=data.groupby(['类型','年'])

    xaxis={}
    会员=[]
    钻石会员=[]
    黄金会员=[]
    黑金会员=[]
    print(f'ffdaf:{type(data)}')

    for i in data:
        print(i[0])
        xaxis[f'{i[0][1]}年']=0
        print(f'年:{i[0][1]} 会员类型:{i[0][0]} 个数:{len(i[1])}')
        htype=i[0][0]
        index=int(i[0][1])-1
        year=int(i[0][1])
        # index=year
        if htype=='会员':
            会员.extend([0 for i in range(year)])
            print(会员)
            print(index)
            # 会员.append(len(i[1]))
            会员[index]=len(i[1])
            print('添加会员')
        if htype=='钻石会员':
            钻石会员.extend([0 for i in range(year)])
            # 钻石会员.append(len(i[1]))
            print(钻石会员)
            钻石会员[index]=len(i[1])
            print('添加钻石会员')
        if htype=='黄金会员':
            黄金会员.extend([0 for i in range(year)])
            # 黄金会员.append(len(i[1]))
            # 黄金会员.append(len(i[1]))
            黄金会员[index]=len(i[1])
            print('添加黄金会员')
        if htype=='黑金会员':
            黑金会员.extend([0 for i in range(year)])
            # 黑金会员.append(len(i[1]))
            # 黑金会员.append(len(i[1]))
            黑金会员[index]=len(i[1])
            print('添加黑金会员')



    c = (
        Bar()
        .add_xaxis(list(xaxis.keys()))
        .add_yaxis("会员", 会员)
        .add_yaxis("钻石会员",钻石会员)
        .add_yaxis("黄金会员", 黄金会员)
        .add_yaxis("黑金会员", 黑金会员)
        .set_global_opts(
            xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
            title_opts=opts.TitleOpts(title="会员注册年份与等级"),#, subtitle="经过统计分析,注册年份与会员等级的的关系不大,注册一年62%用户可以成为黄金会员,即使使用\n多年的用户成为高级别会员也很少。因此可以改变会员等级评估形式,吸引用户提高用户粘度"
        )
        # .render("bar_rotate_xaxis_label.html")
    )
    # make_snapshot(snapshot, c.render(), "价格图表.png")
    return c

def getmap(data):
    fileName='data.csv'
    data=pd.read_csv(fileName)
    # print(data.columns)
    datasplit=data.信息.str.split('/').apply(lambda x:pd.Series(x))
    # print(type(datasplit))
    datasplit.columns=['表显里程','上牌时间','车辆所在地','会员']
    print(datasplit.columns)
    mapdata=datasplit.groupby('车辆所在地').车辆所在地.count().to_dict()
    print(mapdata)
    data=[]
    for key,value in mapdata.items():
        data.append([
            # key.replace('市','').replace('省',''),value
            key,value
        ])

    from pyecharts.faker import Faker
    # data=[list(z) for z in zip(Faker.provinces, Faker.values())]
    c = (
        Map()
        .add("二手车数量",data , "china")
        .set_global_opts(title_opts=opts.TitleOpts(title="全国各地车辆数据"))#, subtitle="经过统计分析,发现沿海和川渝地区的二手车市场比较庞大,因此可以在这两个地区的朋友可以考虑二手车,同时侧面反映出地区的经济情况"
        # .render("map_base.html")
    )
    print(data)
    # make_snapshot(snapshot, c.render(), "地图.png")
    return c



def getdategrouby(data):
    print(f"data['month']:{data['month']}")
    c = (
    Bar()
    .add_xaxis(
        data['month']
    )
    .add_yaxis("购买数量", data['count'])
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title="车辆购买日期"),#, subtitle="经过统计分析,发现1、3、9月份的车辆购买月份居多,侧面反映出这几个月份为最佳购买汽车时间"
    )
    )
    # make_snapshot(snapshot, c.render(), "车辆购买日期图表.png")

    return c



5、源码获取方式

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

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

你可能感兴趣的:(biyesheji0001,biyesheji0002,毕业设计,python,数据分析,django,毕业设计,二手车,爬虫,可视化)