Веб-скрапинг расширенной футбольной статистики

В последнее время я все обсуждал роль удачи в футболе. А может, это не чистая удача, а мастерство? Или команды завоевывают свои лиги исключительно на мастерстве? Или важность удачи достаточно большая? Кому везет, а кому нет? Заслуживала эта команда на вылет? И еще куча подобных вопросов.

Но, поскольку я – чувак данных, я подумал, так давайте получим данные и найдем ответы. Хотя, как ты измеришь удачу? Как ты оценишь мастерство? Не существует такой единой метрики, как в компьютерных играх FIFA или PES. Мы должны смотреть на общую картину, на долгосрочные данные с несколькими переменными и с учетом контекста каждой отдельной игры. Потому что в отдельные моменты игроку одной команды просто не хватает удачи, чтобы забить победный гол на последних минутах после полного доминирования над противником, и он заканчивается ничьей, и обе команды получают 1 балл, тогда как было ясно, что первая команда заслужила победу. Одной команде повезло, другой не слишком. Так, в этой ситуации это удача, поскольку одна команда сделала все, создала достаточно опасных моментов, но не забила. Такое происходит. И поэтому мы любим футбол. Потому что здесь все может произойти.

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

xG – это статистический показатель качества созданных и упущенных шансов

Вы можете найти данные по этому показателю на сайте understat.com. Отсюда я и буду скрапить данные.

Понимание данных

Итак, что же это за хрень это xG и почему оно важно. Ответ мы можем найти на домашней странице understat.com.

Ожидаемые голы (xG) – это новая революционная футбольная метрика, которая позволяет оценивать производительность команды и игрока.
В игре с низким количеством очков, таких как футбол, итоговый счет не дает четкой картины производительности.
Вот почему все больше и больше спортивных аналитиков обращаются к передовым моделям, как xG, что является статистическим показателем качества созданных и упущенных шансов.
Нашей целью было создать наиболее точный метод оценки качества ударов по воротам.
Для этого мы подготовили алгоритмы прогнозирования с нейронными сетями с большим набором данных (> 100 000 образцов, более 10 параметров для каждого).

understat.com

Исследователи научили нейронную сеть на основе ситуаций, которые привели к голам, и теперь она дает нам оценку того, сколько реальных шансов команда имела во время матча. Потому что вы можете иметь 25 ударов в течение игры, но если все они находятся на большом расстоянии или под низким углом к ​​воротам или слишком слабы, – короче, удары низкого качества, они не приведут к взятию ворот. Хотя некоторые «эксперты», которые не видели игры будут говорить, что команда доминировала, создали тонны шансов бла-бла-бла-бла. Качество этих шансов имеет значения. И здесь метрика xG становится полезной. С этим показателем вы теперь понимаете, что Месси создает голы в условиях, где очень трудно забить, или вратарь спасает команду, когда должен был быть гол. Все эти вещи складываются, и мы видим чемпионов, которые имеют опытных игроков и каким немного повезло, и мы видим неудачников, которые могут иметь хороших игроков, но не хватает удачи. И цель этого проекта – понять и представить эти цифры, чтобы показать роль удачи в сегодняшнем футболе.

Давайте начнем

Мы начинаем с импорта библиотек, которые будут использоваться в этом проекте:

  • numpy – фундаментальный пакет для научных вычислений с Python
  • pandas – библиотека, обеспечивающая высокую производительность, удобство в использовании структур данных и инструментов анализа данных
  • requests – это единственная HTTP-библиотека без ГМО для Python, безопасна для потребления человеком (люблю эту строку из официальных документации :D)
  • BeautifulSoup – библиотека Python для вывода данных из файлов HTML и XML.
import numpy as np 
import pandas as pd
import requests
from bs4 import BeautifulSoup

Исследование сайта и структура данных

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

На домашней странице можно заметить, что на сайте есть данные для 6 европейских лиг:

  • Испанская Ла Лига
  • Английская Премьер Лига
  • Немецкая Бундес Лига
  • Итальянская Серия А
  • Французская Лига 1
  • Российская Премьер Лига

И мы также видим, что собранные данные начинаются с сезона 2014/2015. Другая заметка, которую мы делаем, – это структура URL: ‘https://understat.com/league' + ‘/лига‘ + ‘/год

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

# создать urls для всех сезонов каждой из лиг
base_url = 'https://understat.com/league'
leagues = ['La_liga', 'EPL', 'Bundesliga', 'Serie_A', 'Ligue_1', 'RFPL']
seasons = ['2014', '2015', '2016', '2017', '2018']

Karma +1 when you share it:
Опубликовано в категории: Data Science

Leave a Reply

Your email address will not be published. Required fields are marked *