Комплексное приложение для анализа, обработки и прогнозирования временных рядов метеорологических данных с использованием Streamlit. Приложение предоставляет широкий спектр методов от классических статистических подходов до современных нейронных сетей.
- Загрузка и генерация данных: Импорт CSV файлов или создание синтетических временных рядов
- Предобработка данных: Фильтрация, ресемплинг, обработка пропусков, заполнение временной сетки
- Визуализация: Интерактивные графики с использованием Plotly
- Экспорт результатов: Сохранение обработанных данных и отчетов
- AR модели - Авторегрессионные модели (ARMA, ARIMA)
- Вейвлет-преобразование - Многомасштабный анализ сигналов
- Фурье-преобразование - Частотный анализ временных рядов
- Морфологический анализ - Структурный анализ данных
- LSTM нейронные сети - Глубокое обучение для прогнозирования
- Обнаружение аномалий - Выявление выбросов и нештатных ситуаций
TimeSeriesApp_experimental/
├── main.py # Главная страница с предобработкой
├── config.py # Конфигурационные параметры
├── requirements.txt # Зависимости проекта
├── App_descriptions_streamlit.py # Описания методов для UI
├── process_fix.py # Утилиты для исправления данных
├── TODO.md # Список задач для разработки
│
├── pages/ # Страницы Streamlit
│ ├── 1_AR_models.py # AR/ARMA/ARIMA модели
│ ├── 2_Wavelets.py # Вейвлет-анализ
│ ├── 3_Fourier.py # Фурье-преобразование
│ ├── 4_Morphology.py # Морфологический анализ
│ ├── 5_LSTM.py # LSTM нейронные сети
│ └── 6_Anomaly.py # Обнаружение аномалий
│
├── modules/ # Модули функциональности
│ ├── data_processing.py # Обработка и предобработка данных
│ ├── synthetic_data.py # Генерация синтетических данных
│ ├── time_series_analysis.py # Основные функции анализа временных рядов
│ ├── visualization.py # Функции визуализации
│ ├── utils.py # Вспомогательные утилиты
│ ├── reporting.py # Генерация отчетов
│ ├── page_template.py # Шаблон для страниц
│ ├── wavelet_module.py # Функции вейвлет-анализа
│ ├── fourier_module.py # Функции Фурье-преобразования
│ ├── lstm_module.py # LSTM модели и утилиты
│ ├── anomaly_module.py # Методы обнаружения аномалий
│ ├── morfology_module.py # Морфологический анализ
│ ├── autoregressive/ # Продвинутый модуль AR моделей
│ │ ├── __init__.py
│ │ ├── core.py # Основные функции AR
│ │ ├── models.py # AR/ARMA/ARIMA модели
│ │ ├── model_selection.py # Выбор оптимальных параметров
│ │ ├── helper.py # Вспомогательные функции
│ │ ├── utils.py # Утилиты для AR моделей
│ │ ├── visualization.py # Визуализация AR моделей
│ │ └── README.md # Документация AR модуля
│ └── lstm/ # Продвинутый LSTM модуль
│ ├── __init__.py
│ ├── core.py # Основные функции LSTM
│ ├── models.py # LSTM модели
│ ├── utils.py # Утилиты для LSTM
│ ├── visualization.py # Визуализация LSTM
│ └── README.md # Документация LSTM
│
├── method_descriptions/ # Теоретические описания
│ ├── ARMA.py # Описание ARMA моделей
│ ├── ARIMA.py # Описание ARIMA моделей
│ ├── SARIMA.py # Описание SARIMA моделей
│ ├── Wavelet.py # Описание вейвлет-метода
│ └── Fourier.py # Описание Фурье-преобразования
│
├── logs/ # Логи приложения
│ └── app_*.log # Файлы логов по дням
│
├── .streamlit/ # Конфигурация Streamlit
├── .vscode/ # Настройки VS Code
├── .devcontainer/ # Конфигурация для Dev Container
│
└── ignore-folder/ # Вспомогательные файлы
├── about.md # Информация о проекте
├── architecture_diagram.md # Диаграмма архитектуры
├── mermaid.md # Mermaid диаграммы
├── test_period_detection.py # Тестовые скрипты
└── wavelet_improvements.txt # Заметки по улучшениям
- Python 3.8 или выше
- pip (менеджер пакетов Python)
-
Клонируйте репозиторий:
git clone <url-репозитория> cd TimeSeriesApp_experimental
-
Создайте виртуальное окружение (рекомендуется):
python -m venv .venv source .venv/bin/activate # На Linux/Mac # или .venv\Scripts\activate # На Windows
-
Установите зависимости:
pip install -r requirements.txt
После установки всех зависимостей запустите приложение командой:
streamlit run main.py
Приложение будет доступно в браузере по адресу http://localhost:8501
.
Загрузка данных:
- Импорт CSV файлов с автоматическим определением разделителей
- Генерация синтетических данных с настраиваемыми параметрами (тренд, циклы, шум)
Обработка данных:
- Выбор временной колонки и колонки значений
- Фильтрация по временному интервалу
- Ресемплинг с различными частотами (дни, недели, месяцы, и т.д.)
- Обработка пропущенных значений (интерполяция, заполнение средним/медианой)
- Заполнение пропусков временной сетки
- Построение ARMA и ARIMA моделей
- Автоматический подбор параметров
- Анализ автокорреляционных функций
- Прогнозирование с доверительными интервалами
- Непрерывное вейвлет-преобразование
- Выбор материнского вейвлета (Морле, Гаусс, Мексиканская шляпа)
- Анализ частотно-временных характеристик
- Обнаружение периодичностей и аномалий
- Быстрое преобразование Фурье (FFT)
- Спектральный анализ
- Фильтрация частотных компонент
- Восстановление сигнала
- Структурный анализ временных рядов
- Выделение морфологических особенностей
- Анализ формы сигнала
- Автоматическая настройка архитектуры
- Три уровня сложности (простая, средняя, сложная)
- Ручная настройка параметров
- Прогнозирование на будущие периоды
- Оценка качества моделей
- Генерация синтетических аномалий (точечные, протяженные, сбои датчиков)
- Методы обнаружения: Z-score, IQR, фильтр Хампеля, детекция плато
- Автоматический подбор параметров
- Численные эксперименты для оптимизации
- Оценка качества детекции (precision, recall, F1-score)
streamlit # Веб-интерфейс
pandas # Обработка данных
numpy # Численные вычисления
plotly # Интерактивная визуализация
scipy # Научные вычисления
statsmodels # Статистические модели
tensorflow # Глубокое обучение (LSTM)
pywt # Вейвлет-преобразования
scikit-learn # Машинное обучение
Приложение использует @st.cache_data
для оптимизации производительности:
- Кэширование загрузки данных
- Кэширование результатов вычислений
- Сохранение состояния между страницами
Данные сохраняются в st.session_state
между страницами:
time_series
: Обработанные временные рядыmain_column
: Основная колонка для анализа- Параметры обработки и фильтрации
- Численные эксперименты с параметрами алгоритмов
- Сравнение эффективности различных методов
- Генерация отчетов в формате YAML
- Настраиваемые метрики качества
- Модульная архитектура для добавления новых методов
- Стандартизированные интерфейсы для алгоритмов
- Готовые шаблоны для новых страниц анализа
Приложение предназначено для:
- Метеорологов: Анализ погодных данных и климатических трендов
- Исследователей: Изучение временных закономерностей в данных
- Аналитиков данных: Предобработка и анализ временных рядов
- Студентов: Изучение методов анализа временных рядов
- Создайте файл страницы в
pages/
- Добавьте модуль функций в
modules/
- При необходимости добавьте описание в
method_descriptions/
- Следуйте соглашениям о кэшировании и состоянии
- Модульная структура кода
- Подробные комментарии и документация
- Обработка ошибок для предотвращения сбоев
- Использование кэширования для производительности
- Совместимость с различными форматами данных
При возникновении проблем:
- Проверьте логи приложения
- Используйте кнопку "Очистить состояние и кэш" на главной странице
- Убедитесь в корректности формата входных данных
- Проверьте наличие всех зависимостей
Проект разработан для научных и образовательных целей.