Hoofdstuk 3 — Werkwijze met Jupyter Notebooks, reproducibility en projectstructuur
Let op: De tekst is in het Nederlands; codevoorbeelden en shell‑commando’s zijn in het Engels.
Doel van dit hoofdstuk:
- Efficiënt werken met Jupyter (Lab/Notebook): cellen, kernels, magics, export.
- Reproduceerbare analyses: vaste omgeving, vaste random seeds, datamanagement.
- Praktische projectstructuur voor data‑werk en samenwerking.
Aanbevolen voorkennis: Hoofdstuk 1–2.
3.1 Jupyter: basis en best practices
Start JupyterLab:
jupyter lab
Belangrijke concepten:
- Kernel: de Python‑runtime; herstart bij foutieve staat of geheugenlekken.
- Cellen: mix van code en Markdown; gebruik koppen en tekst voor context.
- Magics:
%timeit,%matplotlib inline,%%bash, etc.
Tips:
- Houd notebooks klein en doelgericht; verplaats herhaalbare code naar
src/modules. - Gebruik
Restart & Run Allvoor een schone run. - Exporteer naar HTML/PDF voor rapportage; controleer output.
3.2 Reproduceerbaarheid: omgeving en seeds
- Pin pakketversies in
requirements.txtofenvironment.yml. - Leg hardware/OS/versies vast in een
REPORT.mdof in de notebook header. - Stel random seeds waar relevant:
import numpy as np
rng = np.random.default_rng(seed=42)
- Noteer datums van data‑extracts en I/O‑paden.
3.3 Data‑beheer in projecten
- Bewaar ruwe data onveranderd in
data/raw/; schrijf tussenresultaten naardata/processed/. - Gebruik Parquet voor kolom‑georiënteerde opslag en snellere herlaad.
- Houd gevoelige data buiten Git (git‑ignore); gebruik secrets managers i.p.v. hard‑coded wachtwoorden.
3.4 Projectstructuur (voorbeeld)
project/
data/
raw/
processed/
notebooks/
01-exploratie.ipynb
02-rapport.ipynb
src/
__init__.py
features.py
viz.py
reports/
figures/
requirements.txt # of environment.yml
README.md
3.5 Notebook → module: code hergebruik
Verplaats functies naar src/ en importeer vanuit notebooks:
# src/features.py
import pandas as pd
def add_amount(df: pd.DataFrame) -> pd.DataFrame:
return df.assign(amount=df['qty'] * df['price'])
# In notebook
from src.features import add_amount
3.6 Valstrikken en performance
- Notebooks kunnen “stateful drift” veroorzaken; herstart regelmatig.
- Grote tabellen/figuren maken notebooks zwaar; cache tussenresultaten in Parquet.
- Gebruik versiebeheer (Git) voor geschiedenis; commit notebooks met nbdime diff (optioneel).
3.7 Samenvatting
Je kunt nu productief werken in Jupyter met aandacht voor reproduceerbaarheid en structuur. In Hoofdstuk 4 leer je samenwerken met Git/GitHub en review‑workflows.