Original size 736x1104

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

PROTECT STATUS: not protected
8

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

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

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

big
Original size 1200x349

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

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

big
Original size 1236x351

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

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

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

График № 1

big
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
8
We use cookies to improve the operation of the HSE website and to enhance its usability. More detailed information on the use of cookies can be fou...
Show more