Where did my money go? Explore your spending in a Python notebook that turns into an app
Six months of card payments, one slider: drag it and every total, chart and table updates at once. marimo is the free Python notebook that does it. Explore your own bank export with a dropdown, a chart and SQL, then turn the same file into an app and a web page you can send.
- Your own bank's CSV in the same notebook, and a one-file summary you can email
- How marimo differs from Jupyter, and the one setting to change before you load real bank data
- Windows, Mac or Linux, with about 600MB of free disk space (the project folder is about 585MB)
- uv installed. Step 1 shows how. If you've done Turn a Python script into a web app, you already have it
- The two sample files: spending.py (the notebook) and spending.csv (257 sample card payments, April to September 2026)
- No Python experience. You'll run a finished notebook and change it, not write one from scratch
Install marimo
marimo lives in its own project folder, so it can't clash with anything else on your PC.
marimo ↗ is a free, open-source notebook for Python. Like Jupyter, you write code in boxes called cells and see the results underneath. Unlike Jupyter, marimo knows which cells depend on which, so when you change one thing, everything that uses it updates by itself.
Install it with uv. If you don't have uv yet, install it first, then close PowerShell and open a new window:
Windows (only if you don't have uv)winget install --id astral-sh.uv -eMac or Linux (only if you don't have uv)curl -LsSf https://astral.sh/uv/install.sh | shNow make a project folder called
my-notebookswith marimo inside it. Run these one at a time:Terminaluv init --python 3.12 my-notebooks cd my-notebooks uv add "marimo[sql]" altair pandasOutputInitialized project `my-notebooks` at `...\my-notebooks` Using CPython 3.12.13 Creating virtual environment at: .venv Resolved 47 packages in 873ms ... Downloading marimo (48.5MiB) Downloading duckdb (12.6MiB) ... Installed 44 packages in 12.40s + altair==6.3.0 ... + duckdb==1.5.6 ... + marimo==0.25.1 ... + pandas==3.0.6 ...That takes about 30 seconds, and the project folder comes to 585MB. That's big, because
[sql]brings DuckDB (a small database engine that runs SQL on your own PC) and Polars (a fast table library). Altair draws the charts and pandas reads the CSV.Terminaluv run marimo --versionOutput0.25.1TipEvery command in this mission starts withuv run, which uses the marimo inside this folder. So alwayscd my-notebooksfirst when you open a new terminal. uv also made amain.pyfile. You can ignore it.
uv run marimo --version prints 0.25.1 (or newer).If it breakserror: Failed to spawn: marimo and Caused by: program not found
error: Failed to spawn: marimo and Caused by: program not found
cd my-notebooks (from the folder you made it in) and try again.