基于Python的诺贝尔奖数据可视化分析系统 — 技术文档
1. 项目概述
1.1 项目背景
诺贝尔奖自 1901 年首次颁发以来,已有超过百年的历史,涵盖物理学、化学、生理学或医学、文学、和平、经济学六大领域。本系统旨在通过数据可视化技术,对诺贝尔奖获奖数据进行多维度分析,帮助用户直观了解百年学术荣耀的数据规律。
1.2 项目目标
- 提供完整的诺贝尔奖数据浏览与管理功能
- 实现多维度数据可视化分析(年度趋势、地理分布、人口统计、交叉对比)
- 支持全屏可视化大屏展示
- 提供用户认证与角色权限管理(普通用户 + 管理员)
- 支持数据的 CSV 导入/导出
1.3 技术选型
| 层次 | 技术 | 版本 | 说明 |
|---|---|---|---|
| 后端框架 | FastAPI | 0.104.1 | 高性能异步 Web 框架 |
| 模板引擎 | Jinja2 | 3.1.2 | 服务端 HTML 模板渲染 |
| 前端框架 | Bootstrap | 5.x | 响应式 CSS 组件库 |
| 图表库 | ECharts | 5.x | 百度开源可视化图表库 |
| 图标库 | Bootstrap Icons | 精简版 | 约 400 个常用图标 |
| 数据库 | MySQL | 5.7+ | 关系型数据库 |
| 数据库驱动 | PyMySQL | 1.1.0 | Python MySQL 连接器 |
| 数据分析 | Pandas | 2.1.4 | 数据处理与分析库 |
| 数值计算 | NumPy | 1.25.2 | 科学计算库 |
| 密码加密 | Passlib + bcrypt | 1.7.4 | 安全密码哈希 |
| ASGI 服务器 | Uvicorn | 0.24.0 | 异步 HTTP 服务器 |
| 配置管理 | PyYAML | 6.0.1 | YAML 配置文件解析 |
2. 系统架构
2.1 整体架构
系统采用 MVC(Model-View-Controller) 架构模式:
┌──────────────────────────────────────────────┐
│ 浏览器 (Browser) │
│ HTML + Bootstrap + ECharts │
└────────────────────┬─────────────────────────┘
│ HTTP
┌────────────────────▼─────────────────────────┐
│ FastAPI 路由层 (main.py) │
│ ┌─────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ 认证路由 │ │ 分析路由 │ │ 管理/API 路由 │ │
│ └────┬────┘ └─────┬────┘ └──────┬────────┘ │
│ │ │ │
│ │ │ │
│ ┌────▼────────────▼──────────────▼────────┐ │
│ │ 业务逻辑 + Pandas 数据处理 │ │
│ └────────────────┬───────────────────────┘ │
└───────────────────┼──────────────────────────┘
┌───────────────────▼──────────────────────────┐
│ 数据层 (database.py) │
│ ┌──────────────┐ ┌─────────────────────┐ │
│ │ 用户管理 │ │ 数据集管理 │ │
│ └──────────────┘ └─────────────────────┘ │
└───────────────────┬──────────────────────────┘
│ PyMySQL
┌───────────────────▼──────────────────────────┐
│ MySQL 数据库 │
│ design_220_nobel (users + dataset_data) │
└──────────────────────────────────────────────┘


