Category · 8 articles

Tutorials

Pull the data and draw the charts yourself.

Reading analysis is one thing; producing it is another. These tutorials take you from a blank file to a real pass map, shot map or xG table, using free public data and free open-source tools — mostly Python with statsbombpy and mplsoccer, with a spreadsheet option for those who'd rather not write code.

Every code block is real and runnable. Copy it, change the team, and you're doing your own analysis by the end of the afternoon.

The order to do them in

Get the data first. Every free public soccer data source, ranked is the map: what each feed actually contains, what it costs you in licence terms and scraping etiquette, and which questions it simply cannot answer. Then getting started with StatsBomb open data gets a real event dataset onto your machine with statsbombpy.

Then draw it. Your first pass map and shot map covers the two charts every analyst makes first, and the player radar covers the one everyone makes next — including why percentile radars mislead as often as they inform. The rolling xG form chart is the same skill applied to a season instead of a match.

Then model it. The xG-difference league table needs nothing but a spreadsheet and is the cheapest useful model in football. Expected points from xG turns shot quality into a table you can compare with the real one, and the Poisson goals model goes from two team strengths to a full grid of scoreline probabilities — the engine underneath most published match forecasts.

What you need, and what these will not do

A recent Python install, pandas, and either mplsoccer or matplotlib, except for the spreadsheet piece, which needs a spreadsheet. Every dataset used is free and public; nothing here depends on a paid feed or an API key. What these tutorials will not do is hand you a finished opinion: they stop at a working chart or a fitted model and then say plainly where its assumptions break, because a model you cannot argue with is a model you cannot use. When you want the analysis rather than the machinery, the stat explainers and player and team analysis pick up where these leave off.