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 эти данные были объединены в один большой массив, по которому в дальнейшем и строились таблицы, графики и карты. Результаты анализа будут представлены в серии статей - в одной представить всю информацию просто нереально.
Практически вся информация уже подготовлена, пример графиков, которые будут представлены в статьях, показан в превью. Но если кто-то хочет увидеть в статьях какую-либо специфическую информацию, например, как менялся средний возраст вратарей в сборных Океании, пишите в комментариях.