cassionAnalyse de données

Retour à la leçonLeçon 2 sur 8Se préparer

Un environnement de travail en Python et en R

Le même diaporama que les téléchargements, rendu sous forme de page. Lancez le diaporama pour le présenter en plein écran — les flèches ou un clic avancent d'une diapositive, Échap quitte.

Diapositives · PDFDiapositives · PowerPoint

  1. Diapositive 1 / 13

    Ce que couvre cette leçon

    • Pourquoi cette leçon n'est pas facultative
    • Python : utilisez uv, pas l'interpréteur du système
    • R : utilisez les Projets et renv
    • Une organisation de projet qui survit à une passation
    • Le même premier script, dans les deux langages
    • Ce sur quoi les deux langages divergent
    • La suite
    Notes du présentateur
    Installer Python et R de façon à ce qu'ils fonctionnent encore sur une mauvaise connexion, organiser un dossier de projet qui survit à une passation, et exécuter le même premier script dans les deux langages.
  2. Diapositive 2 / 13

    Pourquoi cette leçon n'est pas facultative

    • La raison la plus fréquente pour laquelle une analyse de suivi-évaluation cesse d'être reproductible n'est pas une erreur statistique.
    Notes du présentateur
    La raison la plus fréquente pour laquelle une analyse de suivi-évaluation cesse d'être reproductible n'est pas une erreur statistique. C'est que la personne qui l'a écrite a installé un paquet un après-midi, n'a jamais noté lequel, puis est partie. Six mois plus tard, le script échoue à l'import sur un portable de bureau terrain relié par satellite, et le rapport trimestriel redevient un travail manuel sur tableur. Dix minutes de mise en place aujourd'hui, c'est ce qui évite cela.
  3. Diapositive 3 / 13

    Python : utilisez uv, pas l'interpréteur du système — Shell

    # Installer uv (macOS et Linux)
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
    # Créer un projet et fixer un interpréteur
    uv init muac-analysis
    cd muac-analysis
    uv python install 3.13
    
    # Ajouter ce que cette formation utilise
    uv add pandas pyarrow matplotlib
    Notes du présentateur
    Votre système d'exploitation est livré avec un Python. N'analysez pas de données avec celui-là : il est là pour faire fonctionner le système, et le modifier peut casser des choses dont vous ignoriez qu'elles en dépendaient. uv installe un Python isolé et résout les paquets assez vite pour rester utilisable sur une connexion lente. Il écrit aussi un fichier de verrouillage, ce qui rend l'environnement reproductible sur la machine de quelqu'un d'autre.
  4. Diapositive 4 / 13

    Python : utilisez uv, pas l'interpréteur du système — Shell

    uv sync
    Notes du présentateur
    uv add écrit à la fois pyproject.toml (ce que vous avez demandé) et uv.lock (ce qui a exactement été installé, empreinte comprise). Versionnez les deux. Un collègue reproduit alors votre environnement en une commande : Derrière un proxy ou hors ligne, uv sait installer depuis un dossier local de paquets. Télécharger ces paquets une fois, sur une clé USB, et installer depuis celle-ci est un mode de travail courant dans le secteur : il vaut la peine de le préparer avant d'en avoir besoin.
  5. Diapositive 5 / 13

    R : utilisez les Projets et renv — En R

    # Une fois par machine
    install.packages("renv")
    
    # Une fois par analyse, depuis un Projet RStudio
    renv::init()
    
    # Ajouter ce que cette formation utilise
    install.packages(c("readr", "dplyr", "tidyr", "ggplot2", "janitor"))
    
    # Consigner exactement ce qui est installé
    renv::snapshot()
    Notes du présentateur
    Le problème équivalent en R, c'est la bibliothèque globale — des paquets installés dans un emplacement partagé, utilisés sans le savoir par toutes vos analyses, et mis à jour silencieusement sous vos pieds.
  6. Diapositive 6 / 13

    R : utilisez les Projets et renv

    • Travaillez dans un Projet. Le répertoire de travail est alors la racine du projet, pour tout le monde, toujours.…
    • N'écrivez jamais setwd(). Cela inscrit votre nom d'utilisateur dans l'analyse et garantit son échec chez la…
    Notes du présentateur
    renv.lock est l'équivalent de uv.lock. Versionnez-le. Un collègue exécute renv::restore() et obtient votre bibliothèque, pas la sienne. Deux habitudes comptent autant que l'outillage :
  7. Diapositive 7 / 13

    Une organisation de projet qui survit à une passation — Exemple

    muac-analysis/
      data/
        raw/          # exactement tel qu'arrivé. Lecture seule. Jamais modifié.
        interim/      # résultats intermédiaires. Jetables.
        processed/    # prêt à l'analyse. Régénérable depuis raw + code.
      scripts/
        01-lecture.py
        02-nettoyage.py
        03-indicateurs.py
      output/
        figures/
        tables/
      README.md
    Notes du présentateur
    La même structure convient aux deux langages. Elle vaut la peine d'être adoptée telle quelle, car sa valeur tient à sa prévisibilité et non à son ingéniosité.
  8. Diapositive 8 / 13

    Une organisation de projet qui survit à une passation

    Un test utile : supprimez entièrement data/processed/ et output/, relancez vos scripts, et vérifiez que vous retrouvez les mêmes résultats. Si vous ne vous résolvez pas à essayer, vous connaissez déjà la réponse.
    Notes du présentateur
    Une règle porte l'essentiel : data/raw/ est en lecture seule. Si vous ouvrez l'export dans Excel, corrigez trois cellules et enregistrez, vous avez détruit la seule trace de ce qui est réellement arrivé, et plus personne — vous compris — ne pourra jamais distinguer l'original de la correction. Tout ce qui se trouve en aval de data/raw/ doit pouvoir être reproduit en le supprimant puis en relançant les scripts. Si ce n'est pas le cas, une opération est faite à la main, et c'est précisément cette opération-là qui cassera.
  9. Diapositive 9 / 13

    Le même premier script, dans les deux langages — En Python

    import pandas as pd
    
    muac = pd.read_csv("data/raw/muac-screening-artibonite-2024.v1.csv")
    
    print(muac.shape)
    print(muac.head())
    print(muac.dtypes)
    Notes du présentateur
    Lire le registre, examiner sa forme, afficher les premières lignes. Rien de plus — il s'agit seulement de confirmer que l'environnement fonctionne avant d'en dépendre.
  10. Diapositive 10 / 13

    Le même premier script, dans les deux langages — En R

    library(readr)
    library(dplyr)
    
    muac <- read_csv("data/raw/muac-screening-artibonite-2024.v1.csv")
    
    dim(muac)
    head(muac)
    glimpse(muac)
    Notes du présentateur
    Les deux doivent annoncer 4 218 lignes et 8 colonnes. Si ce n'est pas le cas, arrêtez-vous ici : un nombre de lignes en désaccord avec la source est l'erreur la moins coûteuse que vous détecterez jamais, et elle devient bien plus chère trois scripts plus loin.
  11. Diapositive 11 / 13

    Ce sur quoi les deux langages divergent

    Aspectpandasdplyr / readr
    Valeur manquanteNaN, et None pour les objetsNA, typé par colonne
    Lecture d'un CSVpd.read_csv devine les typesread_csv devine et le signale
    Enchaînement d'étapesChaînage de méthodes ou réaffectationLe tube, \|>
    Synthèse par groupegroupby().agg()group_by() \|> summarise()
    CatégoriesType category, sur demandeLes facteurs, et ils mordent
    Notes du présentateur
    Vous utiliserez les deux ; autant savoir où ils diffèrent de manière conséquente. Aucun n'est meilleur. Celui qui compte est celui que votre équipe utilise déjà, et si cette formation enseigne les deux, c'est parce que vous changerez d'équipe.
  12. Diapositive 12 / 13

    La suite

    • La leçon suivante lit l'export correctement — ce qui est plus difficile que read_csv(chemin), car les valeurs par défaut abîmeront discrètement les identifiants, les dates et le code de valeur manquante avant que vous n'ayez regardé quoi que ce soit.
    Notes du présentateur
    La leçon suivante lit l'export correctement — ce qui est plus difficile que read_csv(chemin), car les valeurs par défaut abîmeront discrètement les identifiants, les dates et le code de valeur manquante avant que vous n'ayez regardé quoi que ce soit.
  13. Diapositive 13 / 13

    La suite

    Lire la leçon complète, avec le code exécutable Retour à la leçon