Дорожно-транспортные происшествия представляют собой серьезную социальную проблему во всем мире, приводя к человеческим жертвам, травмам и экономическим издержкам. Франция с ее обширной дорожной сетью и разнообразными условиями дорожного движения не является исключением в этом вопросе.

Дорожно-транспортные происшествия представляют собой серьезную социальную проблему во всем мире, приводя к человеческим жертвам, травмам и экономическим издержкам. Франция с ее обширной дорожной сетью и разнообразными условиями дорожного движения не является исключением в этом вопросе.

Цель

В последние годы использование методов обработки данных для прогнозирования и предотвращения аварий набирает обороты. Используя потенциал машинного обучения и статистического анализа, мы стремимся выявить ключевые факторы, способствующие авариям, оценить их влияние и построить надежную модель для прогнозирования аварий.

Необходимые библиотеки

Pandas: импорт библиотеки Pandas для обработки и анализа данных. NumPy: использование NumPy для числовых вычислений и операций с массивами. Matplotlib: создание визуализаций данных и графиков с использованием библиотеки Matplotlib. Seaborn: Улучшение эстетики статистической графики с помощью библиотеки Seaborn.

Методология:

Источник данных

Основой этого исследования является обширный набор данных, полученный из Kaggle, содержащий информацию о дорожно-транспортных происшествиях за несколько лет. Этот набор данных охватывает широкий спектр переменных, включая географическое положение, дорожные условия, погоду, типы транспортных средств, человеческий фактор и тяжесть аварий. Богатство этого набора данных позволяет провести тщательный анализ, который может выявить скрытые закономерности и идеи, способствующие авариям.

Получение данных. Первым процессом в проекте по науке о данных является сбор данных. Таким образом, данные, которые мы здесь использовали, представлены в формате CSV как для обучающих, так и для тестовых данных.

Предварительная обработка данных/очистка данных

Было пять наборов данных, связанных с транспортными средствами, характеристиками, пользователями, местами и праздниками во время аварий. Первый шаг включает очистку и преобразование необработанных данных в пригодный для использования формат.

Обработка недостающих данных:

Был проведен анализ недостающих данных, чтобы понять степень отсутствия значений в каждом столбце. Сюда входит обработка пропущенных значений, кодирование категориальных переменных и стандартизация данных.

Пример кода: Обработка отсутствующих данных:

# Removing extra spaces from columns name
df.columns = df.columns.str.strip()
#Example of renaming column
df.rename(columns={
    'SDevelopment-Infrastructure': 'Development-Infrastructure'
}, inplace=True)
# Changing 'date' column to datetime type
df['date'] = pd.to_datetime(df['date'])

Исследовательский анализ данных (EDA)

На этапе EDA было проведено углубленное изучение каждого столбца набора данных, чтобы получить представление об их влиянии на тяжесть несчастных случаев.

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

Анализ тенденций

Сюда входит анализ информации о дате и времени, визуализация временных тенденций и анализ тенденций на основе нескольких категориальных переменных.

Создал пользовательскую функцию:

Эта пользовательская функция объединяет компоненты даты и времени из вашего набора данных для создания одного объекта DateTime, представляющего точную метку времени каждого происшествия. Это полезно для временного анализа и построения графиков тенденций с течением времени, например временных тенденций, которые вы визуализировали в своем коде.

# Create a custom function to parse the date and time
def parse_date_and_time(row):
    year = int(row['year_of_acc'])
    month = int(row['month_of_acc'])
    day = int(row['day_of_acc'])
    hour = row['acc_tim_in_hour_min'] // 100
    minute = row['acc_tim_in_hour_min'] % 100
    return pd.Timestamp(year, month, day, hour, minute)

# Apply the custom function to create a 'date' column
df['date'] = df.apply(parse_date_and_time, axis=1)

Временной анализ:

  • Извлекает соответствующие столбцы для временного анализа.
  • Анализирует информацию о дате и времени из отдельных столбцов в один столбец «дата».
  • Показывает временные тенденции несчастных случаев:
  • Несчастные случаи по годам
  • Несчастные случаи по месяцам
  • ДТП по дням недели
  • ДТП по часам суток

Анализ серьезности по условиям освещения:

  • Определяет категории серьезности и их описания.
  • Создает сопоставление исходных значений условий освещения с описаниями.
  • Анализирует количество несчастных случаев для каждой категории серьезности на основе условий освещения и построения гистограмм.

Анализ серьезности по атмосферным условиям:

  • Определяет категории серьезности и их описания.
  • Создает сопоставление исходных значений атмосферных условий с описаниями.
  • Анализирует количество несчастных случаев для каждой категории серьезности на основе атмосферных условий и строит гистограммы.

Анализ серьезности по типу столкновения:

  • Определяет категории серьезности и их описания.
  • Создает сопоставление исходных значений типа столкновения с описаниями.
  • Анализирует количество несчастных случаев для каждой категории серьезности на основе типов столкновений и построения гистограмм.

Анализ серьезности по категориям дорог:

  • Определяет категории серьезности и их описания.
  • Создает сопоставление исходных значений категорий дорог с описаниями.
  • Анализирует количество аварий для каждой категории серьезности на основе категорий дорог и построения гистограмм.

Анализ серьезности по режимам движения:

  • Определяет категории серьезности и их описания.
  • Создает сопоставление исходных значений режима дорожного движения с описаниями.
  • Анализирует количество аварий по каждой категории тяжести на основе режимов движения и построения гистограмм.

Анализ серьезности по типам зарезервированных полос:

  • Определяет категории серьезности и их описания.
  • Создает сопоставление исходных значений зарезервированных полос с описаниями.
  • Анализирует количество аварий для каждой категории серьезности на основе типов зарезервированных полос и гистограмм.

Анализ серьезности по продольному профилю:

  • Определяет категории серьезности и их описания.
  • Создает сопоставление исходных значений продольного профиля с описаниями.
  • Анализирует количество несчастных случаев для каждой категории серьезности на основе продольных профилей и гистограмм.

Анализ серьезности по состоянию поверхности:

  • Определяет категории серьезности и их описания.
  • Создает сопоставление исходных значений состояния поверхности с описаниями.
  • Анализирует количество несчастных случаев для каждой категории серьезности на основе состояния поверхности и построения гистограмм.

Анализ серьезности по инфраструктуре развития:

  • Определяет категории серьезности и их описания.
  • Создает сопоставление исходных значений инфраструктуры разработки с описаниями.
  • Анализирует количество аварий по каждой категории серьезности на основе развития инфраструктуры и построения гистограмм.

Анализ серьезности аварийной ситуации:

  • Определяет категории серьезности и их описания.
  • Создает сопоставление исходных значений аварийной ситуации с описаниями.
  • Анализирует количество несчастных случаев для каждой категории тяжести на основе аварийных ситуаций и построения гистограмм.

Каждый раздел этого кода выполняет подробный анализ данных об авариях на основе различных атрибутов и предоставляет визуализацию, помогающую понять тенденции и взаимосвязи в данных. Этот вид EDA имеет решающее значение для получения информации и информирования о дальнейших шагах в проекте по науке о данных, таких как моделирование и прогнозирование.

Использование защитного оборудования:

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

Важным аспектом анализа было определение того, как расположение защитного оборудования повлияло на тяжесть аварии. Это повлекло за собой изучение того, оказало ли отношение отдельных лиц к средствам безопасности какое-либо влияние на исход аварии. Например, снизило ли правильное использование ремня безопасности тяжесть полученных травм.

Мы тщательно изучили влияние атмосферных условий на тяжесть аварий. Это включало тщательный анализ различных погодных условий, возникших во время аварий, включая такие факторы, как дождь, ветер, туман и нормальная погода.

Проведя это комплексное исследование атмосферных условий и их корреляции с серьезностью аварий, мы получили ценную информацию о том, как погодные факторы влияют на исход аварий.

Временной анализ

Аварии по временному интервалу

Временные данные были сгруппированы по интервалам (например, 00–03, 03–06) для анализа закономерностей аварий в течение дня. На диаграмме ниже показано распределение несчастных случаев и выживших по временным интервалам. Целью этого анализа было выявить закономерности и тенденции возникновения аварий в определенные периоды времени.

Анализ серьезности аварий

Несчастные случаи по степени тяжести и дате.В этом анализе показано, как несчастные случаи распределяются по степени тяжести в разные дни недели.

Несчастные случаи по степени тяжести и году. Визуализируется распределение несчастных случаев по степени тяжести в разные годы.

Несчастные случаи по степени тяжести и месяцу:В этом анализе изучается распределение несчастных случаев по степени тяжести по месяцам года.

Заключение

  • Несчастные случаи происходят постоянно в течение дня, немного больше происходит в утренние часы.
  • Набор данных содержит различные уровни отсутствующих данных в разных столбцах.
  • Атмосферные условия, такие как «хорошо с сильным ветром» и «хорошо с туманом», связаны с наибольшим количеством аварий.
  • Несчастные случаи 2-й степени тяжести являются наиболее распространенными, и их распределение остается относительно стабильным по дням, годам и месяцам.

Дальнейшая литература

В этом проекте по науке о данных я провел исследовательский анализ данных (EDA), в то время как мой коллега Хира Садик сосредоточился на подборе модели для изучения взаимосвязи между переменными, обсуждаемыми в статье «здесь, а Фариха Салим создала панель мониторинга POWER BI. в статье здесь. Панель управления Фарихи содержала подробные графики, которые подчеркивали взаимосвязь между различными функциями».