Football Analytics
Data Analyst & Scientist—2024
Client
Club de Football Régional
Rôle
Data Analyst & Scientist
Stack
Python, Pandas, Matplotlib, mplsoccer, Jupyter, Scikit-learn
Date
2024
01
Le Défi
Un club régional m'a contacté pour apporter une analyse de données de niveau professionnel à leur équipe. Ils avaient des stats de base mais manquaient d'outils pour extraire des insights tactiques. Le staff avait besoin de visualisations utilisables en réunion d'équipe — comparaisons de joueurs, schémas de passes, efficacité aux tirs — pour prendre des décisions basées sur les données.
02
La Solution
Construction d'un pipeline d'analyse complet inspiré des workflows de sciences du sport professionnels. Développement d'une suite d'outils Python : radar charts style StatsBomb pour le profilage multidimensionnel des joueurs ; cartes de réseaux de passes avec 'expected threat' (xT) ; shot maps classées par 'expected goals' (xG) par 90 minutes ; et rapports comparatifs normalisant les stats par position.
# Player radar chart — percentile-based profiling
def build_player_radar(player: str, df: pd.DataFrame):
metrics = [
"goals_p90", "xG_p90", "key_passes_p90",
"progressive_carries", "tackles_won_pct",
"interceptions_p90", "pass_completion_pct",
"aerial_duels_won_pct"
]
values = []
for m in metrics:
pctl = percentileofscore(df[m], df.loc[player, m])
values.append(round(pctl, 1))
radar = Radar(params=metrics, min_range=[0]*8,
max_range=[100]*8)
fig, ax = radar.setup_axis()
radar.draw_circles(ax, facecolor="#0a0a0a")
radar.draw_radar(values, ax,
kwargs_radar={"facecolor": "#2d6a4f", "alpha": 0.6})
return fig↳ Radar chart basé sur les centiles utilisant mplsoccer pour le profilage joueur



Projet Suivant
Enseignement UI Design
Éducation / Design UX-UI