UnderData: Análisis de datos deportivos en Python

UnderData paquete en python para datos deportivos

¡Descubre el poder de UnderData para el análisis de datos deportivos en Python! En este artículo, te guiaré paso a paso a través de este paquete, una herramienta imprescindible para los apasionados de los datos deportivos y la programación en Python. Aprende cómo utilizar este paquete para acceder, procesar y analizar datos deportivos de manera eficiente desde understat.com.

En el mundo del deporte, los datos son un activo valioso que impulsa la toma de decisiones informadas. Ya sea que seas un analista de datos deportivos, un desarrollador o simplemente un entusiasta del deporte, este paquete te permitirá explorar y aprovechar todo el potencial de los datos deportivos en tus proyectos.

Contenido

  1. Provedores de Datos Deportivos
  2. UnderData
  3. Conclusión

Proveedores de Datos Deportivos

Existe una gran variedad de proveedores de datos deportivos, los cuales ofrecen una amplia gama de servicios, tipos de datos y herramientas para su análisis. Algunos proveedores nos dan la oportunidad de consultar sus datos de forma gratuita, ya se en su totalidad o mediante una prueba por tiempo limitado.

  • FBref: FBref es una plataforma que ofrece una amplia gama de datos deportivos, principalmente centrados en el fútbol. Sus características incluyen:

    • Estadísticas detalladas de partidos, jugadores, equipos y ligas.
    • Datos históricos y en tiempo real, incluyendo resultados, goleadores, asistencias, formaciones, entre otros.
    • Cobertura de ligas y competiciones de todo el mundo, desde las principales ligas hasta ligas más pequeñas y divisiones inferiores.
    • Información avanzada como valores de mercado de jugadores, datos de traspasos y registros históricos.
  • StatsBomb: StatsBomb es una empresa especializada en análisis de datos deportivos, con enfoque en el fútbol. Algunas características destacadas son:

    • Datos detallados de partidos, jugadores y equipos.
    • Métricas avanzadas y análisis táctico.
    • Datos de eventos y acciones específicas, como pases, tiros, duelos, presiones, entre otros.
    • Información de rendimiento de jugadores y equipos basada en algoritmos y modelos estadísticos.
  • Understat: Understat es una plataforma enfocada en el fútbol que proporciona estadísticas avanzadas y análisis basado en datos. Sus características principales incluyen:

    • Estadísticas de partidos, jugadores y equipos.
    • Métricas avanzadas como Expected Goals (xG), Expected Assists (xA), entre otros.
    • Visualizaciones interactivas y gráficos para facilitar la comprensión de los datos.
    • Datos de ligas europeas prominentes, como la Premier League, La Liga, Serie A, Bundesliga, entre otros.

UnderData

UnderData es un paquete para el análisis de datos deportivos en Python, basado en la extracción de información del portal Understats. El cual contiene datos de las principales ligas del mundo como: Liga Premier, La Liga, Bundesliga, Seria A, Ligue 1 y la Premier League Rusa desde la temporada 2014/2015.

Instalación

Para instalar el paquete puedes correr el siguiente línea de código:

pip install underdata

O clonar el repositorio en instalarlo manualmente:

git clone git@github.com:osvaldomx/UnderData.git
cd understat
python setup.py install

Este paquete usa Selenium por lo que debes instalar geckodriver.

Ligas

Para obtener información de una liga:

# import
>>> from underdata.League import League
>>> league = League(league="epl", year="2018")
>>> league.get_info()
'Get info of EPL'

Se abrirá un navegador con geckodriver con el propósito de obtener la información general de la liga EPL en el año 2018. Para acceder a la información:

# Obtiene las temporadas disponibles en www.understats.com
>>> league.seasons
['2021', '2020', '2019', '2018', '2017', '2016', '2015', '2014']

# Obtiene la tabla de clasificación más actual
>>> league.table
     N                 Team   M   W   D   L   G  GA  PTS          xG          xGA         xPTS
0    1      Manchester City  38  32   2   4  95  23   98  93.72-1.28   25.73+2.73   90.64-7.36
1    2            Liverpool  38  30   7   1  89  22   97  79.46-9.54   29.15+7.15  83.45-13.55
.
.
.

# Obtiene el top 10 de goleadores
>>> league.table_goals
    N              Player         Team  Apps   Min   G   A          xG          xA  xG90  xA90
0   1          Aubameyang      Arsenal    36  2740  22   5  23.55+1.55   4.99-0.01  0.77  0.16
1   2          Sadio Mané    Liverpool    36  3100  22   1  16.76-5.24   5.12+4.12  0.49  0.15
.
.
.

Equipos

Para obtener información de un equipo en una temporada en particular, corremos:

>>> from underdata.Team import Team
>>> team = Team(team="liverpool", year="2018")
>>> Team.get_info()
'Get info of Liverpool'

Se abre el navegador para extraer la información solicitada, se cierra automáticamente y para acceder a los datos:

# Get info of games of team in specific year
>>> team.games
    week          date                  home             away  goals_home  goals_away  xG_home
0      1  Aug 12, 2018             liverpool         West Ham           4           0     4.34
1      2  Aug 20, 2018        Crystal Palace        liverpool           0           2     0.37
.
.
.

# Get info of all team players in specific year
>>> team.player_stats              
      Id           Player  Pos  Apps   Min   G   A  Sh90  KP90          xG          xA  xG90
0    838       Sadio Mané  F M    36  3100  22   1  2.53  1.31  16.76-5.24   5.12+4.12  0.49
1   1250    Mohamed Salah    F    38  3274  22   8  3.77  1.87  21.79-0.21  10.47+2.47  0.60
.
.
.

Mediante la propiedad team.games puedes obtener la información de los juegos de un equipo en una determinada temporada a través de un Dataframe de Pandas.

Mediante la propiedad team.player_stats obtienes las estadísticas de cada jugador del plantel de un equipo en una determinada temporada, por ejemplo: id, nombre, posiciones, apariciones, minutos jugados, goles, asistencias y más métricas propias de Understats.

Jugadores

Si lo que quieres es obtener información de un jugador en específico, puedes correr:

>>> from underdata.Player import Player
>>> player = Player(player_id="1250")
>>> player.get_info()
'Get info of Mohamed Salah'

Con la información de los jugadores de un equipo que obtuvimos en el punto pasado podemos saber el id de algún jugador, en este caso usamos el 1250 correspondiente a Mohamed Salah. Dato que recibe como parámetro la clase Player(). Ejecutamos el método get_info() y nos mostrará el mensaje de la línea 4 y el Dataframe estará listo para usarse.

# Get info of seasons of the player
>>> player.table_seasons
      Season        Team  Apps   Min   G   A  Sh90  KP90          xG          xA  xG90  xA90
0  2021/2022   Liverpool     9   810  10   5  4.44  2.33   7.50-2.50   3.14-1.86  0.83  0.35
1  2020/2021   Liverpool    37  3085  22   5  3.68  1.60  20.25-1.75   6.53+1.53  0.59  0.19
.
.
.

# Get info of all appears of the player
>>> player.player_history
         Date               Home Score         Away  Pos Min Sh  G KP  A         xG         xA
0  2021-10-24  Manchester United   0-5    Liverpool  FWR  90  7  3  2  1  2.25-0.75  0.51-0.49
1  2021-10-16            Watford   0-5    Liverpool  FWR  90  5  1  2  1  0.40-0.60  0.36-0.64
.
.
.

Con la propiedad player.table_seasons podemos visualizar la información del jugador en sus diferentes temporadas y equipos en los que ha participado, por ejemplo: temporada, equipo, apariciones, minutos jugados, goles, asistencias y métricas avanzadas como: tiros en 90 min, pases clave en 90 min, goles esperados, asistencias esperadas, entre otras.

Por otra parte, si lo que queremos es analizar datos deportivos con Python que comprendan estadísticas e un jugador durante los partidos, usamos la propiedad player.player_history. La cual te mostrará información del jugador en cada uno de sus partidos, por ejemplo: fecha, equipo local, marcador, equipo visitante, posición, minutos jugados, disparos, goles, pases clave, asistencias, goles esperados y asistencias esperadas.

Partidos

Por último, si queremos obtener datos de un partido en específico, podemos extraer dicha información mediante la clase Match().

>>> from underdata.Match import Match
>>> match = Match(match_id="16463")
>>> match.get_info()
'Get info of Manchester United vs Liverpool'

La cual recibe como parámetro el id del partido. En este caso usaremos el id 16463 correspondiente al Manchester United vs Liverpool de la temporada 2021/2022.

# Get stats of the match
>>> match.match_stats
                     Player  Pos  Min  Sh  G  KP  A         xG         xA
0              David de Gea   GK   90   0  0   0  0       0.00       0.00
1         Aaron Wan-Bissaka   DR   90   0  0   0  0       0.00       0.00
2           Victor Lindelöf   DC   90   0  0   0  0       0.00       0.00
...
25               Sadio Mané  Sub    8   1  0   0  0  0.11+0.11       0.00
26  Alex Oxlade-Chamberlain  Sub   21   1  0   1  0  0.02+0.02  0.04+0.04
27             Curtis Jones  Sub   64   1  0   1  0  0.15+0.15  0.03+0.03

Con la propiedad match.match_stats podemos acceder al Dataframe que contiene las estadísticas de cada jugador que participó en el encuentro, como por ejemplo: nombre del jugador, posición, minutos jugados, disparos, goles, pases clave, asistencias, goles esperados y asistencias esperadas.

Contribución

Si deseas contribuir al repositorio UnderData y compartir tus propias mejoras o adiciones, ¡eres bienvenido! Sigue las pautas proporcionadas en el repositorio para enviar tus contribuciones. Esto puede incluir correcciones de errores, mejoras en el rendimiento, nuevas características o documentación adicional. Únete a la comunidad y colabora con otros apasionados de los datos deportivos y Python.

Conclusión

UnderData es un recurso valioso para los amantes de los datos deportivos y la programación en Python. Aprovecha al máximo este paquete y desbloquea nuevas oportunidades para analizar, visualizar y comprender el mundo del deporte a través de los datos. No pierdas la oportunidad de sumergirte en este emocionante campo y dar un impulso a tus proyectos con UnderData.

¡Descubre UnderData y lleva tu análisis de datos deportivos al siguiente nivel! Visita el repositorio en GitHub (https://github.com/osvaldomx/UnderData) y comienza a explorar las herramientas y conjuntos de datos disponibles. ¡No te arrepentirás!

Si te gustó este post, no olvides dejar un comentario y seguirme en mis redes sociales.