Professional clubs pay for data platforms, but a surprising amount of serious football analysis is done with free, open-source software. If you want to understand how analysts work, or try it yourself, these seven tools are a good map of the field. All of them are free to use; you need some Python for most of them.
The seven at a glance
| Tool | What it does | Best for |
|---|---|---|
| StatsBomb Open Data | Free event data for selected competitions | Practising on real match data |
| pandas | Tables of data in Python | Cleaning, filtering and summarising |
| scikit-learn | Classic machine learning in Python | Building a first xG or outcome model |
| mplsoccer | Drawing pitches and football charts | Shot maps, pass maps, heatmaps |
| kloppy | Loading data from many providers in one format | Working with event and tracking data |
| socceraction | Valuing every action on the ball | Measuring player contributions beyond goals |
| Jupyter | Interactive notebooks | Exploring data and sharing analysis |
1. StatsBomb Open Data
The data company StatsBomb publishes a free set of event data on GitHub covering selected competitions and matches. Each pass, shot, carry and tackle is recorded with its location and details. For anyone learning, it removes the biggest obstacle: getting real, detailed data without paying for it. Check the licence and the attribution it asks for before publishing work based on it.
2. pandas
pandas is the standard Python library for tables of data. Almost every football analysis starts here: loading events, filtering shots, grouping by team or player and calculating per-90-minute figures. It is not football-specific, which is exactly why it is everywhere.
3. scikit-learn
scikit-learn offers ready-made versions of the classic machine-learning models: logistic regression, decision trees, random forests and gradient boosting, plus tools to split data and test a model properly. A first expected goals model, trained on open shot data, is a common beginner project. We explain how such a model works in xG Explained.
4. mplsoccer
mplsoccer draws football pitches and the charts analysts use on them: shot maps, pass networks, heatmaps and radar charts comparing players. It handles the fiddly part, different data providers use different pitch coordinates, so the same chart works whatever the source.
5. kloppy
Every data provider has its own format, which makes combining sources painful. kloppy, maintained by the PySport community, loads event and tracking data from many vendors into a single, standard data model. For tracking data, where formats are especially varied, it saves a great deal of work.
6. socceraction
Developed at KU Leuven, socceraction converts event data from providers such as StatsBomb, Wyscout and Opta into a common format (SPADL) and implements methods for valuing every action, including VAEP and expected threat (xT). Instead of counting only goals and assists, these methods ask how much each pass, dribble or tackle changed a team's chances of scoring or conceding.
Key point: Action-value models matter because most of what players do never appears in traditional statistics. A pass that breaks a defensive line but leads to nothing still raised the chance of a goal.
7. Jupyter
Jupyter notebooks mix code, results, charts and written explanation in one document. Much of the public football analytics community shares its work this way, which makes notebooks one of the best ways to learn: you can rerun someone's analysis step by step.
How they fit together
A typical small project uses several of these tools in a row:
- Load a season of open event data (StatsBomb Open Data, kloppy).
- Clean it and select the shots (pandas).
- Train a simple expected goals model and test it (scikit-learn).
- Draw the results on a pitch (mplsoccer).
- Write it up in a notebook (Jupyter).
Watch out: Free data covers selected competitions and matches. Before drawing conclusions about a league or a player, check that the sample is large and representative enough, and respect each dataset's licence.
- Open data and open-source Python libraries cover most of the steps of football analysis.
- pandas and scikit-learn are general tools; mplsoccer, kloppy and socceraction are built for football.
- Learning with open data is practical, but check sample sizes and licences.
Further reading
- StatsBomb Open Data — GitHub repository
- kloppy documentation — PySport
- socceraction — KU Leuven, GitHub repository
