Об этом проекте

## Обзор 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 для внешних интеграций