Этот проект — практический кейс по анализу дорожно-транспортных происшествий в России. Цель — продемонстрировать навыки работы с реальными данными: от загрузки и предобработки до визуализации, работы с SQL и статистического моделирования.
Этот репозиторий не содержит единой лицензии на весь проект, так как включает данные с разными условиями использования.
- Аналитический код и ноутбуки: MIT License (см. LICENSE.txt)
- Данные ДТП: Creative Commons BY 4.0
Источник: https://tochno.st/datasets/traffic_accidents - GeoJSON-файл: лицензия не указана; включён как вспомогательный файл для визуализации. При необходимости удалите файл russia_regions.geojson и загрузите с оригинального источника: https://github.com/hairymax/offline_russia_plotly
- Работа с реальными данными о ДТП (7.2 млн записей)
- Использование SQL и SQLite для работы с большими таблицами
- Применение методов разведывательного анализа и визуализации
- Моделирование редких событий (летальных ДТП) и экономический последствий ДТП с использованием:
- линейных моделей с регуляризацией и счётных моделей (Poisson, Negative Binomial)
- классификаторов (решающие деревья, случайный лес)
- Оценка качества моделей, интерпретация коэффициентов, построение выводов
- Очистка, преобразование и разведывательный данных с
pandas - Статистическое моделирование с
scikit-learnиstatsmodels - Визуализация:
matplotlib,seaborn,plotly - Работа с SQL (
sqliteиз Python) - Использование Jupyter Notebook для анализа
- Работа с геоданными и GeoJSON в
geopandas
Данные проекта «Карта ДТП» о дорожно-транспортных происшествиях в России и их характеристиках с 2015 года, преобразованные в формат плоских таблиц. Источник: Дорожно-транспортные происшествия: координаты, участники и пострадавшие // Карта ДТП; обработка «Если быть точным», 2024. Условия использования: Creative Commons BY 4.0. URL: https://tochno.st/datasets/traffic_accidents.
Данные содержат сведения о 1 440 208 ДТП за 2015–2024 годы и вовлеченных в них участниках и транспортных средствах на основе карточек ГИБДД. Единица наблюдения — дорожно-транспортное происшествие. Атрибуты включают место совершения ДТП (с географическими координатами), категорию ДТП, состояние дорожного полотна, погодные условия, тяжесть ДТП, количество погибших и пострадавших, а также информацию об участниках (participants) и транспортных средствах (vehicles). Данные доступны в формате CSV (кодировка: UTF-8, разделитель: «;»).
Данные доступны по следующим ссылкам:
- Accidents.csv — ДТП с координатами, тяжестью, дорожными условиями и др.
- Participants.csv — участники ДТП (водители, пассажиры, пешеходы)
- Vehicles.csv — транспортные средства
- Road-Crash-Analysis data — архив с тремя файлами выше
Russia regions GeoJSON
Источник: hairymax/offline_russia_plotly
Лицензия: не указана (дата обращения 2025-05-09). Если появится — будет добавлена. Файл включён только для целей визуализации. При необходимости вы можете загрузить файл напрямую с оригинального источника.
-
data/— данные и база:sample/— выборка из 1000 ДТП (включена в репозиторий; создаётся скриптомcreate_sample.py)sample_accidents.csvsample_participants.csvsample_vehicles.csv
processed/— очищенные выборки (включены в репозиторий; создаются в ноутбуке01_data_cleaning.ipynb)processed_accidents.csvprocessed_participants.csvprocessed_vehicles.csv
crash_database.db— база данных SQLite (создаётся при выполнении кода; не включена в репозиторий)russia_regions.geojson— геоданные регионов России
-
scripts/create_sample.py— генерация выборки и базы SQLite, очистка и предобработка выборкиutils.py— вспомогательные функции, используемые в ноутбуках
-
notebooks/— Jupyter-ноутбуки:-
01_exploratory_analysis_sample.ipynb— разведывательный анализ на малом объёме данныхЭтот ноутбук предназначен для отладки кода и воспроизводимости на небольшой выборке
-
02_exploratory_analysis_full.ipynb— анализ всех данных с использованием SQLite -
03_statistical_modeling.ipynb— статистическое моделирование факторов аварийности: линейные и счётные модели регрессии, деревья решений и случайные леса
-
-
outputs/figures/— сохранённые статичные графикиfigures/interactive— интерактивные визуализацииmodels/— результаты моделированияcount_models— негативная биномиальная регрессияdecision_tree— дерево решенийrandom_forest— случайный лесlinear_regression— лассо- и гребневая регрессии
-
requirements.txt— список зависимостей для установки окружения -
.gitignore— исключение временных и служебных файлов из репозитория
Для демонстрации навыков работы с SQL данные загружаются в SQLite базу средствами Python (sqlite3). Это позволяет выполнять выборки, фильтрацию и соединения данных через SQL-запросы прямо в ноутбуках, не используя внешние СУБД.
Работа с базой реализована в:
scripts/create_sample.pynotebooks/02_exploratory_analysis_full.ipynbnotebooks/03_statistical_modeling.ipynb
- Установите зависимости:
pip install -r requirements.txt
- Запустите скрипт для создания и очистки выборки (опционально):
scripts/create_sample.py
- Запустите ноутбук для анализа выборочных данных:
jupyter notebook notebooks/01_exploratory_analysis_sample.ipynb
- Запустите ноутбук для анализа полных данных:
jupyter notebook notebooks/02_exploratory_analysis_full.ipynb
- Запустите ноутбук для статистического моделирования:
jupyter notebook notebooks/03_statistical_modeling.ipynb
⚠️ Файлcrash_database.dbсоздаётся при запускеscripts/create_sample.py,notebooks/03_exploratory_analysis_full.ipynbиnotebooks/04_statistical_modeling.ipynbи может занимать до 2.5 ГБ. При необходимости его можно удалить вручную. Также ручное удаление рекомендуется перед повторым запуском скриптов.
- Создана выборка из 1000 случайных ДТП и соответствующих участников/транспортных средств
- Произведена очистка и предобработка выборки
- Проведён разведывательный анализ выборки и полных данных
- Осуществлена загрузка полных таблиц в SQLite и работа с SQL
- Смоделированы факторы, влияющие на число погибших в ДТП и экономические потери с использованием различных видов регрессий, дерева решений и случайного леса