饮品销量数据分析可视化平台

霸王茶姬饮品销量数据分析平台项目报告

一、项目概述

本项目是霸王茶姬饮品销量数据分析平台,基于 Flask 后端 + ECharts 前端构建的数据可视化 Web 应用。平台通过读取霸王茶姬全国多城市、多产品、多时间维度的销售数据,提供 KPI 总览、月度趋势、产品/城市排名、季节/天气/营销影响等十余种分析维度,帮助业务人员快速洞察销售表现与关键影响因素。

主要目标

  • 自动将 CSV 数据导入 SQLite 数据库,实现高效查询
  • 提供 RESTful API 接口,供前端获取聚合数据
  • 使用 ECharts 渲染交互式图表,直观展示各类分析结果
  • 以卡片形式展示核心 KPI(总销量、总营收、记录条数、会员占比)

适用场景

  • 饮品连锁品牌经营数据分析
  • 市场活动效果评估(节假日、促销、限定活动)
  • 产品结构与区域市场表现监测
  • 教学演示或数据可视化案例展示

二、技术架构

层级 技术选型 说明
后端框架 Flask(Python) 提供路由、API 和静态文件服务
数据库 SQLite 轻量级嵌入式数据库,无需单独部署
数据导入 csv + sqlite3 读取 CSV 并建表、插数据
前端可视化 ECharts 5.5.0 丰富的图表类型,交互式渲染
前端样式 原生 CSS + 自定义变量 响应式布局,适配移动端
数据源 bawangchaji_sales.csv 包含 2025 年全年多维度销售记录

核心设计模式:后端仅提供数据接口(API),前端完全静态,通过 AJAX 获取数据并渲染图表,实现了前后端分离。

三、功能模块详解

3.1 数据导入与初始化模块(init_db)

  • 在应用首次启动时执行
  • 删除已存在的 sales 表,重新创建符合数据结构的表
  • 读取 CSV 文件,逐行插入数据库
  • 字段映射:日期、城市、门店编号、产品名称、产品类别、单价、销量、折扣、实付金额、会员占比、天气、季节、是否节假日、营销活动

3.2 数据库查询模块(query)

  • 封装 SQLite 查询,返回字典列表
  • 自动处理连接和关闭,简化业务代码
  • 所有 API 均基于此函数实现数据聚合

3.3 后端 API 接口(Flask 路由)

接口 功能 返回数据
/ 首页,渲染 index.html 嵌入 KPI 数值
/api/summary 总览 KPI 总销量、总营收、记录数、平均会员占比
/api/monthly 月度趋势 每月销量、营收
/api/product_rank 产品销量排名 各产品销量、营收
/api/city_rank 城市销量排名 各城市销量、营收
/api/season 季节对比 四季销量、营收
/api/category_pie 产品类别占比 各类别销量
/api/weather 天气影响 各天气条件下的平均销量、总销量
/api/campaign 营销活动效果 各活动平均销量、总营收、天数
/api/holiday 节假日对比 节假日/非节假日的平均销量、营收
/api/discount 折扣分析 不同折扣下的平均销量
/api/city_product 城市×产品热力图 矩阵数据及坐标标签

3.4 前端可视化模块(ECharts)

前端由 index.html(结构)、style.css(样式)、charts.js(图表逻辑)组成:

  • KPI 卡片:通过 /api/summary 动态更新数值
  • 图表类型
    • 折线图 + 柱状图组合(月度趋势)
    • 横向柱状图(产品排名)
    • 饼图(类别占比)
    • 纵向柱状图(城市排名、季节、天气、活动、折扣)
    • 热力图(城市×产品)
  • 交互性:所有图表支持缩放、悬停提示、自适应窗口大小
  • 响应式:CSS Grid 布局,移动端自动折叠为单列

四、数据流程与工作流程

  1. 启动应用:执行 app.py,检查数据库是否存在;若不存在则调用 init_db():

    • 读取 CSV 文件(位于 ../data/bawangchaji_sales.csv)
    • 创建 SQLite 表 sales
    • 逐行解析并插入数据
  2. 用户访问首页:浏览器请求 /,Flask 渲染 index.html,同时将四个 KPI 数值嵌入模板。

  3. 前端加载后自动请求 API

    • charts.js 在页面加载完成后,依次调用所有 /api/* 接口(通过 fetch)
    • 收到 JSON 数据后,使用 ECharts 渲染对应的图表容器
  4. 图表渲染与交互:每个图表独立配置,包括坐标轴、颜色、提示框等,最终呈现完整的分析看板。

  5. 用户交互:可悬停查看数据点、缩放时间轴、调整窗口大小后图表自动重绘。

五、项目特色

  • 全自动数据初始化:无需手动建表,启动即自动完成数据迁移。
  • 丰富的分析维度:涵盖时间、产品、城市、季节、天气、营销、节假日、折扣共 8 个视角,共 10 余个图表。
  • 前后端分离:后端只提供数据 API,前端完全独立渲染,易于扩展和二次开发。
  • 轻量级部署:仅需 Python 环境 + 依赖库,无需配置复杂数据库。
  • 视觉风格统一:采用品牌色调(紫色+橙色),卡片式布局清晰美观,响应式适配移动端。

六、部署与运行

环境准备

  • Python 3.7+

安装依赖

pip install flask

文件结构

项目根目录/
├── backend/
│   ├── app.py                     # Flask 主程序
│   └── bawangchaji_sales.db       # 自动生成的 SQLite 数据库
├── data/
│   └── bawangchaji_sales.csv      # 原始数据(需存在)
├── frontend/
│   ├── index.html                 # 首页模板
│   ├── css/
│   │   └── style.css              # 样式文件
│   └── js/
│       └── charts.js              # 图表逻辑

运行方式

python app.py

成果展示

image

七、总结

本项目以极简的代码实现了一个功能完整的数据分析看板,体现了 Flask 与 ECharts 的高效组合。其数据导入、API 设计、前端渲染流程清晰,适合作为中小型企业或团队内部数据监控的快速原型。

后续可扩展方向

  • 增加时间筛选器:允许用户自定义时间范围,动态刷新图表。
  • 增加同比/环比分析:计算增长率,更直观反映变化趋势。
  • 导出报表:支持将当前图表导出为图片或 PDF。
  • 接入更多数据源:支持 Excel、数据库等,替换 CSV。
  • 引入权限管理:区分不同角色(管理员、普通用户)的访问权限。
  • 部署至云服务器:使用 Gunicorn + Nginx 实现生产环境部署。
posted @ 2026-08-18 15:42  Hsibo  阅读(16)  评论(0)    收藏  举报