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

article/2025/6/24 20:44:45

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.hkcw.cn/article/DaYbBKgvat.shtml

相关文章

|从零开始的Pyside2界面编程|绘图、布局及页面切换

🐑 |从零开始的Pyside2界面编程| 布局及页面切换🐑 文章目录 🐑 |从零开始的Pyside2界面编程| 布局及页面切换🐑♈前言♈♈页面切换♈♈页面布局♈♈总结♈ ♈前言♈ 经过两周的学习自己设备的前端也算是完成了一小半了&#xff…

我的世界Java版1.21.4的Fabric模组开发教程(十一)创建方块

这是适用于Minecraft Java版1.21.4的Fabric模组开发系列教程专栏第十一章——创建方块。想要阅读其他内容,请查看或订阅上面的专栏。 方块(Block) 是构成Minecraft世界的主要组成部分,是组成游戏地图的最基本单元,也是模组开发的核心元素之一…

计算机网络:物理层

目录 一、物理层的基本概念 二、物理层下面的传输媒体 2.1 导引型传输媒体 2.1.1 同轴电缆 2.1.2 双绞线 2.1.3 光纤 2.1.4 电力线 2.2 非导引型传输媒体 2.2.1 无线电波 2.2.2 微波 2.2.3 红外线 2.2.4 可见光 三、传输方式 3.1 串行与并行 3.2 同步与异步 3.…

我的世界Java版1.21.4的Fabric模组开发教程(十)更多物品交互行为

这是适用于Minecraft Java版1.21.4的Fabric模组开发系列教程专栏第十章——更多物品交互行为。想要阅读其他内容,请查看或订阅上面的专栏。 在之前的创建自定义数据组件章节中,我们在自定义物品类中重写了来自Item类中的use()方法,实现了在右…

Linux531rsync定时同步 再回忆

rsync定时同步 环境配置 关闭防火墙,selinux systemctl stop firewalld systemctl disable firewall setenforce 0 cat /etc/selinux/configpei SELINUXdisable设置主机名 systemctl set-hostname code systemctl set-hostname backup设置静态IP rsync由于要设…

MySQL数据库复合查询

前言:本文不对SQL查询做详细讲解,而做案例实践,适合已掌握MySQL基础语法,需要通过实际案例巩固技能的开发者。 首先准备这样三张表 雇员信息表、部门信息、薪水等级。如下: 需要库文件的小伙伴私信我哦!&am…

STM32 串口通信①:USART 全面理解 + 代码详解

一 前言 本篇文章并不会系统的从零开始讲起,适合大家对USART有一定的学习,再看本篇文章会有一定的收获,祝大家在本文中,吸收到新的知识。 二 通信方式 1)按数据传输的方式分(这就是“串行 vs 并行”&…

基于图神经网络的自然语言处理:融合LangGraph与大型概念模型的情感分析实践

在企业数字化转型进程中,非结构化文本数据的处理与分析已成为核心技术挑战。传统自然语言处理方法在处理客户反馈、社交媒体内容和内部文档等复杂数据集时,往往难以有效捕获文本间的深层语义关联和结构化关系。大型概念模型(Large Concept Mo…

极地导航的难点及应对措施(上)

在之前的博文《南北极导航选用什么投影?》和何老师的博文《高纬度、跨极区导航技术》中简单说了说南北极导航的投影设置问题。 本文主要说一说南北极导航中实际工作的难点问题以及应对措施。下图是南北极的位置图,从图中可以看出,南极是大陆…

Centos系统搭建主备DNS服务

目录 一、主DNS服务器配置 1.安装 BIND 软件包 2.配置主配置文件 3.创建正向区域文件 4.创建区域数据文件 5.检查配置语法并重启服务 二、从DNS服务配置 1.安装 BIND 软件包 2.配置主配置文件 3.创建缓存目录 4.启动并设置开机自启 一、主DNS服务器配置 1.安装 BIN…

【图像处理入门】3. 几何变换基础:从平移旋转到插值魔法

摘要 掌握图像的几何变换相当于学会「图像的空间魔法」。本文将带你理解平移/旋转/缩放的数学原理,掌握OpenCV中warpAffine和getAffineTransform的核心用法,对比最近邻、双线性等插值算法的优劣。通过图像翻转、镜像、透视变换实战,学会用变…

TomatoSCI分析日记:数据分析为什么用csv不用excel

其实并不是多余,虽然看到的内容是一样的,但是相比excel文件,csv文件没这么多繁文缛节,效率更高。 1.csv更干净 csv本质是纯文本,只有你看到的数据,没有花里胡哨的单元格格式、颜色、批注等隐藏信息&#…

【鱼皮-用户中心】笔记

任务:完整了解做项目的思路,接触一些企业及的开发技术 title 企业做项目流程需求分析技术选型 计划一一、前端初始化1. **下载node.js**2. **安装yarn**3. **初始化 Ant Design Pro 脚⼿架(关于更多可进入官网了解)**4. **开启Umi…

基于 Chrome 浏览器扩展的Chroma简易图形化界面

简介 ChromaDB Manager 是基于 Chrome 浏览器扩展的一款 ChromaDB(一个流行的向量数据库)的数据查询工具。提供了一个用户友好的界面,可以直接从浏览器连接到本地 ChromaDB 实例、查看集合信息和分片数据。本工具特别适合开发人员快速查看和…

[ElasticSearch] ElasticSearch的初识与基本操作

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

Kafka 如何保证不重复消费

在消息队列的使用场景中,避免消息重复消费是保障数据准确性和业务逻辑正确性的关键。对于 Kafka 而言,保证不重复消费并非单一机制就能实现,而是需要从生产者、消费者以及业务层等多个维度协同配合。接下来,我们将结合图文详细解析…

【快速解决】数据库快速导出成sql文件

1、cmd直接打开 输入命令 mysqldump -u用户名 -p密码 数据库名 > 导出文件名.sql修改成自己mysql的用户名和密码,和要导出的数据库名称,给导出的文件起一个名字。 如图所示 这样就成功了。

OldRoll复古胶片相机:穿越时光,定格经典

在数字摄影盛行的今天,复古胶片相机的独特魅力依然吸引着无数摄影爱好者。OldRoll复古胶片相机这款软件,以其独特的复古风格和丰富的胶片滤镜效果,让用户仿佛穿越回了那个胶片摄影的黄金时代。它不仅模拟了胶片相机的操作界面,还提…

利用Dify创建一个公司产品知识问答

1、创建知识库 打开dify,创建知识库。 选择创建一个空知识库,对知识库进行命名,或者直接导入已有文本,拖曳或选择文件进入下一步,会自动命名知识库。 创新空知识库后,点击添加文件,再导入已有文…

redis核心知识点

Redis是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、 Lis…