基于Python flask的淘宝商品数据分析可视化系统,包括大屏和主题分析,还有回归预测

背景介绍

随着电子商务的迅猛发展,平台上积累了大量的用户行为和商品交易数据。这些数据蕴含着极大的商业价值,可以为市场趋势预测、商品优化以及用户行为分析提供重要的参考。淘宝作为全球最大的在线购物平台之一,拥有海量的商品和用户数据,通过对这些数据的深入分析,不仅可以帮助卖家优化商品运营策略,还可以为平台改进推荐算法和用户体验提供支持。

基于Python Flask的淘宝商品数据分析可视化系统,旨在通过数据分析和可视化技术,为淘宝商品的销售数据和用户反馈进行深入分析。该系统通过对商品评论、价格趋势、销量数据等多维度信息的整合与分析,揭示商品的销售动态、用户偏好以及市场需求的变化情况。

系统分为两个主要模块:大屏可视化展示主题分析。大屏展示模块主要用于展示淘宝商品的宏观数据概览,通过如销量、价格区间、用户评论情感分布等关键指标的实时可视化,帮助用户快速把握全局情况。主题分析模块则采用自然语言处理(NLP)技术,对用户评论进行情感分析和主题聚类,帮助分析商品的受欢迎程度及潜在问题。

该系统基于Flask框架构建,具有轻量、灵活和可扩展的特点,同时集成了数据清洗、分析以及多种交互式图表,极大地方便了用户进行淘宝商品的深度分析与展示,赋能电商数据决策和优化策略。

技术栈

flask+爬虫+MySQL+css+HTML+js+echarts

效果

爬虫代码

for word in ['洗碗机']:
    page = 0
    while True:
        time.sleep(2)
        url = f'https://s.taobao.com/search?data-key=s&data-value={page}&ajax=true&_ksTS=1679972528363_743&q={word}&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.jianhua.201856-taobao-item.2&ie=utf8&initiative_id=tbindexz_20170306&bcoffset=2&ntoffset=6&p4ppushleft=2%2C48'
        while True:
            try:
                res = requests.get(url=url, headers=headers, timeout=(2, 2))
                break
            except:
                pass
        res = res.json()
        print(page)
        page += 44
        if page > 1100:
            break
        for i in res['mods']['itemlist']['data']['auctions']:
            try:
                dic = {}
                text0 = i['title']
                pattern = re.compile(r'<[^>]+>', re.S)
                dic['word'] = word
                dic['标题'] = str(pattern.sub('', text0)).replace('\n', '')
                dic['价格'] = i['view_price']
                dic['nid'] = i['nid']
                dic['user_id'] = i['user_id']
                dic['发货地'] = i['item_loc']
                dic['销量'] = int(
                    str(i['view_sales']).replace('人付款', '').replace('+', '').replace('+人付款', '').replace('万', '0000'))
                if i['detail_url'][0] == '/':
                    urls = 'https:' + i['detail_url']
                else:
                    urls = i['detail_url']
                dic['链接'] = urls
                dic['店铺名称'] = i['nick']
                dataa.append(dic)

                print(dic)
            except:
                pass
        dataframe = pd.DataFrame(dataa)
        dataframe.to_csv("商品.csv")

后端主要代码

from collections import Counter
import jieba
from flask import Flask, render_template, request
from snownlp import SnowNLP
from select_database import query_database,query
import copy
import numpy as np
import random
from sklearn.linear_model import LinearRegression
import time

app = Flask(__name__)

# 回归预测
def predict_linear():
    # 预测变量
    y = get_history_data()["price"].tolist()
    y = [float(i) for i in y]

    # 输出变量
    x = [i for i in range(1, len(y) + 1)]
    x = np.array(x).reshape((-1, 1))

    model = LinearRegression()

    model.fit(x, y)
    model = LinearRegression().fit(x, y)

    y_pred = list(model.predict(x))
    return y_pred

# 感情分析和商品价格区间
def get_data(df, df_con, path):
    # 评论情感分析
    comments = df_con['con']  # 提取评论内容列
    # 对每条评论进行情感分析,并统计积极、消极、中立数量
    positive_count = 0
    negative_count = 0
    neutral_count = 0
    for comment in comments:
        s = SnowNLP(comment)
        if s.sentiments > 0.6:
            positive_count += 1
        elif s.sentiments < 0.4:
            negative_count += 1
        else:
            neutral_count += 1

    # 商品价格区间分布
    data_res = [[], [], [], [], [], [], [], [], [], []]
    for data in df['price'].values.tolist():
        # print(data)
        if data <= 1000:
            data_res[0].append(data)
        if 1000 < data <= 2000:
            data_res[1].append(data)
        if 2000 < data <= 3000:
            data_res[2].append(data)
        if 3000 < data <= 4000:
            data_res[3].append(data)
        if 4000 < data <= 5000:
            data_res[4].append(data)
        if 5000 < data <= 10000:
            data_res[6].append(data)
        if 10000 < data <= 20000:
            data_res[7].append(data)
        if 20000 < data <= 50000:
            data_res[8].append(data)
        if 50000 < data:
            data_res[9].append(data)

    if path is None:
        path = '综合'
    data_col = [f'{path}价格0~1000元',
                f'{path}价格1000~2000元',
                f'{path}价格2000~3000元',
                f'{path}价格3000~4000元',
                f'{path}价格4000~5000元',
                f'{path}价格5000~10000元',
                f'{path}价格10000~20000元',
                f'{path}价格20000~50000元',
                f'{path}价格50000元以上的', ]
    data_num = [len(i) for i in data_res]
    data_price_interval = []
    for key, value in zip(data_col, data_num):
        data_price_interval.append({'name': key, 'value': value})

    return positive_count, negative_count, neutral_count, data_price_interval

完整代码可关注我获取!

相关推荐
科研小白 新人上路3 分钟前
基于python深度学习遥感影像地物分类与目标识别、分割实践技术
python·tensorflow·目标识别·遥感影像·地物分类·城市规划·林业测量
YesPMP平台官方3 分钟前
动动手指探索世界,旅游APP如何定制开发?
大数据·小程序·数据分析·app·旅游·软件开发
阿华的代码王国4 分钟前
【JavaEE】——内存可见性问题
开发语言·python
喵手9 分钟前
MySQL增删面试题
数据库·mysql
码猿小菜鸡9 分钟前
【小六壬占卜代码】
开发语言·人工智能·python·占卜
Bosenya1213 分钟前
【PyTorch】Tensor(张量)介绍
人工智能·pytorch·python
沐风ya16 分钟前
mysql复合查询 -- 合并查询(union,union all)
数据库·mysql
苹果醋316 分钟前
第一章:开始学习C语言-1介绍C语言
java·运维·spring boot·mysql·nginx
齐潇洒。31 分钟前
Python爬虫之requests模块(一)
开发语言·爬虫·python
音程1 小时前
使用Python的subprocess执行另外一个python文件(应用之一是Pytorch中如何让多个不同的模型同时/并行进行训练)
linux·服务器·python