基于 Django 的城市空气质量监测分析系统设计与实现

作品简介

面向公众与环境管理者的城市空气质量监测分析系统:真实采集 12 个城市一年逐小时六项污染物与气象数据,按 HJ 633—2012 计算 AQI 与首要污染物,提供监测大屏、城市详情、区域对比、污染过程复盘、数据质量报告与预报对比实验,并支持原始数据下载。重点是把 AQI 数字变成可解释的结论。

技术栈

Python、Django、pandas、NumPy、scikit-learn、ECharts、MySQL

功能模块

  • 真实采集:Open-Meteo(CAMS 观测同化产品)逐小时 6 项污染物 + ERA5 气象,12 城 × 一年 = 105120 条,均 0 缺失;页面与论文如实标注「非地面站点实测」
  • AQI 严格按 HJ 633—2012:断点分段线性插值、24 小时均值(有效小时 ≥ 20)、O₃ 日最大 8h 滑动平均、AQI 取最大、首要污染物判定与六级分类
  • 数据质量:完整性统计(0 缺失)+ IQR 异常检测与真实极值归因(静稳累积型 / 沙尘型)+ 缺失填补受控实验
  • 缺失填补实验:线性插值 MAE 3.51–5.25 最优,前向填充 8.4–11.6,当日中位数 30–33,均值填充 47–51(PM2.5 时间自相关强,邻近时刻信息远优于全局统计量)
  • 污染过程复盘:识别 90 段 AQI 连续 ≥100 且 ≥2 天的过程,输出起止/天数/峰值/主因/等级;最长一段为兰州 2026 年 4 月持续 27 天、峰值 AQI 500 的沙尘过程
  • 城市与区域对比:日均 AQI 北京 117.7 最差、哈尔滨 50.9 最优;华北 107.4 > 东北 50.9;首要污染物呈地域特征(华北 PM2.5 / 兰州 PM10 / 沪深 NO₂ / 哈尔滨 O₃)
  • 预报对比实验:过去 3 天 → 次日日均 AQI,按时间顺序切分避免信息泄漏;持续性 17.12 / 线性回归 18.83 / 梯度提升 17.07(仅改善约 0.3%)
  • 可视化:深色数据大屏 + 城市卡片矩阵 + AQI 日历热力图 + 可缩放多污染物趋势 + 过程曲线(含风速)+ 原始数据在线下载

运行环境

  • 编程语言:Python 3.8 及以上
  • 后端框架:Django 4.2
  • 数据采集:requests 真实 HTTP 采集(Open-Meteo 空气质量 + ERA5 归档气象,带重试)
  • 数据分析:pandas 2.0 / NumPy 1.23 / scikit-learn 1.3
  • 数据库:MySQL 8.0(交付默认 SQLite,免安装)
  • 可视化:ECharts 5(已内置本地文件,离线可用)
  • 数据规模:12 城 × 8760 小时 = 105120 条,6 项污染物 + 3 项气象,0 缺失
  • 操作系统:Windows / macOS / Linux
  • 启动方式:双击一键脚本,或 python manage.py runserver 8083

界面截图

文档预览

交付的任务书、开题报告与论文均为 Word 文档,下面是真实页面预览:

交付内容

  • 完整源码(Django 工程 + 真实采集脚本 + AQI 计算 + 数据质控 + 分析 + 预报对比)
  • 真实采集的原始逐小时数据(data/raw/*.csv,12 城 + 城市清单,可在线下载)
  • 分析产物(每日 AQI、月度/日内画像、城市与区域对比、污染过程、数据质量、预报指标)与演示数据库
  • 毕业设计任务书(Word)
  • 开题报告(Word)
  • 毕业论文(Word,七章制,含数据来源与口径、数据质量实验、区域分析与预报对比章节)
  • 系统使用与二次开发说明(Word + md)
  • 11 张系统运行截图
创作时间: