Retour à la leçon·Leçon 2 sur 8·Se 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.
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.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.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 matplotlibNotes 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.uvinstalle 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.Python : utilisez uv, pas l'interpréteur du système — Shell
uv syncNotes du présentateur
uv addécrit à la foispyproject.toml(ce que vous avez demandé) etuv.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,uvsait 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.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.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.lockest l'équivalent deuv.lock. Versionnez-le. Un collègue exécuterenv::restore()et obtient votre bibliothèque, pas la sienne. Deux habitudes comptent autant que l'outillage :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.mdNotes 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é.Une organisation de projet qui survit à une passation
Un test utile : supprimez entièrement
data/processed/etoutput/, 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 dedata/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.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.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.Ce sur quoi les deux langages divergent
Aspect pandas dplyr / readr Valeur manquante NaN, etNonepour les objetsNA, typé par colonneLecture d'un CSV pd.read_csvdevine les typesread_csvdevine et le signaleEnchaînement d'étapes Chaînage de méthodes ou réaffectation Le tube, \|>Synthèse par groupe groupby().agg()group_by() \|> summarise()Catégories Type 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.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 queread_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.- La leçon suivante lit l'export correctement — ce qui est plus difficile que