Об этом проекте
## Обзор
India Air Quality & Weather Tracker — это полностью автоматизированный конвейер данных, который собирает данные о качестве воздуха и погоде в реальном времени для 8 крупных индийских городов (Бангалор, Мумбаи, Нью-Дели, Горакхпур, Ченнаи, Хайдарабад, Пуна, Калькутта) с помощью бесплатного API Open-Meteo. Он сохраняет исторические записи в базе данных SQLite и обеспечивает работу интерактивной панели, созданной с помощью Streamlit и Plotly. Конвейер запускается автоматически каждый час через GitHub Actions, не требуя ручного вмешательства или ключей API.
## Возможности
- **Мониторинг в реальном времени**: AQI и погода в реальном времени для 8 индийских городов.
- **Автообновления**: Ежечасное обновление через GitHub Actions — сервер не нужен.
- **Историческое хранение**: Каждое измерение сохраняется в SQLite.
- **Интерактивная панель**: Создана с помощью Streamlit и Plotly для анализа трендов.
- **Анализ трендов**: Тренды PM2.5, температуры и AQI во времени.
- **Полная автоматизация**: Сквозной конвейер с нулевым ручным трудом.
- **Ключ API не нужен**: Используется бесплатный API Open-Meteo.
## Архитектура
Проект состоит из трёх основных компонентов:
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
- **Источник данных**: API Open-Meteo
## Начало работы
1. Клонируйте репозиторий.
2. Установите зависимости с помощью `pip install -r requirements.txt`.
3. Запустите `python scripts/backfill_history.py`, чтобы создать базу данных с 30 днями исторических данных.
4. Запустите панель с помощью `streamlit run dashboard/app.py`.
5. Включите рабочий процесс GitHub Actions для автоматизации ежечасных обновлений.
6. Разверните в Streamlit Community Cloud, используя `dashboard/app.py` в качестве точки входа.
## Чем проект выделяется
Этот проект демонстрирует полный сквозной конвейер данных — сбор живых данных из реальных API, автоматизацию загрузки с помощью GitHub Actions, хранение исторических записей в SQLite и визуализацию аналитики через интерактивную панель. Он имитирует аналитический рабочий процесс производственного уровня, а не одноразовый статический анализ.
## Будущие улучшения
- Поддержка 100+ индийских городов
- Интеграция с PostgreSQL
- Контейнеризация Docker
- Уведомления о превышении AQI по Email/SMS
- Прогнозирование AQI на основе машинного обучения
- REST API для внешних интеграций
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.