赞
踩
博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌
毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏)
毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总
技术栈:
Django框架、requests爬虫、ARIMA 时序预测模型 【销量预测】、MySQL数据库、淘宝数据
(1)商品销量分布地图
(2)销量预测—ARIMA 时序预测模型 【销量预测】
(3)商品价格与销量的关系
(4)商品数据展示
(5)商品价格区间分布
(6)商品销量分布
(7)商品词云可视化分析
(8)系统首页
淘宝数据采集分析可视预测系统是基于Django框架和requests爬虫技术开发的一个销量预测系统。它使用ARIMA时序预测模型来对淘宝店铺的销量进行预测,并将预测结果可视化展示。
系统的主要技术栈包括:
Django框架:作为系统的开发框架,提供了丰富的功能和工具,方便开发人员快速构建Web应用。
requests爬虫:用于从淘宝网站上爬取商品、店铺等数据。通过请求网页并解析返回的HTML内容,可以获取到所需的数据。
ARIMA时序预测模型:用于对淘宝店铺的销量进行预测。ARIMA模型是一种经典的时间序列分析方法,可以根据历史销量数据进行模型训练,然后预测未来的销量趋势。
MySQL数据库:用于存储和管理采集到的淘宝数据、历史销量数据和预测结果等。通过使用MySQL数据库,可以方便地进行数据的存取和管理。
淘宝数据采集分析可视预测系统的工作流程如下:
使用requests爬虫技术从淘宝网站上爬取商品、店铺等数据,并将其保存到MySQL数据库中。
从MySQL数据库中获取历史销量数据,用于ARIMA模型的训练。
使用ARIMA模型对淘宝店铺的销量进行预测,并将预测结果保存到MySQL数据库中。
使用Django框架构建Web界面,通过前端页面展示淘宝店铺的销量数据和预测结果,并提供数据可视化的功能,如折线图、柱状图等。
通过这个系统,用户可以方便地对淘宝店铺的销量进行预测和分析,从而帮助他们做出更准确的销售决策。
Arima模型的全称叫做自回归移动平均模型,是统计模型中最常见的一种用来进行时间序列 预测的模型。
(1)ARIMA的优点:
模型十分简单,只需要内生变量而不需要借助其他外生变量。
(2)ARIMA的缺点:
要求时序数据是稳定的,或者是通过差分化后是稳定的。本质上只能捕捉线性关系,而不能捕捉非线性关系。
注意,采用ARIMA模型预测时序数据,必须是稳定的,如果不稳定的数据,是无法捕捉到规律的。
import json import os import sqlite3 from collections import Counter from datetime import datetime import jieba import pandas as pd from django.contrib import auth from django.contrib.auth.decorators import login_required from django.http import JsonResponse from django.shortcuts import render, redirect from django.urls import reverse from statsmodels.tsa.arima.model import ARIMA from app.models import User @login_required def ciyun(request): query1 = 'select * from 淘宝数据' df1 = query_database(query1) def cy(df): # 词云图数据处理 titles = df['标题'].tolist() # 加载停用词表 stopwords = set() with open(BASE_DIR + r'./app/StopWords.txt', 'r', encoding='utf-8') as f: for line in f: stopwords.add(line.strip()) # 将数据进行分词并计算词频 words = [] for item in titles: if item: words += jieba.lcut(item.replace(' ', '')) word_counts = Counter([w for w in words if w not in stopwords]) # 获取词频最高的词汇 top20_words = word_counts.most_common() words_data = [] for word in top20_words: words_data.append({'name': word[0], 'value': word[1]}) return words_data word1 = cy(df1) return render(request, 'ciyun.html', locals()) @login_required def xiaoliang(request): query1 = 'select * from 淘宝数据' df1 = query_database(query1) def cy(sales_df): # 商品销量分布情况 data_dict = {} for i in sales_df: print(i) key = i[0] value = '0' if i[1]: value = str(i[1]).replace('万', '0000').replace('+', '').replace('评价', '').replace('.', '') if data_dict.get(key): data_dict[key] += int(value) else: data_dict[key] = int(value) sales_data = [] sales_key = [] for key, value in data_dict.items(): sales_key.append(key) sales_data.append({'name': key, 'value': value}) return sales_key, sales_data sales_key1, sales_data1 = cy(df1[['word', '销量']].values.tolist()) return render(request, 'xiaoliang.html', locals()) @login_required def map(request): query1 = 'select * from 淘宝数据' df1 = query_database(query1) # 地图销量数据处理 addr = df1[['发货地', '销量']] addr_data = addr.groupby('发货地')['销量'].sum() map_data = [] addr_dict = {} for key, value in addr_data.to_dict().items(): key = key.split(' ')[0] if addr_dict.get(key): addr_dict[key] += value else: addr_dict[key] = value for key, value in addr_dict.items(): map_data.append({'name': key, 'value': value}) return render(request, 'map.html', locals()) @login_required def map2(request): query1 = 'select * from 淘宝数据' df1 = query_database(query1) # 地图销量数据处理 addr = df1['发货地'].value_counts() map_data = [] addr_dict = {} for key, value in addr.to_dict().items(): key = key.split(' ')[0] if addr_dict.get(key): addr_dict[key] += value else: addr_dict[key] = value for key, value in addr_dict.items(): map_data.append({'name': key, 'value': value}) return render(request, 'map2.html', locals()) @login_required def jgxl(request): query1 = 'select * from 淘宝数据' df1 = query_database(query1) df1 = df1[['价格', '销量']] # 按价格升序排序 df1 = df1.sort_values(by=['价格']) # 使用布尔索引选择需要删除的行 rows_to_drop = df1['销量'] < 100 # 使用 drop() 方法删除行 df1 = df1.drop(df1[rows_to_drop].index) df1_data = [df1['价格'].tolist(), df1['销量'].tolist()] return render(request, 'jgxl.html', locals()) # ARIMA 时序预测模型 【销量预测】 @login_required def predict(request): def arima_model_train_eval(history): # 构造 ARIMA 模型 model = ARIMA(history, order=(1, 1, 1)) # 基于历史数据训练 model_fit = model.fit() # 预测接下来的3个时间步的值 output = model_fit.forecast(steps=3) yhat = output return yhat query1 = 'select * from 预测数据' df = query_database(query1) df = df[['名称', '2022/10月销量', '2022/11月销量', '2022/12月销量', '2023/01月销量', '2023/02月销量', '2023/03月销量']] df = df.groupby('名称').sum() df = df.reset_index() print(df) year_data = ['2022/10月销量', '2022/11月销量', '2022/12月销量', '2023/01月销量', '2023/02月销量', '2023/03月销量', '2023/04月销量', '2023/05月销量', '2023/06月销量'] data = df.iloc[:, 1:].values.tolist() bingxiang = data[0] + arima_model_train_eval(data[0]).tolist() xiyiji = data[1] + arima_model_train_eval(data[1]).tolist() dianshi = data[2] + arima_model_train_eval(data[2]).tolist() return render(request, 'predict.html', locals())
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。