Python library for scraping football data and visualize it / Libreria de Python para scrapear data de fútbol y visualizarla
Project description
Esto es la líbreria de LanusStats, un lugar en donde se intentará hacerle la vida más facíla toda persona que este interesada en el ámbito del fútbol y los datos. Se van a tener recursos de todo tipo, desde scrapeo de información de distintas páginas/lugares hasta la posibilidad de hacer visualizaciones con solo una función.
Para instalarla, solamente tenes que correr esto en algun consola de comando:
pip install LanusStats
En caso de querer actualizarla a la versión más reciente:
pip install --upgrade LanusStats
La libreria consta de distintos módulos para sacar información de estas páginas:
Cómo se usa?
General
Para saber que páginas contienen un módulo para scrapear, podes hacer:
get_available_pages()
Para saber que ligas tienen las páginas de la función anterior, podes hacer:
get_available_leagues(page)
Para saber que temporadas tienen las ligas de las páginas de la función anterior, podes hacer:
get_available_season_for_leagues(page, league)
Fbref
Importo la clase de esta manera:
import LanusStats as ls
fbref = ls.Fbref()
Todas las funciones deben tener el fbref. delante de ellas
- Para scrapear información de los equipos se puede usar
get_teams_season_stats
. Ejemplo:
get_teams_season_stats('gca', 'Copa de la Liga', season='2024', save_csv=False, stats_vs=False, change_columns_names=False, add_page_name=False)
change_columns_names te permite ponerle el nombre a columnas de tipo Unnamed: 0
add_page_name le agrega el nombre de la página a las columnas, hay veces que se repiten los nombres entre páginas
save_csv exporta la tabla a un csv
stats_vs te permite scrapear las tablas de estadísticas vs que en Fbref está la posibilidad
Si esto lo queres hacer todo junto, podes usar get_vs_and_teams_season_stats
. Ejemplo:
get_vs_and_teams_season_stats('gca', 'Copa de la Liga', season='2024', save_excel=False, stats_vs=False, change_columns_names=False, add_page_name=False)
Esto te devuelve dos DataFrames, uno para las estadísticas a favor y otro en contra. save_excel te permite exportarlo a un .xlsx que contiene dos páginas.
Para terminar, con get_all_teams_season_stats
podes scrapear TODAS las estadísticas que esten en la pagina. Ejemplo:
get_all_teams_season_stats('Copa de la Liga', '2024', save_csv=False, stats_vs=False, change_columns_names=False, add_page_name=False)
- Para scrapear data de los jugadores se pueden usar:
get_player_season_stats('gca', 'Copa de la Liga', save_csv=False, add_page_name=False)
Y si quiero scrapear todas las estadísticas en una
get_all_player_season_stats("Copa de la Liga", "2024", save_csv=False, add_page_name=False)
- Del perfil de un jugar se puede sacar los percentiles y las similutdes (si las tiene)
get_player_percentiles("https://fbref.com/en/players/bc7dc64d/Bukayo-Saka")
get_player_similarities("https://fbref.com/en/players/bc7dc64d/Bukayo-Saka")
- De un partido en particular se puede sacar los tiros y las estadísticas generales (si las tiene)
get_match_shots("https://fbref.com/en/matches/77d7e2d6/Arsenal-Luton-Town-April-3-2024-Premier-League")
get_general_match_team_stats("https://fbref.com/en/matches/77d7e2d6/Arsenal-Luton-Town-April-3-2024-Premier-League")
- Si queres scrapear la tabla de posiciones de una liga, podes:
get_tournament_table("https://fbref.com/en/comps/9/Premier-League-Stats")
FotMob
import LanusStats as ls
fotmob = ls.FotMob()
- Para obtener las distintas tablas que pueden haber en la UI de Fotmob (ejemplo) pueden usar:
get_season_tables("Premier League", "2022/2023", "xg")
- Para obtener información de estadísticas de una temporada (ejemplo):
** De los jugadores puedes usar:
get_players_stats_season("Premier League", "2023/2024", "expected_assists_per_90")
** De los equipos puedes usar:
get_teams_stats_season("Premier League", "2023/2024", "poss_won_att_3rd_team")
- De un partido (ejemplo) la información que puedes sacar es de:
** Mapa de tiros:
get_match_shotmap(4193851)
** Estadísticas generales de los equipos:
get_general_match_stats(4193851)
Aclaración: El id de parametro es el que se encuentra en la url, ejemplo: https://www.fotmob.com/es/matches/afc-bournemouth-vs-manchester-united/2yrx85#4193851
- También puedes obtener información de un jugador:
** Mapa de tiros (ejemplo):
get_player_shotmap("Premier League", "2023/2024", 1203665)
El 3º parametro es el id que se encuentra en la url, ejemplo: https://www.fotmob.com/es/players/1203665/alejandro-garnacho
365 Scores
import LanusStats as ls
threesixfivescores = ls.ThreeSixFiveScores()
SofaScore
import LanusStats as ls
sofascore = ls.SofaScore()
- De un partido (ejemplo) podes sacar los disparos:
get_match_shotmap("https://www.sofascore.com/arsenal-manchester-united/KR#id:11352532", save_csv=True)
match_url se pone la url entera de la página del partido de Sofascore.
save_csv si guardas el dataframe que te devuelve en un csv
- También de un partido podes sacar las estadísticas de los jugadores:
get_players_match_stats("https://www.sofascore.com/arsenal-manchester-united/KR#id:11352532")
match_url se pone la url entera de la página del partido de Sofascore.
Aclaración, te devuelve una lista de dataframes, el primero (ó [0]) es del local y el segundo ó [1] es del visitante
- También de un partido podes sacar las posiciones promedio:
get_players_average_positions("https://www.sofascore.com/arsenal-manchester-united/KR#id:11352532")
match_url se pone la url entera de la página del partido de Sofascore.
Aclaración, te devuelve una lista de dataframes, el primero (ó [0]) es del local y el segundo ó [1] es del visitante
- También podes obtener la información de los lineups:
get_lineups("https://www.sofascore.com/arsenal-manchester-united/KR#id:11352532")
- Por último dentro de un partido podes sacar el mapa de calor de cada uno dentro del partido:
get_player_heatmap("https://www.sofascore.com/arsenal-manchester-united/KR#id:11352532", "Alejandro Garnacho")
Aclaración: el nombre del jugador debe ser tal cual lo muestra SofaScore.
- Se puede sacar el mapa de calor de un jugador de cada torneo, si es que lo tiene:
get_player_season_heatmap("Argentina Liga Profesional", "2024", 832213)
La liga y la temporada salen de las funciones generales ya vistas y el tercer parámetro es el id del jugador que se puede ver en la página de jugador: https://www.sofascore.com/player/joaquin-pereyra/832213. Es el número al final del link
- Por último, se pueden scrapear las estadísticas de los jugadores en un torneo:
scrape_league_stats(league="Argentina Liga Profesional", season="2024", save_csv=False, accumulation="per90", selected_positions= ["Goalkeepers"])
league Liga habilitada en get_available_leagues("Sofascore") season Temporada habilitada en get_available_season_for_leagues("Sofascore", league) save_csv si guardar el dataframe en un csv o no accumulation como pedir las estadísticas. Valores posibles: total, per90, perMatch selected_positions que grupo de jugadores traer. Valores posibles: ['Goalkeepers', 'Defenders', 'Midfielders', 'Forwards']
Visualizaciones
Hay visualizaciones seteadas para hacer desde una función que scrapean usando las funciones de la libreria y visualizan la información de cierta manera para que se puede customizar o usar derecho.
- Plotear percentiles de los jugadores de Fbref en un grafico de MPLSoccer
ls.visualizations.fbref_plot_player_percentiles(path="https://fbref.com/en/players/058c938c/Marcelino-Moreno", image=None, chart_stats = ["shots", "passes", "defense"], save_image=True, name_extra = "- Lanus", credit_extra= "")
path Link del jugador en Fbref
image path de una imagen que quieras usar, se recomienda pasarla por https://crop-circle.imageonline.co/
chart_stats agregar rectangulos y nombres de las estadísticas al gráfico
save_image si guarda el png de la visualización
name_extra agregarle un string al título
credit_extra agregarle un string a los créditos
Ejemplo:
- Plotear match momentum de FotMob
ls.visualizations.fotmob_match_momentum_plot(match_id=4193851, save_fig=False)
match_id es el que se encuentra en la url, ejemplo: https://www.fotmob.com/es/matches/afc-bournemouth-vs-manchester-united/2yrx85#4193851
save_fig si guardo la imagen o no
- Plotear hexbins de tiros de jugadores de FotMob
ls.visualizations.fotmob_hexbin_shotmap('La Liga', '2023/2024', 711231)
league Liga habilitada en get_available_leagues("Fotmob")
season Temporada habilitada.
player_id Id del jugador de FotMob. Ejemplo: https://www.fotmob.com/es/players/711231/gorka-guruzeta el número de la url es el id del jugador.
- Plotear un mapa de disparos de un partido de 365Scores
ls.visualizations.threesixfivescores_match_shotmap('https://www.365scores.com/es-mx/football/match/copa-sudamericana-389/lanus-metropolitanos-fc-869-13830-389#id=4072240')
Hay que poner la url del partido entera. Va a devolver info si es que tiene un mapa de tiros el partido.
Créditos
Quiero agradecer a las influencias y ayudas que tuve para armar todo esto:
Más contenido
Unite al Discord hecho para la comunidad hispano hablante de fútbol y datos (cualquiera está invitado igual)
Para ver todo el contenido de LanusStats, te dejo este link
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file LanusStats-1.5.1.tar.gz
.
File metadata
- Download URL: LanusStats-1.5.1.tar.gz
- Upload date:
- Size: 25.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1680111ce7bb5b591714ce4b213b89ad4194462858438b2b4cac8642aba279f2 |
|
MD5 | ae78c28d215c9ccd4e2944f46dae61ce |
|
BLAKE2b-256 | c1ee91c83ed91233ade914ef7df16948644531d2c9afed33410871b4e75988de |
File details
Details for the file LanusStats-1.5.1-py3-none-any.whl
.
File metadata
- Download URL: LanusStats-1.5.1-py3-none-any.whl
- Upload date:
- Size: 28.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c057a1001192f67d4a13d1ac953ac7e49d3d15beecbed129152ff33e971fb0d |
|
MD5 | 4c57005716816176067568811854e2c6 |
|
BLAKE2b-256 | a66e63e97bad62ed20406866122d6ff173801a84c723a3ad650602e6cc2cf836 |