354-基于Python的全国水稻数据可视化分析系统

技术文档与交付说明

更新时间:2026-03-28

1. 项目概述

项目名称:基于Python的全国水稻数据可视化分析系统

本系统基于全国水稻品种审定数据、行情文章和价格快照,构建了面向展示、分析、教学和后台管理的一体化平台。项目已完成从旧农产品通用系统向水稻主题系统的重构,当前已进入收尾与验收阶段。





















2. 当前完成状态

2.1 已完成模块

  • 水稻品种主数据导入与数据库重构
  • 前台首页、水稻品种、收藏中心、行情分析、数据图表、行情预测、留言建议、个人中心
  • 后台总览、水稻品种管理、价格快照查看、行情文章查看、收藏记录、留言管理、用户管理
  • 前后台统一水稻主题 UI
  • 前台登录页与后台登录页统一认证视觉风格
  • 预测模块优化为价格区间视图与趋势摘要视图

2.2 当前交付状态

  • 功能闭环已完成
  • 业务数据库已清理
  • 目录结构已整理
  • 技术文档已补齐

2.3 当前遗留的可选增强项

  • 若需要启用真实 LSTM 预测,需要继续对齐 TensorFlow 与 NumPy 环境
  • 若需要持续增量更新行情文章和价格快照,可继续扩展定时任务或自动化脚本

3. 技术栈

3.1 后端

  • Python 3.11
  • Flask 2.3.3
  • Flask-SQLAlchemy 3.0.5
  • Flask-CORS 6.0.0
  • Flask-Login 0.6.3
  • SQLAlchemy 2.0.23
  • PyMySQL 1.1.0

3.2 数据处理与分析

  • Pandas 2.2.3
  • NumPy 1.23.5
  • Statsmodels 0.14.6
  • Jieba 0.42.1
  • TensorFlow 2.12.0(可选)

3.3 爬取与同步

  • Requests 2.32.4
  • lxml 5.2.1
  • csv 标准库

3.4 前端

  • Jinja2 模板
  • Bootstrap
  • 自定义前台主题样式 rice-theme.css
  • 自定义后台主题样式 admin-rice-console.css
  • ECharts
  • Pyecharts WordCloud(仅亲本来源关键词词云)

3.5 依赖管理

推荐默认只安装主依赖;LSTM 需要时再单独补装可选依赖。

4. 系统架构

系统采用 Flask 单体应用结构,核心组成如下:

5. 数据源说明

5.1 主数据源

  • 文件:rice.csv
  • 编码:gb18030/gbk
  • 分隔符:;
  • 当前导入总量:20521

5.2 行情文章来源

  • 国家粮食和物资储备局
  • 粮信网

5.3 价格快照来源

  • 北京新发地

6. 数据库说明

6.1 当前数据库

  • 数据库名:design_354_rice

6.2 当前保留表

  • admin
  • user
  • comment
  • rice_variety
  • rice_variety_follow
  • rice_market_article
  • rice_price_snapshot

6.3 已删除旧业务表

  • products
  • product_follow
  • price_data
  • price_data_follow
  • food_real_time
  • analyze_data

6.4 当前数据量

截至 2026-03-28,当前记录数如下:

  • admin:5
  • user:7
  • comment:34
  • rice_variety:20521
  • rice_variety_follow:3
  • rice_market_article:13
  • rice_price_snapshot:678

7. 核心表结构

7.1 rice_variety

用途:存储水稻品种审定主数据。

字段:

  • id:主键
  • csv_no:CSV 序号
  • variety_name:品种名称
  • parent_source:亲本来源
  • rice_type:品种类型
  • breeder_org:原产地/选育单位
  • approval_number:审定编号,唯一
  • province:省份
  • maternal_parent:母本
  • approval_authority:审定方
  • approval_company:审定公司
  • approval_year:从审定编号中提取的年份
  • imported_at:导入时间

索引:

  • approval_number 唯一索引
  • variety_name
  • rice_type
  • province
  • approval_authority
  • approval_company
  • breeder_org
  • maternal_parent
  • approval_year

7.2 rice_variety_follow

用途:用户收藏水稻品种。

字段:

  • id
  • user_id
  • rice_variety_id
  • followed_at

约束:

  • user_id + rice_variety_id 唯一约束 uq_user_rice_variety

7.3 rice_market_article

用途:水稻行情文章库。

字段:

  • id
  • title
  • source_name
  • source_url
  • summary
  • content
  • published_at
  • fetched_at
  • keyword_tags

约束:

  • source_url 唯一

7.4 rice_price_snapshot

用途:价格序列与预测样本。

字段:

  • id
  • source_name
  • source_url
  • product_name
  • market_type
  • region
  • unit
  • low_price
  • high_price
  • avg_price
  • observed_on
  • fetched_at

约束:

  • (source_name, product_name, region, unit, observed_on) 唯一约束 uq_rice_price_snapshot

7.5 user

用途:前台用户信息。

字段:

  • id
  • username
  • password
  • email
  • phone
  • address
  • image
  • nickname
  • gender
  • age
  • info
  • reset_token

7.6 admin

用途:后台管理员账号。

字段:

  • id
  • username
  • password

7.7 comment

用途:留言建议。

字段:

  • id
  • user_id
  • content
  • created_at

8. 功能模块说明

8.1 前台模块

首页
  • 展示系统标题、统计信息、最新行情文章、价格快照预览、主流品种类型
  • 保留首页原有主题文案与袁隆平纪念信息
水稻品种
  • 支持关键词、省份、类型、审定方筛选
  • 支持分页展示
  • 支持收藏与取消收藏
收藏中心
  • 查看已收藏品种
  • 展示收藏时间和热门收藏统计
  • 提供基于收藏行为的内容相似推荐
行情分析
  • 展示抓取入库的水稻行情文章
  • 支持按标题和正文关键词检索
数据图表
  • 使用单页下拉切换图表,不再拆成多个页面
  • 大部分图表使用 ECharts 渲染
  • 亲本来源关键词保留词云显示
行情预测
  • 基于 rice_price_snapshot 构建价格预测
  • market_type 聚合为行情品类序列
  • 同时展示 最低价 / 均价 / 最高价 的历史走势与预测区间
  • 页面提供最新价格区间、最新均价、预测均价、观测节奏、趋势标签
  • 价格波动很小时前台会给出解释说明
留言建议
  • 支持异步发布留言
  • 用户仅能删除自己的留言
个人中心
  • 编辑资料
  • 忘记密码
  • 重置密码
  • 修改密码

8.2 后台模块

系统总览
  • 展示用户数、品种数、收藏数、文章数、价格快照数
水稻品种管理
  • 查看、检索、分页展示水稻品种
  • 支持重新同步 rice.csv
价格快照管理
  • 查看价格快照数据
  • 后台 UI 已移除价格快照同步入口
行情文章管理
  • 查看水稻行情文章
  • 后台 UI 已移除行情文章同步入口
收藏记录
  • 查看用户与水稻品种之间的收藏关系
留言管理
  • 查看、编辑、删除留言
用户管理
  • 查看用户
  • 新增用户
  • 编辑用户
  • 删除用户

9. UI 与交互优化说明

9.1 前台

  • 全站统一到水稻主题配色与卡片体系
  • 顶部品牌区已重做为水稻主题品牌块
  • 登录页与注册页已重做为统一认证页样式
  • 图表页已改为单页下拉切换
  • 预测页已增加行情摘要卡和价格区间图

9.2 后台

  • 后台壳子已重构为稻田主题控制台
  • 后台登录页已参考前台登录页统一到认证页设计
  • 后台列表、总览、表单与分页已统一主题风格

10. 数据导入与同步流程

10.1 迁移脚本

脚本:scripts/migrate_rice_system.py

执行流程:

  1. 执行 reset_business_tables() 删除并重建业务表
  2. 执行 sync_rice_varieties() 导入 rice.csv
  3. 执行 sync_rice_market_articles() 拉取行情文章
  4. 执行 sync_rice_price_snapshots() 拉取价格快照

10.2 同步逻辑

水稻品种同步
  • approval_number 去重
  • 自动清理不再存在的旧品种
  • 自动规范化省份空格
  • 自动提取审定年份
行情文章同步
  • 抓取官方源与行业源
  • source_url 去重
  • 重建文章表后重新入库
价格快照同步
  • 按水稻关键词抓取北京新发地价格
  • 按来源、产品、区域、单位、日期做唯一约束
  • 作为预测页面的价格样本

11. 图表、推荐与预测实现说明

11.1 图表实现

图表逻辑位于 util/analyze.py

  • 大部分图表直接输出 ECharts option
  • chart_parent_source_keywords() 使用 Pyecharts WordCloud

11.2 推荐逻辑

推荐基于收藏行为的内容相似规则:

  • rice_type 相同加权
  • province 相同加权
  • approval_authority 相同加权
  • approval_company 相同加权
  • maternal_parent 相同加权

无收藏记录时回退到热门收藏品种。

11.3 预测逻辑

  • get_market_price_frame():按日期聚合 low_price / avg_price / high_price
  • get_market_type_series():提取按 market_type 聚合后的均价序列
  • build_arima_forecast():对 low / avg / high 三条序列分别使用最近 36 个观测点拟合 ARIMA(1,1,1)
  • build_lstm_forecast():在 TensorFlow 可用且样本量满足条件时启用
  • build_forecast_summary():生成价格区间、预测均价、近期变化率、观测步长和趋势标签

补充说明:

  • 观测日期不是严格日频,系统用历史中位观测间隔推算未来时间轴
  • 若某类行情最近本身几乎不波动,预测接近平线属于合理结果
  • 若 TensorFlow 不可用或样本不足,接口会返回明确说明而不是报错

12. 路由概览

12.1 前台核心路由

  • /login
  • /register
  • /edit_profile
  • /forgot_password
  • /reset_password/<token>
  • /change_password
  • /user/
  • /user/list
  • /user/price_data_follow_list
  • /user/analyze_data
  • /user/chart
  • /user/predict_price_html
  • /user/predict_price
  • /user/list_comments

12.2 后台核心路由

  • /admin/login
  • /admin/dashboard
  • /admin/price_data_list
  • /admin/product_list
  • /admin/price_data_follow_list
  • /admin/analyze_data
  • /admin/comments
  • /admin/user_list
  • /admin/add_user
  • /admin/edit_user/<user_id>

13. 项目目录结构

text 复制代码
rice/
├─ app.py
├─ config.py
├─ ext.py
├─ models.py
├─ rice.csv
├─ design_354_rice.sql
├─ requirements.txt
├─ requirements-lstm.txt
├─ README.md
├─ docs/
│  └─ TECHNICAL_DOCUMENTATION.md
├─ blueprints/
│  ├─ admin.py
│  ├─ index.py
│  └─ user.py
├─ scripts/
│  └─ migrate_rice_system.py
├─ util/
│  ├─ analyze.py
│  └─ rice_sync.py
├─ templates/
│  ├─ admin/
│  ├─ base.html
│  ├─ index.html
│  ├─ price_data_list.html
│  ├─ price_data_follow_list.html
│  ├─ analyze_data.html
│  ├─ chart.html
│  ├─ predict_price_html.html
│  ├─ comments_list.html
│  ├─ login.html
│  ├─ register.html
│  └─ ...
└─ static/
   ├─ css/
   ├─ js/
   ├─ user/
   └─ admin/

14. 已完成的代码整理

已删除以下无关或废弃内容:

  • 旧农产品前台模板
  • 旧农产品后台模板
  • 旧爬虫目录 spider/
  • 旧训练脚本与模型产物
  • 未使用的 forms.py
  • 未使用的 manage.py
  • 旧说明文档 reademe.md
  • 旧依赖脚本 dependency.txt
  • .idea/__pycache__/

15. 部署与维护建议

  • 使用虚拟环境隔离依赖
  • 默认只安装 requirements.txt
  • 若需要真实 LSTM,再安装 requirements-lstm.txt
  • 若需要稳定启用 TensorFlow,请保持其与 NumPy 版本兼容
  • 生产环境建议将管理员密码改为哈希存储
  • 可继续补充 .env 或配置分层,避免数据库账号明文写在 config.py

16. 验证结论

经实际检查:

  • design_354_rice 只保留当前水稻业务相关表和基础用户表
  • 旧农产品业务表已删除
  • 当前目录结构已围绕水稻系统收敛
  • 预测接口、前台页面、后台页面、登录页和后台登录页均已完成当前阶段调试

当前项目已经具备完整交付与答辩使用条件。

相关推荐
码界筑梦坊2 小时前
336-基于Python的肺癌数据可视化分析预测系统
开发语言·python·信息可视化·数据分析·django·vue·毕业设计
AI科技星2 小时前
基于四维时空光速不变公设的量子几何与量子力学本质全维度推导验证
开发语言·人工智能·opencv·计算机视觉·数学建模·r语言
清水白石0082 小时前
《Python 性能优化实战:多进程并行 vs C/Rust/Cython 扩展的对比决策与团队落地指南》
python·spring·缓存
不会写DN2 小时前
Go 中最主流 JWT 库 jwt -go
开发语言·后端·golang
源码之家2 小时前
计算机毕业设计:基于Python与协同过滤的美食推荐系统 Django框架 可视化 协同过滤推荐算法 菜谱 食品 机器学习(建议收藏)✅
爬虫·python·机器学习·django·毕业设计·课程设计·美食
2501_921649492 小时前
RESTful 金融数据 API 文档:设计原则与最佳实践
开发语言·后端·python·金融·restful
workflower2 小时前
如何使用设计模式-误区
java·开发语言·设计模式·集成测试·软件工程·需求分析·软件需求
学以智用2 小时前
Python 批量重命名文件工具(完整示例)
后端·python
badhope2 小时前
如何将小厂Java项目包装出高并发架构演进感
python·程序员·ipython