当前位置: 首页 > news >正文

python 空气质量可视化,数据分析 + 前后端分离 + ppt 演讲大纲

1. 起因, 目的:

  • 前段时间写的一个小项目,整理为一篇文章,发布出去,然后删掉项目。
  • 完整项目,见顶部链接。
  • 使用过程, 下面有说明。

2. 先看效果

请添加图片描述
请添加图片描述

3. 过程:

  • 后端 python + fastapi
  • 前端 python + plotly

# 数据来源
空气数据来源: https://aqicn.org/city/tianjin/cn/  点击下载# 安装和运行步骤。## 1. 先安装依赖
> pip install -r requirements.txt## 2. 先启动后端服务 (运行顺序,永远都是,先启动后端 server, 然后再启动前端 app)
> cd backend                       # 进入后端目录
> uvicorn server_api:app --reload- 然后打开浏览器, 访问 http://127.0.0.1:8000/docs
- 注意这里,我的后端 python 文件名是 server_api.py, 这里需要保持一致,否则报错。## 3. 打开一个新的终端,再启动前端服务
> cd frontend                      # 进入前端目录
> python app.py## 4. 数据的含义,即,污染物名称介绍
- PM2.5  PM2.5 指直径小于或等于 2.5 微米的颗粒物,能深入肺部,对人体健康危害较大,常由燃烧、工业排放等产生。- PM10  PM10 指直径小于或等于 10 微米的颗粒物,包括尘土、烟雾等,可引发呼吸道疾病,主要来源于扬尘和工业活动。- NO2(二氧化氮)  NO2 是一种红棕色气体,主要由机动车尾气和燃煤排放产生,会刺激呼吸道并导致酸雨形成。- SO2(二氧化硫)  SO2 是一种无色刺激性气体,主要来源于燃煤和石油燃烧,会引起呼吸道疾病并形成酸雨。- CO(一氧化碳)  CO 是一种无色无味气体,主要由不完全燃烧产生(如机动车尾气),吸入高浓度会导致中毒甚至死亡。## 4. 图表讲解:
- 时间区间,可以选为 2024年10月 -- 2025年4月底(就是现在)
- 内容,可以使用 pm25折线图:
首先看折线图,它展示了 PM2.5 的每日浓度变化。我们可以看到,2024 年 10 月到 2025 年 2 月,浓度波动较大,多次超过 200 μg/m³,说明冬季污染较严重。而到了 2025 年 3 月和 4 月,浓度下降到 50-100 μg/m³,空气质量有所改善。”热力图:
“接下来是热力图,展示了 PM2.5 浓度的分布情况。颜色越亮,表示该浓度出现的频率越高。可以看到,冬季的浓度多集中在 100-200 μg/m³,春季则集中在 50-100 μg/m³,进一步验证了冬季污染更严重。”AQI 图表:
“这个图表展示了 AQI 的变化趋势,AQI 是综合多种污染物的空气质量指数。绿色表示优,黄色表示良,橙色和红色分别表示轻度和中度污染。我们可以看到,冬季 AQI 多次超过 150,甚至接近 200,说明空气质量较差,而春季改善为良或优。”柱状图:
“最后这个柱状图展示了 PM2.5 的月均浓度,帮助我们看长期趋势。冬季月份的浓度较高,例如 2023 年 1 月和 2024 年 1 月,接近 120 μg/m³,而夏季较低,在 50-70 μg/m³ 左右,显示出明显的季节性规律。”## 5. 项目结构
tianjin-air-quality-viz/
├── backend/                     # 后端应用
│   ├── server_api.py            # api 应用 
│   ├── tianjin-air-quality.csv  # 原始数据
│   ├── clean_data.py            # 数据清洗脚本
│   └── air_quality.db           # SQLite 数据库
├── frontend/               # 前端应用
│   ├── app.py              # Dash 应用
├── requirements.txt        # 依赖
├── README.md               # 项目说明

4. 结论 + todo


希望对大家有帮助。

http://www.xdnf.cn/news/741259.html

相关文章:

  • 设计模式——工厂方法模式(创建型)
  • RuoYi前后端分离框架实现前后端数据传输加密(一)之后端篇
  • pytest 中 fixture 与类继承交互导致的问题
  • JVM——云原生时代JVM的演进之路
  • 5.31 专业课复习笔记 12
  • azure web app创建分步指南系列之二
  • 云原生安全基石:Kubernetes 核心概念与安全实践指南
  • Vue能启动但访问空白?并报”export ‘default’ (imported as ‘Vue’) was not found in ‘vue’
  • 【手搓一个原生全局loading组件解决页面闪烁问题】
  • uni-app学习笔记十六-vue3页面生命周期(三)
  • 【算法】贪心算法
  • YOLOv10改进|爆改模型|涨点|在颈部网络添加结合部分卷积PConv和SDI融合方法的PSDI特征融合层(附代码+修改教程)
  • Asp.Net Core SignalR的协议协商问题
  • TomatoSCI分析日记:数据分析为什么用csv不用excel
  • JVM 基础 - JVM 内存结构
  • 【harbor】--介绍
  • AI集群运维的常见操作
  • 华为云Flexus+DeepSeek征文|华为云 Flexus X 加速 Dify 平台落地:高性能、低成本、强可靠性的云上选择
  • Leetcode 2819. 购买巧克力后的最小相对损失
  • leetcode17.电话号码的字母组合:字符串映射与回溯的巧妙联动
  • 力扣HOT100之动态规划:152. 乘积最大子数组
  • leetcode hot100刷题日记——34.将有序数组转换为二叉搜索树
  • 【基于SpringBoot的图书购买系统】Redis中的数据以分页的形式展示:从配置到前后端交互的完整实现
  • Spring Boot启动慢?Redis缓存击穿?Kafka消费堆积?——Java后端常见问题排查实战
  • 【R语言编程绘图-plotly】
  • 华为OD机试真题——生成哈夫曼树(2025A卷:100分)Java/python/JavaScript/C/C++/GO六种最佳实现
  • 《江西棒球资讯》棒球运动发展·棒球1号位
  • RLHF奖励模型的训练
  • 【C#】一个简单的http服务器项目开发过程详解
  • 前端八股HTTP和https大全套