Sports analytics, the hands-on way

Learn sports analytics by actually doing it.

Pull real MLB, NBA, soccer, NFL and NHL data, analyse it in Python, and build charts you made yourself - one focused tutorial at a time.

How this site is different

The full methodology →

Every output is real

The build system only publishes a chart or a printed result if the tutorial's script actually produced it when it was run. Nothing is mocked up, and no number is typed in from memory - if the code on the page can't generate it, it doesn't appear.

The code runs in your browser

Every Python block has a Run button, powered by Pyodide. Edit it, break it, re-run it - the real datasets each tutorial uses are bundled and pre-loaded, so there's nothing to install before you start learning.

One curriculum, not a pile of posts

All 83 tutorials declare their prerequisites and build on each other: foundations first, then the sport track you care about, then statistics and machine learning implemented from scratch. The learning path shows the whole spine.

Free data, named sources

Statcast, StatsBomb Open Data, nflverse, and the NBA and NHL public APIs. Every figure captions its source and retrieval date, and every finished script is downloadable with the sample data it needs to run offline.

Every tutorial belongs to exactly one course, in a deliberate order. Each course page carries a syllabus, a one-ZIP bundle of all its code and data, and progress you can tick off as you go.

Beginner 10 parts

Python Foundations for Sports Data

Zero to competent: install Python, learn pandas on real standings, and finish by building a league table from raw results.

~63 min total
Beginner to Intermediate 10 parts

Sports Data Visualization

Ten chart types, each built on real sports data, ending with the styling pass that makes a figure publishable.

~60 min total
Intermediate 11 parts

Statistics for Sports Data

The measurement toolkit: distributions, z-scores, percentiles, outliers, time series — closing with what actually predicts winning.

~60 min total
Intermediate 7 parts

Randomness, Inference & Simulation

Monte Carlo seasons, bootstrap intervals, permutation tests, chi-square, Bayesian updating and best-of-seven series math — how to tell signal from luck.

~46 min total
Advanced 9 parts

Machine Learning from Scratch

Nine models and methods — gradient descent to decision trees — every one implemented in pure numpy on real NBA data.

~50 min total
Beginner 6 parts

Working with Real Sports APIs

Read API docs like a developer, then pull your first real data from MLB, the NBA, StatsBomb, nflverse and the NHL.

~49 min total

Featured