Tools Reviewed

Open-Source Tools Football Analysts Use

Seven free tools behind a lot of public football analysis, from open event data to pitch plots and action-value models, with what each one is good for.

AI Sports Editorial · · 3 min read

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:

  1. Load a season of open event data (StatsBomb Open Data, kloppy).
  2. Clean it and select the shots (pandas).
  3. Train a simple expected goals model and test it (scikit-learn).
  4. Draw the results on a pitch (mplsoccer).
  5. 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.

Further reading