饮品销量数据分析可视化平台
霸王茶姬饮品销量数据分析平台项目报告
一、项目概述
本项目是霸王茶姬饮品销量数据分析平台,基于 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 布局,移动端自动折叠为单列
四、数据流程与工作流程
-
启动应用:执行 app.py,检查数据库是否存在;若不存在则调用 init_db():
- 读取 CSV 文件(位于 ../data/bawangchaji_sales.csv)
- 创建 SQLite 表 sales
- 逐行解析并插入数据
-
用户访问首页:浏览器请求 /,Flask 渲染 index.html,同时将四个 KPI 数值嵌入模板。
-
前端加载后自动请求 API:
- charts.js 在页面加载完成后,依次调用所有 /api/* 接口(通过 fetch)
- 收到 JSON 数据后,使用 ECharts 渲染对应的图表容器
-
图表渲染与交互:每个图表独立配置,包括坐标轴、颜色、提示框等,最终呈现完整的分析看板。
-
用户交互:可悬停查看数据点、缩放时间轴、调整窗口大小后图表自动重绘。
五、项目特色
- 全自动数据初始化:无需手动建表,启动即自动完成数据迁移。
- 丰富的分析维度:涵盖时间、产品、城市、季节、天气、营销、节假日、折扣共 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
成果展示

七、总结
本项目以极简的代码实现了一个功能完整的数据分析看板,体现了 Flask 与 ECharts 的高效组合。其数据导入、API 设计、前端渲染流程清晰,适合作为中小型企业或团队内部数据监控的快速原型。
后续可扩展方向
- 增加时间筛选器:允许用户自定义时间范围,动态刷新图表。
- 增加同比/环比分析:计算增长率,更直观反映变化趋势。
- 导出报表:支持将当前图表导出为图片或 PDF。
- 接入更多数据源:支持 Excel、数据库等,替换 CSV。
- 引入权限管理:区分不同角色(管理员、普通用户)的访问权限。
- 部署至云服务器:使用 Gunicorn + Nginx 实现生产环境部署。
浙公网安备 33010602011771号