
¡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
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.