Skip to content

Анализ ДТП в России (2015–2024) с помощью Python, SQL и визуализаций

License

Notifications You must be signed in to change notification settings

odaiseas/Road-Crash-Analysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Road-Crash-Analysis

Этот проект — практический кейс по анализу дорожно-транспортных происшествий в России. Цель — продемонстрировать навыки работы с реальными данными: от загрузки и предобработки до визуализации, работы с SQL и статистического моделирования.

Лицензия

Этот репозиторий не содержит единой лицензии на весь проект, так как включает данные с разными условиями использования.

Компетенции, демонстрируемые в проекте

  • Работа с реальными данными о ДТП (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.csv
      • sample_participants.csv
      • sample_vehicles.csv
    • processed/ — очищенные выборки (включены в репозиторий; создаются в ноутбуке 01_data_cleaning.ipynb)
      • processed_accidents.csv
      • processed_participants.csv
      • processed_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.py
  • notebooks/02_exploratory_analysis_full.ipynb
  • notebooks/03_statistical_modeling.ipynb

Как запустить

  1. Установите зависимости:
    pip install -r requirements.txt
    
  2. Запустите скрипт для создания и очистки выборки (опционально):
    scripts/create_sample.py
    
  3. Запустите ноутбук для анализа выборочных данных:
    jupyter notebook notebooks/01_exploratory_analysis_sample.ipynb
    
  4. Запустите ноутбук для анализа полных данных:
    jupyter notebook notebooks/02_exploratory_analysis_full.ipynb
    
  5. Запустите ноутбук для статистического моделирования:
    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
  • Смоделированы факторы, влияющие на число погибших в ДТП и экономические потери с использованием различных видов регрессий, дерева решений и случайного леса

About

Анализ ДТП в России (2015–2024) с помощью Python, SQL и визуализаций

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published