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

Футбольная аналитика активно развивается во всем мире, и Россия здесь не исключение. В аналитических отделах клубов РПЛ постепенно появляется потребность в людях, которые бы владели базовым инструментами работы с данными. Сегодня одним из основных таких инструментов является

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

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

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

В интернете есть большое количество источников бесплатных данных — как (event data), так и (tracking data). Зачастую их предоставляют сами провайдеры для ознакомления и в маркетинговых целях. Работа с такими данными сопряжена с рядом неудобств.

Первая проблема заключается в том, что . Ниже пример турниров и самых актуальных сезонов, по которым можно получить бесплатные event-данные от StatsBomb. Самая большая история доступна по играм Барселоны. Внутри StatsBomb этот датасет позиционируют как максимально полный источник данных по Лионелю Месси и называют —

Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать

Среди топовых европейских чемпионатов помимо Ла Лиги представлена только АПЛ сезона 2003-2004, при этом доступны данные только по играм Арсенала, который тогда занял первое место.

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

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

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

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

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

Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать

По всем топовым чемпионатам помимо стандартного набора статистик fbref предоставляет агрегированные метрики, которые самостоятельно считает на основе сырых event-данных от StatsBomb. Такие данные доступны с сезона 2017-2018. По РПЛ, к сожалению, расширенного набора данных от StatsBomb на сайте нет.

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

Выше мы отметили, что данные с fbref являются отличным вариантом для введения в футбольную аналитику, они бесплатны и содержат рассчитанные метрики от StatsBomb. Но есть одно но — fbref не предоставляет инструментов для скачивания этих данных (в программирование это называется API).

Та табличка с колонками, которую вы видите в браузере на сайте fbref, хранится в виде html-кода. С помощью python-а вы можете этот код скачать и далее достать из него полезную для вас информацию (в нашем случае данные о игроках и командах). Такая процедура называется — .

Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать

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

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

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

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

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

Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать

Ниже представлен свежий радар от StatsBomb для Килиана Мбаппе. Данный радар я нашел в твиттере StatsBomb, где их периодически выкладывают. На постоянной основе такая визуализация доступна только владельцам программ Statsbomb IQ.

Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать

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

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

Зачем нужны эти распределения и что это такое?

Самый простой пример — вы читаете новый аналитический отчет, в котором в очередной раз приводится метрика xG для футболиста, пусть она равна 0.35 в среднем за матч по прошествии половины сезона. Можете ли вы как-то оценить — это много или мало? С чем вы будете сравнивать? Даже если вы сравните несколько игроков между собой, то как оценить эти значения относительно остальных футболистов, которых нет в данный момент в аналитическом отчете?

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

Ниже приводится оригинальное распределение для метрики и аналогичное, которые можно построить над данными с fbref.

Несколько замечаний по методике построения распределения:

  • из всех футболистов среди Top5 чемпионатов за последние 4 сезона оставляем только нападающих (StatsBomb использует 5 сезонов)

  • отбрасываем тех, которые сыграли менее половины сезона — менее 19 игр (на оригинальном радаре StatsBomb не указывает используемое ограничение по времени, в некоторых источниках я находил примеры отсечения — менее 900 минут (менее 10 матчей))

  • для выбранных футболистов строим гистограмму (столбиковый график, который показывает — как часто встречаются те или иные значения метрики среди футболистов)

  • по построенной гистограмме строим еще один график — плотность распределения вероятности для метрики npxg (). В подробности того, что это такое, на данном этапе можно не вдаваться. В первом приближении — это сглаженная версия гистограммы, которую можно условно определять как .

Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать

На построенном распределении мы видим:

  • за 90 минут для нападающих TOP5 лиг за последние 4 сезона (это в сезоне 2020-2021 в Вулверхэмптоне. На fbref его позиция до нынешнего сезона была отмечена как FW, в текущем сезоне метка поменялась на сдвоенный вариант — ", что скорее всего ближе к правде)

  • (в среднем создаваемая опасность условно эквивалентная 1 голу за игру — это в Баварии в Бундеслиге 2017-2018)

  • , равняется (только 5% всех нападающих имеют более низкие значения на всей истории). На распределении эти футболисты находятся левее первой границы.

  • , равняется (это показатель в Ювентусе в сезоне 2018-2019 в 33 года!). 95% всех нападающих демонстрировали более низкие значения за последние 4 года, не включая текущий сезон.

  • она как раз таки равняется npxG за матч. Данное значение делит всю нашу выборку нападающих ровно пополам. Половина имеет более высокое значение, половина — более низкое.

  • демонстрирует npxG и почти дотягивается до Top 5% лучших футболистов в нашей статистике. Значение для исследуемого игрока рассчитывается по текущему сезону 2021-2022.

Самый главный нюанс, который мне удалось обнаружить, заключается в том, что . Если вы возьмете свежий радар от StatsBomb и сразу посмотрите таблицу на fbref то увидите некоторое отличие в количестве сыгранных 90s (90-минутных интервалов). StatsBomb считает чистое время (с учетом добавленных значений), fbref не учитывает добавленное время. Обычно, для игроков, которые имеют много игрового время составляет плюс (1 ÷ 1.5) 90s по ходу сезона — .

Получается StatsBomb при расчете своих метрик использует , что .

Стоит отметить, что . Для построения распределения я использовал только метку , но она также фигурирует у ряда игроков совместно с другим показателем, например — ',MF', 'DF,', 'MF,', ',DF'. Вероятно, выборки нападающих, которые использовал я и которые использует StatsBomb несколько отличаются (внутри рассматриваемых сезонов).

Выборка на моем распределении — 4 сезона, у StatsBomb — 5 сезонов. Это неминуемо ведет к некоторым расхождениям в показателях.

В текущий момент на fbref доступны значения после 12 матчей в Лиге 1, для примера используется радар с 10 играми Мбаппе.

На распределении StatsBomb наблюдаются некоторые "бугорки", которые в статистике называются пиками или модами. На моем они отсутствуют и получается более гладкая кривая. Тут есть много нюансов при построении. Если посмотреть на столбики гистограммы, то видно, что где-то пики сопровождаются падением и затем снова возрастанием значений. При желании можно построить менее гладкую кривую, которая будет отражать данные нюансы, но мы не будем усложнять.

Забегая вперед также стоит указать, что на основе сырых event-данных. Сотрудники StatsBomb подтверждали эту информацию. Они указывали, что метрику (перехваты) fbref считает иначе, по сравнению с ними. Я также обнаружил некоторые расхождения для ряда метрик, например (восстановление владения в результате прессинга) и довольно простую метрику — (касания в штрафной соперника).

Все вышеперечисленное указывает на то, что , но все равно сможем получить очень похожу картину, что я и покажу ниже.

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

Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать

Для построения радаров нам понадобятся: 5ый и 95ый процентили, а также непосредственное значение метрики Мбаппе.

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

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

Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать

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

Ниже для примера рассмотрим рейтинг нападающих их Тоp5 чемпионатов, которые по npxG входят в 5% лучших нападающих последних 4 лет. Мы должны отфильтровать данные fbref по текущему сезону, оставив только нападающих, которые имеют . Также я поставил ограничение на минимум 5 сыгранных матчей.

Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать

Для каждого из них теперь можно в пару кликов построить радар. (В идеале этот процесс можно и вовсе автоматизировать — получать радары лучших игроков каждый раз, когда новые данные по прошедшему туру будут подгружаться на fbref, например).

Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать
Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать
Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать
Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать
Знакомство с базовыми инструментами футбольного Data Scientist-а. Объясняем, где найти бесплатные данные и с чего начать

В индустрии футбола появилась такая профессия как . (В , который работает DS в Sportec Solutions в Германии, вы можете найти ссылку на список открытых вакансий по миру, который он постепенно пополняет. Помимо этого, там много самой свежей и актуальной информации из области футбольного DS).

Одним из базовых инструментом в этой профессии является — .

В РПЛ тоже появляется потребность в таких специалистах, но пока, вероятно, чуть с более узким функционалом. Футбольным аналитикам нового поколения требуются навыки работы с python. Можете посмотреть подкаст с аналитиком ЦСКА , где он, в том числе, рассказывает как осваивает питон.

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

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

Полученные данные с fbref вы можете использовать для тренировки базовых навыков работы с таблицами, поиска корреляций и построения всевозможных визуализаций на питоне.

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

Требуемые навыки и предполагаемый рабочий функционал может сильно варьироваться от клуба к клубу или аналитической компании. Например, здесь — описание вакансии DS в новую команду к , которая внесла значимый вклад в футбольную аналитику, предложив прообраз метрики xT на основе цепей Маркова в далеком 2011.

Обычно неотъемлемой частью Data Science-а является . В футболе их строят для получения новых, более эффективных метрик (VAEP, OBV) или анализа игры команды на угловых, например. Эту тему я специально опустил в данной статье, но нужно понимать, что она неразрывно связанна с профессией Data Scientist-а. Чтобы переходить к построению моделей, нужно сначала, как минимум, освоить python и базовую статистику.

Если уже сейчас интересно понять, какие модели строят футбольные DS, и как их затем применяют в индустрии, то можете посмотреть видео ниже. В нем на бесплатных event-данных от Wyscout по сезону 2017-2018 строят модель для расчета метрики VAEP.

Здесь вы можете найти подробный текст на русском о данной метрике и деталях ее расчета.

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

я выложил проект по скачиванию данных с fbref и построению радаров.

Сами данные в формате .csv (за прошлые 4 сезона) —

  • outfields_17_18__20_21.csv — статистика по полевым игрокам
  • keeper_17_18__20_21.csv — статистика по вратарям
  • team_17_18__20_21.csv — статистика по командам
  • team_vs_17_18__20_21.csv — статистика по соперникам для каждой команды

Данные по текущему сезону —

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

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

1. Основы программирования на python — основы синтаксиса языка, упражнения на закрепление навыков.

2. Основы статистики — великолепный курс для новичков и не только, все объясняется максимально простым языком.

3. Базовый обзор по Data Science на простых примерах (+ уроки по работе с — основная библиотека для работы с таблицами на python)

Можно приложить еще множество ссылок по более глубокому изучению Data Science, математики, языка SQL и т д, но лучше делать все постепенно.

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

Источник: sports.ru

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here

четыре × три =