这个项目能做什么

## 概述 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