这个项目能做什么
## 概述
India Air Quality & Weather Tracker 是一个全自动数据管道,使用免费的 Open-Meteo API 收集 8 个印度主要城市(班加罗尔、孟买、新德里、戈勒克布尔、金奈、海得拉巴、浦那、加尔各答)的实时空气质量和天气数据。它将历史记录存储在 SQLite 数据库中,并驱动一个使用 Streamlit 和 Plotly 构建的交互式仪表板。该管道通过 GitHub Actions 每小时自动运行,无需人工干预或 API 密钥。
## 功能
- **实时监控**:8 个印度城市的实时 AQI 和天气。
- **自动更新**:通过 GitHub Actions 每小时刷新——无需服务器。
- **历史存储**:每次读数都持久化到 SQLite。
- **交互式仪表板**:使用 Streamlit 和 Plotly 构建,用于趋势分析。
- **趋势分析**:PM2.5、温度和 AQI 随时间的变化趋势。
- **全自动化**:端到端管道,零人工操作。
- **无需 API 密钥**:使用免费的 Open-Meteo API。
## 架构
该项目由三个主要组件组成:
1. **回填历史数据**(`scripts/backfill_history.py`):一次性脚本,下载所有城市 30 天的逐小时历史 AQI 和天气数据,并存储到 SQLite 中。
2. **每小时自动更新**(`scripts/fetch_latest.py`):获取最新读数,将其追加到 SQLite 数据库,并将更新后的数据库提交回 GitHub。由 GitHub Actions 调度器触发。
3. **交互式仪表板**(`dashboard/app.py`):从 SQLite 数据库读取数据,并提供当前快照、历史趋势、PM2.5 分析、平均 AQI 比较以及温度与 PM2.5 关系,并配有交互式 Plotly 可视化。
## 技术栈
- **语言**:Python
- **数据处理**:Pandas、Requests
- **存储**:SQLite
- **仪表板**:Streamlit、Plotly
- **自动化**:GitHub Actions
- **数据源**:Open-Meteo API
## 快速开始
1. 克隆仓库。
2. 使用 `pip install -r requirements.txt` 安装依赖。
3. 运行 `python scripts/backfill_history.py` 创建包含 30 天历史数据的数据库。
4. 使用 `streamlit run dashboard/app.py` 启动仪表板。
5. 启用 GitHub Actions 工作流以自动化每小时更新。
6. 使用 `dashboard/app.py` 作为入口点部署到 Streamlit Community Cloud。
## 亮点
该项目展示了一个完整的端到端数据管道——从真实世界 API 收集实时数据,使用 GitHub Actions 自动化数据摄取,将历史记录存储在 SQLite 中,并通过交互式仪表板可视化洞察。它模拟了生产风格的分析工作流,而非一次性的静态分析。
## 未来改进
- 支持 100 多个印度城市
- PostgreSQL 集成
- Docker 容器化
- 通过电子邮件/短信发送 AQI 警报通知
- 基于机器学习的 AQI 预测
- 用于外部集成的 REST API
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。