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 # 项目文档(当前文件)
- 废弃传统的Top 10截断逻辑,采用"关键词捕捞"策略
- 将相关副产品(如油类、有机类)全部归入对应商品家族
- 支持多级优先级匹配:Canola Complex > Wheat Complex > Barley Family > Pulses Complex > Potash > Wood Pulp > Soya Beans
- 🌻 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
- 暖色/火焰系 (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
- 基于全量数据的出口总额自动排名
- 智能添加"(Top 1)"到"(Top 10)"排名标签
- 同步更新颜色映射字典,确保视觉一致性
- Stacked Bar + Total Line 双重展示
- 按Broad Category筛选的下拉菜单
- 响应式设计,支持多种设备访问
- 详细的数据悬停提示
# 使用 uv 创建虚拟环境(推荐)
uv sync
# 或使用传统方式
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/Mac
source .venv/bin/activate
pip install pandas plotly numpy- 确保
SK-CN_2024-2025Oct_Report.csv文件位于项目根目录 - 数据应包含以下关键字段:Period, Province, Commodity, Value ($), Quantity
# 运行主仪表板生成器
python generate_dashboard.py- 查看生成的
export_data.json(包含Top 10排名标签) - 打开
index.html查看交互式可视化图表 - 使用
jupyter notebook打开任何自定义分析(如有需要)
- 功能:数据加载、清洗、验证和存储
- 组件:CSV解析器、数据清洗器、质量检查器
- 文件:
generate_dashboard.py中的load_and_clean_data()函数
- 功能:关键词归集、家族映射、排名计算
- 组件:分类引擎、排名算法、颜色映射器
- 文件:
generate_dashboard.py中的分类和排名函数
- 功能:图表生成、交互处理、数据编码
- 组件:Plotly图表生成器、JSON编码器、Base64解码器
- 文件:
generate_dashboard.py中的可视化函数
- 功能:用户界面展示、交互响应、多格式输出
- 组件: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- 分析农业出口趋势,支持政策制定
- 识别高价值出口产品,优化贸易策略
- 了解市场竞争力,优化产品组合
- 跟踪竞争对手,制定市场策略
- 农业经济学研究案例
- 数据可视化教学方法
- 可视化展示农业出口重要性
- 提高公众对农业贸易的认识
# 主处理流程(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输出- 数据源扩展:支持更多年份和贸易伙伴数据
- 算法优化:引入机器学习进行智能分类
- 可视化增强:添加3D图表和地理信息展示
- 自动化报告:生成PDF和PPT格式的自动报告
- API服务:提供RESTful API供其他系统调用
- 颜色配置:在
COLOR_MAP常量中集中管理 - 关键词配置:在
BROAD_CATEGORY_KEYWORDS中定义 - 文件路径:通过
CSV_FILE_PATH常量配置
- 数据处理速度:可在2秒内处理652行原始数据
- 内存占用:峰值内存使用低于500MB
- 输出质量:生成包含完整交互功能的JSON数据
- 兼容性:支持Python 3.8+,无需GPU加速
项目包含完整的数据质量验证,确保:
- 功能正确性:所有核心功能按预期工作
- 数据完整性:无数据丢失或错误转换
- 视觉一致性:配色方案符合认知逻辑
- 排名准确性:Top 10排名基于正确计算
本项目采用 MIT 许可证。
欢迎通过以下方式贡献项目:
- 报告问题或建议功能
- 提交代码改进
- 更新文档
- 分享使用案例
- 项目仓库: https://github.com/wzhulifantastic/VisualSaskExport
- 问题反馈: 通过GitHub Issues提交
- 功能建议: 通过GitHub Discussions讨论
- ✅ 废弃Top 10截断逻辑,采用全量关键词归集
- ✅ 实现智能产品家族映射算法
- ✅ 引入认知逻辑配色方案
- ✅ 添加Top 10自动排名系统
- ✅ 重构为模块化生产级代码
- 基础数据可视化功能
- 简单的折线图和柱状图
- 基础数据清洗流程
项目创建者:wzhulifantastic
最后更新:2026年1月23日
版本:2.0.0