Данный проект посвящен созданию интерактивного дашборда для анализа данных о фильмах и кинотеатрах. В проекте используются данные, полученные с платформы Kaggle, а также инструменты для обработки данных и визуализации.
Проект состоит из нескольких частей:
- EDA-анализ (Exploratory Data Analysis) в Jupyter Notebook.
- Интерактивный дашборд, созданный с использованием Streamlit, который позволяет исследовать данные о фильмах и кинотеатрах в динамическом режиме.
Создание дашборда для анализа данных, который позволит пользователям:
- Изучать и фильтровать информацию о фильмах по жанрам, рейтингам и годам выпуска.
- Анализировать количество сеансов и выручку кинотеатров по месяцам.
- Сравнивать различные кинотеатры по выручке.
- Визуализировать данные с использованием интерактивных графиков и фильтров.
Датасет взят с Movie Screenings in Theaters на Kaggle. Он содержит данные о сеансах в кинотеатрах, рейтингах фильмов, выручке и многом другом.
- movies: данные о фильмах, такие как название, жанр, год выпуска.
- screenings: информация о сеансах фильмов, включая количество зрителей и время показа.
- theaters: информация о кинотеатрах, включая их местоположение и выручку.
DA_FINAL/
│
├── eda/ # Папка с файлами для анализа данных
│ ├── eda_task.md # Описание выполнения EDA
│ ├── eda.ipynb # Jupyter notebook с EDA-анализом
│ └── summary.md # Аналитическая записка с выводами
│
├── functions/ # Папка с функциями
│ ├── db.py # Модуль для работы с базой данных
│ ├── ddl.py # Модуль для создания таблиц в БД
│ └── plotly_utils.py # Модуль для создания графиков с использованием Plotly
│
├── queries/ # Папка с SQL-запросами
│ ├── create_tables.sql # Скрипт создания таблиц в БД
│ └── create_views.sql # Скрипт создания представлений в БД
│
├── source/ # Папка с исходными данными (CSV файлы)
│ ├── combined_data.csv # Данные о фильмах и сеансах (Создан на основе 4-х других файлов для EDA)
│ ├── genres.csv # Данные о жанрах
│ ├── movies.csv # Данные о фильмах
│ ├── screenings.csv # Данные о сеансах
│ └── theaters.csv # Данные о кинотеатрах
│
├── my.db # База данных DuckDB
├── main.py # Основной скрипт для создания дашборда
├── README.md # Описание проекта
├── requirements.txt # Список зависимостей
└── TASK.md # Техническое задание
Для реализации проекта были использованы следующие технологии:
- DuckDB: Для хранения данных в базе данных.
- Pandas: Для обработки и анализа данных.
- Plotly: Для визуализации данных в виде интерактивных графиков.
- Streamlit: Для создания интерактивного дашборда.
-
Создание виртуального окружения:
Для создания виртуального окружения выполните следующую команду в терминале:
python -m venv .venv
-
Активация виртуального окружения:
- Для Windows:
.venv\Scripts\activate
- Для Linux/Mac:
source .venv/bin/activate
- Для Windows:
-
Установка зависимостей:
Установите все необходимые библиотеки, указанные в файле
requirements.txt
:pip install -r requirements.txt
-
Запуск дашборда:
Для запуска дашборда используйте команду:
streamlit run main.py
После этого откроется браузер с дашбордом по адресу
http://localhost:8501
.
- create_tables.sql: Скрипт для создания таблиц в базе данных.
- create_views.sql: Скрипт для создания представлений в базе данных для удобства анализа.
- Запросы в основном выполняются через
db.py
для получения данных из базы и их отображения на графиках.
- Репозиторий проекта: https://github.com/behzod33/da_final
- Задеплоенный дашборд: https://behzod-da-final.streamlit.app
- Все функции сопровождаются комментариями и doc-string для объяснения логики работы.
- Для выполнения анализа и создания графиков использованы методы из библиотеки Plotly и Streamlit, которые обеспечивают интерактивность дашборда.