基于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

完整代码可关注我获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值