A tennis notebook can be perfectly reproducible and quietly out of date. It still loads a CSV, still draws a chart, and still answers a question about a season that ended months ago.
I wanted the same convenient workflow with a fresh source: one row per match, winner and loser columns, rankings, serve statistics and pre-match Elo. Then I wanted to do something a static season file cannot do on its own: pick an interesting match and open its point-by-point history.
This tutorial starts with the first half: an updating local match dataset. The last section shows how it connects to deeper analysis.
Disclosure: I build and maintain the CrawlPlant Actors used here. This is an independent dataset in the column layout associated with Jeff Sackmann's tennis files; it is not his dataset or an affiliated project.
Run this project: Get the code, sample data and finished outputs on GitHub . To fetch your own data, use the live recipe and follow the .env setup guide to add your APIFY_TOKEN .…