data-notebook.md 4.3 KB


name: data-notebook category: meta public: false database: optional hosting_hints:

  • local
  • jupyterhub
  • colab
  • kaggle
  • databricks
  • sagemaker audit_stack:
  • analyze
  • code-clean
  • cso
  • doc plugins: context7: optional ui-ux-pro-max: no gstack: no ---

Data / Jupyter Notebook

Projet data science / ML axé sur notebooks Jupyter. Exploration, analyse, modèles. Pas d'application déployée au sens applicatif.

Detection signals

Strong signals (×3)

  • EXT: 5+ fichiers .ipynb
  • DEP: requirements.txt OR pyproject.toml OR environment.yml contient "jupyter" OR "jupyterlab" OR "notebook"
  • FILE: environment.yml (Conda)

Medium signals (×2)

  • DIR: notebooks/ OR nb/ avec .ipynb
  • DIR: data/ OR datasets/ (souvent gitignored)
  • DEP: "pandas", "numpy", "matplotlib", "seaborn", "scikit-learn", "torch", "tensorflow", "jax"
  • FILE: Makefile avec cibles data (download-data/, preprocess/, train/)
  • FILE: dvc.yaml (DVC pipeline)

Weak signals (×1)

  • DIR: models/ (trained artifacts)
  • FILE: .gitattributes avec LFS rules
  • DEP: "mlflow", "wandb", "tensorboard"
  • DIR: figures/ OR plots/ (outputs)

Counter-signals (exclusion)

  • DEP: "streamlit" OR "gradio" OR "dash" + main entry point → data app UI (archétype à créer)
  • DEP: "fastapi" / "flask" / "django" comme dep principale → API, pas notebook
  • FILE: setup.py OR pyproject.toml AVEC [project.scripts] → package, pas notebook

Implications

  • Exécution : local / Google Colab / Kaggle / JupyterHub / Databricks / SageMaker
  • Base de données : variable (souvent CSV/Parquet/DuckDB locaux, parfois DB externe)
  • SEO/GEO : N/A
  • Surface sécurité : SOUS-ESTIMÉE — notebooks souvent commités avec credentials, outputs, PII
  • UI/UX : N/A (sauf si app Streamlit/Dash ajoutée)

Typical pain points

  • .ipynb committés avec outputs = fuite potentielle (données clients affichées)
  • Credentials en dur dans cellules (API keys AWS, tokens Kaggle, mots de passe DB)
  • PII dans outputs cellules (noms clients, emails, numéros carte)
  • Datasets volumineux committés (pas de LFS / DVC / gitignore)
  • requirements.txt non pinned → résultats non reproductibles
  • Pas de seed random → runs non déterministes
  • Notebooks monolithiques (10000+ lignes, cells non documentées)
  • Logique dupliquée entre notebooks (pas de src/lib.py)
  • Variables d'état entre cells (exécution non idempotente)
  • Modèles trainés commités dans git (bloat repo)
  • Pas de versioning data (DVC / lakeFS / Pachyderm absents)
  • Expériences non trackées (MLflow / W&B absent)
  • Pas de tests (pytest sur fonctions extraites)
  • Conversion prod : notebook → script Python sans refactor (code non modulaire)
  • GPU / environnement non documenté (CUDA version, cuDNN)
  • Shared secrets dans environment.yml / requirements.txt

Interview questions (adaptive)

En plus du set minimum business :

  • Plateforme d'exécution : local / Colab / Kaggle / JupyterHub / Databricks / autre ?
  • Python + libs stack principale ?
  • Package manager : pip / poetry / uv / conda / mamba / pdm ?
  • Datasets : taille moyenne ? où sont-ils stockés ? versionnés ?
  • DVC / lakeFS / Git LFS pour data ?
  • Tracking expériences : MLflow / W&B / TensorBoard / aucun ?
  • Tests automatiques sur fonctions extraites ?
  • Convention commit notebooks : nbstripout (outputs strippés) ou outputs inclus ?
  • GPU requis ? CUDA version ?
  • But final : exploration ponctuelle / modèle en prod / rapport reproductible / papier / autre ?
  • Si prod : comment le modèle sort du notebook (export pickle/ONNX/API) ?
  • RGPD / données sensibles dans les datasets ?

Plugin recommendations

  • context7 : OPTIONAL — ON pour libs modernes (Pytorch, JAX, Transformers qui évoluent)
  • ui-ux-pro-max : OFF
  • gstack : OFF

Example project layout

environment.yml            OR  requirements.txt    OR  pyproject.toml
notebooks/
  01-exploration.ipynb
  02-preprocessing.ipynb
  03-modeling.ipynb
  04-evaluation.ipynb
src/
  features.py              (fonctions extraites, testables)
  models.py
  utils.py
data/                       (GITIGNORED ou DVC-tracked)
  raw/
  interim/
  processed/
models/                     (artifacts — GITIGNORED ou LFS)
figures/
tests/
  test_features.py
dvc.yaml                    (optional)
.pre-commit-config.yaml     (nbstripout idéal)
Makefile