3 мин.

Python и Tableau для анализа и визуализации данных в футболе. Введение

Всем привет!

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

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

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

Вкратце распишу процесс работы.

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

Данные собирались в два файла: один - для игроков, второй - для сборных. Затем эти данные обрабатывались при помощи Jupeter Notebook и библиотеки Pandas для Python. В процессе обработке было обнаружено довольно много ошибок в данных с сайта, особенно это касалось сборных со дна рейтинга FIFA. Например, в сборной Судана был игрок с возрастом 2021 год, а в состав игроков сборной Турции и Боснии в 2020-ом году почему-то были включены тренеры команд, что очень сильно завышало средний возраст. Также остается вопрос, как сайт высчитывает возраст игроков. Было обнаружено довольно много игроков с возрастом от 13 до 15 лет, для которых либо был неправильно определен возраст, либо такие игроки за сборную никогда не выступали, и то, как они попали на сайт, остается загадкой. Стоит отметить, что в анализ попадали все игроки, которые вызывались в сборные. То есть в списках вполне могли быть игроки, которые не провели ни одного матча за национальную сборную, но при этом приглашались на сборы. Все некорректные данные были исключены из анализа, в частности, удалены данные с пропусками в графе "возраст". Дополнительно были добавлены новые характеристики, определяемые по имеющимся данным.

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

Что мы в итоге получили?

Данные по 24819-ти игрокам, когда-либо вызывавшимся в национальные команды. Общее количество строк 70450, но, так многие футболисты вызывались в сборные на протяжении нескольких лет, число уникальных игроков оказалось значительно меньше.

Данные по игрокам включали в себя следующие характеристики:

1) ФИО;

2) возраст;

3) страна;

4) позиция;

5) стоимость;

6) год, за которые получены данные.

Для сборных была получены 2271 строка данных по 210 национальным сборным. Данные включали в себя следующие характеристики:

1) Название страны;

2) позиция в рейтинге FIFA;

3) конфедерация;

4) процент игроков, выступающих в зарубежных чемпионатах;

5) количество игроков, вызывавшихся в сборную за календарный год;

6) полная стоимость команды;

7) стоимость самого дорогого игрока команды;

8) средняя стоимость игроков;

9) средняя стоимость 11-ти самых дорогих игроков команды;

10) отношение стоимости самого дорого игрока к общей стоимости 11-ти самых дорогих игроков команды;

11) год, за которые получены данные.

В Tableau эти данные были объединены в один большой массив, по которому в дальнейшем и строились таблицы, графики и карты. Результаты анализа будут представлены в серии статей - в одной представить всю информацию просто нереально.

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