Skip to content

Latest commit

 

History

History
263 lines (206 loc) · 8.83 KB

File metadata and controls

263 lines (206 loc) · 8.83 KB

VisualSaskExport - 萨斯喀彻温省农业出口智能可视化分析系统

项目概述

VisualSaskExport 是一个针对加拿大萨斯喀彻温省(Saskatchewan)农业出口数据的智能可视化分析系统。本项目采用"全量关键词归集"算法,通过产品家族映射和认知逻辑配色方案,提供深度的数据洞察和交互式可视化体验。

核心创新:废弃传统的Top 10截断逻辑,采用"关键词捕捞"算法,确保所有相关副产品(如油类、有机类)都被纳入对应的商品家族中,解决数据遗漏问题。

Data Source:Canadian International Merchandise Trade Web Application中Exports的Data extraction。

项目结构

.
├── generate_dashboard.py          # 🎯 主处理脚本 - 全流程数据处理与可视化生成
├── pyproject.toml                 # Python 项目配置
├── uv.lock                        # 依赖锁定文件
├── .python-version               # Python 版本指定
├── index.html                    # Web 可视化界面
├── export_data.json              # 🚀 导出的可视化数据(含Top 10排名标签)
├── SK-CN_2024-2025Oct_Report.csv # 萨斯喀彻温-中国农业出口报告数据(2024-2025)
├── .gitignore                    # Git 忽略配置
├── LICENSE                       # 许可证文件
└── README.md                     # 项目文档(当前文件)

🚀 核心功能特性

1. 全量关键词归集算法

  • 废弃传统的Top 10截断逻辑,采用"关键词捕捞"策略
  • 将相关副产品(如油类、有机类)全部归入对应商品家族
  • 支持多级优先级匹配:Canola Complex > Wheat Complex > Barley Family > Pulses Complex > Potash > Wood Pulp > Soya Beans

2. 智能产品家族映射

  • 🌻 Canola Complex (菜籽家族): ['rape', 'colza', 'canola', '1514']
  • 🌾 Wheat Complex (小麦家族): ['wheat', 'durum']
  • 🌱 Barley Family (大麦家族): ['barley']
  • 🟢 Pulses Complex (豆类家族): ['pea', 'lentil', 'chickpea']
  • 💎 Potash (钾肥): ['potassium', 'potash']
  • 🌲 Others (其他): Wood Pulp, Soya Beans

3. 认知逻辑配色方案

  • 暖色/火焰系 (Canola Family): 种子#C62828 → 油渣#EF6C00 → 毛油#FFB300 → 精炼油#FFD600
  • 蓝色/海洋系 (Wheat Family): 1级小麦#1565C0 → 2级小麦#42A5F5 → 硬质小麦#455A64
  • 绿色/自然系 (Barley Family): 酿酒大麦#2E7D32 → 饲料大麦#81C784
  • 大地色系 (Pulses Complex): 黄豌豆#F9A825 → 绿豌豆#CDDC39 → 扁豆#795548
  • 紫色系 (Potash): #9C27B0
  • 材质本色 (Others): 木浆#5D4037 → 大豆#00BCD4

4. Top 10智能排名系统

  • 基于全量数据的出口总额自动排名
  • 智能添加"(Top 1)"到"(Top 10)"排名标签
  • 同步更新颜色映射字典,确保视觉一致性

5. 交互式可视化

  • Stacked Bar + Total Line 双重展示
  • 按Broad Category筛选的下拉菜单
  • 响应式设计,支持多种设备访问
  • 详细的数据悬停提示

📋 使用步骤

步骤 1:环境设置

# 使用 uv 创建虚拟环境(推荐)
uv sync

# 或使用传统方式
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/Mac
source .venv/bin/activate
pip install pandas plotly numpy

步骤 2:数据准备

  • 确保 SK-CN_2024-2025Oct_Report.csv 文件位于项目根目录
  • 数据应包含以下关键字段:Period, Province, Commodity, Value ($), Quantity

步骤 3:运行完整分析

# 运行主仪表板生成器
python generate_dashboard.py

步骤 4:查看结果

  • 查看生成的 export_data.json (包含Top 10排名标签)
  • 打开 index.html 查看交互式可视化图表
  • 使用 jupyter notebook 打开任何自定义分析(如有需要)

🏗️ 系统架构

1. 数据层(Data Layer)

  • 功能:数据加载、清洗、验证和存储
  • 组件:CSV解析器、数据清洗器、质量检查器
  • 文件generate_dashboard.py中的load_and_clean_data()函数

2. 业务逻辑层(Business Logic Layer)

  • 功能:关键词归集、家族映射、排名计算
  • 组件:分类引擎、排名算法、颜色映射器
  • 文件generate_dashboard.py中的分类和排名函数

3. 可视化层(Visualization Layer)

  • 功能:图表生成、交互处理、数据编码
  • 组件:Plotly图表生成器、JSON编码器、Base64解码器
  • 文件generate_dashboard.py中的可视化函数

4. 展示层(Presentation Layer)

  • 功能:用户界面展示、交互响应、多格式输出
  • 组件:HTML界面、JSON数据文件
  • 文件index.html, export_data.json

🔄 数据处理流程

原始CSV数据 (652行)
      ↓
[数据清洗] → 过滤Saskatchewan省份、类型转换、拆分字段
      ↓
清洗后数据 (363行有效数据)
      ↓
[关键词归集] → 应用7大家族关键词映射
      ↓
分类后数据 (按家族分组)
      ↓
[Top 10排名] → 计算出口总额、添加排名标签
      ↓
[颜色映射] → 应用认知逻辑配色方案
      ↓
[可视化生成] → 创建Stacked Bar + Total Line图表
      ↓
JSON输出 → export_data.json (包含完整交互数据)
      ↓
Web展示 → index.html (交互式可视化界面)

📊 数据质量保证

关键质量指标

  • Canola Complex完整性: 确保包含4个产品(Seeds, Cake, Crude Oil, Refined Oil)
  • 无数据遗漏: 全量关键词归集,无产品被错误过滤
  • 颜色一致性: 所有产品都有专用配色,无默认颜色
  • 排名准确性: Top 10按出口总额正确排序

🛠️ 技术栈与依赖

核心依赖

  • Python 3.12+(由 .python-version 指定)
  • pandas - 高性能数据处理
  • plotly - 交互式可视化
  • numpy - 数值计算

开发工具

  • uv - 快速的Python包管理器
  • Git - 版本控制
  • Visual Studio Code - 开发环境

安装方式

# 使用 uv(推荐)
uv sync

# 或使用 pip
pip install pandas plotly numpy

🎯 应用场景

1. 政府决策支持

  • 分析农业出口趋势,支持政策制定
  • 识别高价值出口产品,优化贸易策略

2. 农业企业分析

  • 了解市场竞争力,优化产品组合
  • 跟踪竞争对手,制定市场策略

3. 学术研究

  • 农业经济学研究案例
  • 数据可视化教学方法

4. 公众教育

  • 可视化展示农业出口重要性
  • 提高公众对农业贸易的认识

🔧 开发与扩展

代码模块结构

# 主处理流程(generate_dashboard.py)
1. load_and_clean_data()      # 数据加载与清洗
2. apply_classifications()    # 关键词归集分类
3. apply_ranking_labels()     # Top 10排名标签
4. generate_plot()           # 可视化生成
5. save_plot_to_json()       # JSON输出

扩展方向

  1. 数据源扩展:支持更多年份和贸易伙伴数据
  2. 算法优化:引入机器学习进行智能分类
  3. 可视化增强:添加3D图表和地理信息展示
  4. 自动化报告:生成PDF和PPT格式的自动报告
  5. API服务:提供RESTful API供其他系统调用

配置管理

  • 颜色配置:在 COLOR_MAP 常量中集中管理
  • 关键词配置:在 BROAD_CATEGORY_KEYWORDS 中定义
  • 文件路径:通过 CSV_FILE_PATH 常量配置

📈 性能指标

  • 数据处理速度:可在2秒内处理652行原始数据
  • 内存占用:峰值内存使用低于500MB
  • 输出质量:生成包含完整交互功能的JSON数据
  • 兼容性:支持Python 3.8+,无需GPU加速

🧪 测试与验证

项目包含完整的数据质量验证,确保:

  1. 功能正确性:所有核心功能按预期工作
  2. 数据完整性:无数据丢失或错误转换
  3. 视觉一致性:配色方案符合认知逻辑
  4. 排名准确性:Top 10排名基于正确计算

📄 许可证

本项目采用 MIT 许可证。


🤝 贡献指南

欢迎通过以下方式贡献项目:

  1. 报告问题或建议功能
  2. 提交代码改进
  3. 更新文档
  4. 分享使用案例

📞 支持与联系

🔄 更新日志

v2.0 (2026-01-23) - 重大升级

  • ✅ 废弃Top 10截断逻辑,采用全量关键词归集
  • ✅ 实现智能产品家族映射算法
  • ✅ 引入认知逻辑配色方案
  • ✅ 添加Top 10自动排名系统
  • ✅ 重构为模块化生产级代码

v1.0 (2025-12) - 初始版本

  • 基础数据可视化功能
  • 简单的折线图和柱状图
  • 基础数据清洗流程

项目创建者:wzhulifantastic
最后更新:2026年1月23日
版本:2.0.0