Original size 736x1104

Анализ данных Формулы-1

PROTECT STATUS: not protected

Описание проекта

Для своей работы я выбрала объемный датасет по Формуле 1 с сайта kaggle.com, состоящий из 14 таблиц, которые содержат информацию от всех заездах, трассах и гонщиках, до пит-стопов и чемпионатах, начиная с первого самого первого сезона в 1950 году и заканчивая сезоном в 2024 году.

Выбор данных по Формуле 1 был продиктован моим недавно появившимся интересом к автоспорту и желанием глубже понять, какие факторы влияют на успех команд.

Original size 1200x349

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

В подборе шрифта мой выбор пал на Grotesk.

Original size 1236x351

Цветовая палитра

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

  1. Линейчатую диаграмму (Наглядно демонстрирует рост, падение или стабильность результатов со временем).
  2. Круговая диаграмма (Хорошо показывает разброс в причинах схода с трассы).
  3. Линейный график (Визуализирует динамику со временем).
  4. Гистограмма (Позволяет легко сравнить значения между собой).
  5. Группированная гистограмма (Наглядно видна разница между результатами).

График № 1

Original size 3142x1542

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

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

0

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

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

График № 2

Original size 1182x1180

Вторым графиком я решила изобразить топ 10 причин, по которым гонщики сходят с трассы.

Для этого я все также импортировала нужные мне библиотеки, и соединила файл с заездами со статусами, где описаны возможные ситуации на трассе. После фильтруем данные, чтобы исключить завершенные гонки и другие нерелевантные статусы (например, +1 круг и т. д.). Затем мы группируем данные по причинам схода, подсчитываем их частоту и выбираем топ-10 самых частых причин которые мы выведем на диаграмме.

0

График № 3

Original size 1875x913

Третьим графиком я обрисовала, в какие сезоны было больше всего проблем на трассах у гонщиков.

Поскольку тематика и сами таблицы немного сходятся с предыдущим графиком, то предстояло проделать почти те же действия что и в прошлом случае. Сначала мы группируем данные из таблицы non_finish_status по годам, подсчитывая количество сходов для каждого сезона. Затем строим график, где по оси X отображаются годы, а по оси Y — количество сходов. Также я захотела дополнить его градиентной заливкой, которая плавно меняет цвет от розового к красному. Для создания градиента использовалась функция LinearSegmentedColormap.

0

График № 4

Original size 1763x771

На четвертом графике я захотела затронуть неотъемлемую часть каждой гонки — пит стопы.

Сначала данные из таблиц о пит-стопах и о гонках объединяются по общему ключу. Затем мы группируем данные по названию гонки и вычисляем среднее время пит-стопов для каждой гонки. Полученные данные сохраняются в файл и сортируются по убыванию времени пит-стопов.

Для визуализации строится гистограмма, где каждая гонка представлена столбцом с градиентной заливкой от розового к красному для привлекательности. Градиент создается с помощью функции LinearSegmentedColormap.

0

График № 5

Original size 1772x971

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

Сначала, как и прошлых случаях, данные из таблиц constructors.csv, constructor_results.csv и sprint_results.csv объединяются по общим ключам. Затем мы фильтруем данные, оставляя только релевантные столбцы (название команды, очки за квалификацию, очки за гонку и идентификатор гонки). Далее данные группируются по названию команды, суммируются очки за квалификацию и гонку, а также подсчитывается количество уникальных гонок для каждой команды. На основе этих данных рассчитываются средние значения очков за квалификацию и гонку, которые затем сохраняются в файл.

0

Победитель — не тот, кто в самой быстрой машине, а тот, кто отказывается проигрывать». © Дэйл Эрнхардт

Анализ данных Формулы-1
Project created at 03.04.2025
We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more