Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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 All voor een schone run.
  • Exporteer naar HTML/PDF voor rapportage; controleer output.

3.2 Reproduceerbaarheid: omgeving en seeds

  • Pin pakketversies in requirements.txt of environment.yml.
  • Leg hardware/OS/versies vast in een REPORT.md of 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 naar data/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.