Link Search Menu Expand Document
El Libro De Python (24.95 €) 39.95 €

Analítica de futbol con seaborn

En este ejemplo vamos a representar un mapa de calor o heatmap desde donde se iniciaron más pases en el partido de fútbol España-Inglaterra del 14 de julio de 2024.

  • ⚽ Con statsbombpy obtenemos los datos del partido
  • 📉 Con seaborn representamos la información gráficamente.

Primero obtenemos los datos usando el match_id de ese partido. Después filtramos los datos para obtener el origen de los pases que realizó Inglaterra a lo largo del partido.

from statsbombpy import sb
import seaborn as sns
import matplotlib.pyplot as plt

ev = sb.events(match_id=3943043)
ev = ev.loc[
    (ev['type'] == "Pass") &
    (ev['team'] == "England")]

Llegados aquí, en ev tenemos todos los eventos relativos a pases de Inglaterra. Pero lo más importante para el ejemplo es:

  • 🎬 El campo location: El punto de inicio de cada pase.
  • 🏁 El campo pass_end_location: El punto donde finalizó el pase.

Ahora con seaborn representamos el heatmap de donde se iniciaron los pases. Esto nos permite hacernos una idea de los puntos calientes desde donde se inician los pases. Podemos ver que el portero inició muchos saques.

plt.figure(figsize=(8, 4))

plt.subplot(1, 2, 1)
ax1 = sns.histplot(
    x=ev['location'].str[0],
    y=ev['location'].str[1],
    bins=(20, 20), cmap="YlGnBu", cbar=True)
ax1.set_aspect('equal', 'box')
plt.title('España/Inglaterra 14/07/2024\n'
          'Heatmap inicio de pases')

Realizamos lo mismo con los puntos donde se finalizaron los pases. Como puedes ver usamos str[0] y str[1]. Estas son las coordenadas x e y en el campo.

plt.subplot(1, 2, 2)
ax2 = sns.histplot(
    x=ev['pass_end_location'].str[0],
    y=ev['pass_end_location'].str[1],
    bins=(20, 20), cmap="YlGnBu", cbar=True)
ax2.set_aspect('equal', 'box')
plt.title('España/Inglaterra 14/07/2024\n'
          'Heatmap fin de pases')

plt.tight_layout()
plt.show()

✏️ Ejercicios:

  • Realiza la misma representación para España y compáralo con el heatmap que acabamos de ver de Inglaterra.