prof404
← Retour aux ressources du module
Sommaire (6 sections) · 7 min
Ce que tu travailles iciMener un projet, éthique et RGPDPourquoi ces compétences ?
  • BC04Mener un projet, éthique et RGPD. Mener le projet et le présenter : poser la problématique métier, tenir les contraintes légales et éthiques, et adapter la restitution à qui la lit.

Ce sont les compétences du titre RNCP 38616, celles sur lesquelles le jury évalue.

Documenter une veille utile au projet

Une jointureRapprocher deux tables sur une colonne commune, pour lire ensemble des informations qui sont stockées séparément. s'exécute, mais elle multiplie les lignes que tu comptes. Ce risque apparaît aussi dans un notebook, un document qui alterne cellules de code, résultats et explications, pendant la préparation des données avant le graphique. Tu trouves une option censée le détecter : comment vérifier qu'elle convient au projet et laisser une preuve utilisable par quelqu'un d'autre ?

Cette fiche travaille la veille du bloc BC04 : partir d'une décision du projet, consulter une source primaire, c'est-à-dire la documentation de l'équipe qui produit l'outil, puis distinguer sa déclaration de ton propre essai.

Poser une question qui permet de décider

« Faire une veille Python » est trop large. Ici, la question est :

Dans notre préparation avec pandas, peut-on faire refuser une jointure si plusieurs lignes de la table des clients portent le même identifiant ?

Pandas est la bibliothèque Python de manipulation de tableaux utilisée dans les notebooks. La décision est d'ajouter ou non ce contrôle avant de produire le fichier destiné au graphique. Elle ne dépend pas du choix de l'outil de BIBusiness Intelligence : transformer des données brutes en tableaux de bord lisibles par des gens qui ne font pas de SQL..

Retrouver une déclaration précise

Ouvre la documentation officielle de pandas.merge. Cherche le paramètre validate. La valeur many_to_one contrôle que la clé de jointure est unique dans le tableau de droite. Dans notre question, les commandes sont à gauche et les clients à droite.

Compare avec la même rubrique de la documentation pandas 2.2.3. Elle décrit déjà ce contrôle. La page courante consultée le 8 septembre 2026 porte la version 3.0.5 et conserve cette règle. Cette comparaison ne donne pas la date de création de l'option et ne justifie pas, à elle seule, une mise à jour.

Remplis ton entrée au moment où tu recherches :

Champ Exemple documentaire
Question Refuser une jointure si un identifiant client se répète à droite ?
Source Équipe pandas, pandas.merge, liens directs ci-dessus, rubrique validate
Version et dates Documentation 3.0.5 comparée à 2.2.3 ; consultation le 8 septembre 2026 ; date de mise à jour de chaque page non indiquée
Déclaration many_to_one vérifie l'unicité des clés à droite ; même règle dans les deux pages
Contrôle local À compléter après l'essai : version, données, commande et résultat observé

Une page peut changer. Conserve avec ton entrée un court extrait ou une capture de la rubrique et son URL. Le copyright en bas de page n'est pas une date de mise à jour. La version de la documentation n'est pas celle de ton notebook.

Faire un essai qui peut contredire la promesse

Le petit jeu ci-dessous est construit pour l'essai, sans données personnelles. Une ligne de commandes représente une commande. Dans clients, l'identifiant x apparaît avec deux villes différentes : le rattachement est ambigu.

Avant d'exécuter, prédis le nombre de lignes après la jointure. Écris aussi quelle commande risque d'apparaître plusieurs fois.

Copie ce bloc dans une nouvelle cellule de ton notebook pandas :

import pandas as pd

print("pandas", pd.__version__)
commandes = pd.DataFrame({
    "commande": ["A", "B", "C"],
    "client": ["x", "y", "y"],
})
clients = pd.DataFrame({
    "client": ["x", "x", "y"],
    "ville": ["Lyon", "Paris", "Lille"],
})
resultat = commandes.merge(clients, on="client", how="left")
print(resultat.to_string(index=False))
print("Lignes avant :", len(commandes), "; après :", len(resultat))

merge réalise la jointure ; on désigne la colonne de correspondance et how="left" conserve toutes les commandes du tableau de gauche. len compte les lignes. Essai exécuté avec pandas 3.0.5 :

commande client ville
       A      x  Lyon
       A      x Paris
       B      y Lille
       C      y Lille
Lignes avant : 3 ; après : 4

La commande A se rattache aux deux lignes x. Compter les lignes de ce résultat comme des commandes compterait A deux fois.

Dans la cellule suivante, ajoute le contrôle trouvé dans la source :

commandes.merge(clients, on="client", how="left", validate="many_to_one")

L'erreur est attendue. L'essai avec pandas 3.0.5 renvoie MergeError et signale que les clés ne sont pas uniques dans le tableau de droite. Conserve le message obtenu avec ta version ; son texte peut différer.

Si pandas n'est pas disponible dans ton environnement, compare les lignes ci-dessus et la déclaration officielle. Inscris « résultat fourni examiné, contrôle local non réalisé ». Cette lecture permet de préparer la décision, mais ne prouve pas que le contrôle fonctionne sur ton poste.

Passer de l'essai à une décision bornée

Complète l'entrée avec trois phrases :

  • Observation : sur le jeu d'essai, la jointure sans contrôle produit quatre lignes pour trois commandes ; avec many_to_one, pandas 3.0.5 la refuse.
  • Conséquence : pour une jointure du projet qui attend un seul client à droite par identifiant, retenir ce contrôle avant la production du graphique.
  • À vérifier : confirmer la clé et la règle métier du vrai jeu, puis rejouer sur l'environnement du projet. Cet essai n'établit pas la qualité des données réelles.

Le contrôle détecte l'ambiguïté ; il ne choisit pas la bonne ville. Ne supprime pas une ligne uniquement pour faire disparaître l'erreur. Et ce contrôle n'établit pas que chaque commande trouve un client : une absence de correspondance demande une vérification distincte.

Modifier l'essai et compléter la preuve

Pour ce jeu fictif seulement, suppose que le responsable de la source confirme une unique entrée x à Lyon et une unique entrée y à Lille. Remplace la création de clients par ces deux lignes, puis rejoue les deux jointures. Prédis le résultat avant l'exécution.

Aide : les listes de la nouvelle table deviennent ['x', 'y'] pour client et ['Lyon', 'Lille'] pour ville.

Vérification : les deux jointures produisent trois lignes, une pour chaque commande, et celle avec contrôle ne lève plus d'erreur. Explique pourquoi les deux commandes du client y restent autorisées : l'unicité demandée porte sur les clients à droite, pas sur les commandes à gauche.

Reprends ensuite les données ambiguës du premier bloc. Dans la documentation, cherche ce que contrôle many_to_many. Décide si cette valeur protégerait le même livrable, puis essaie-la à la place de many_to_one.

Retour : la documentation indique que many_to_many ne réalise pas de contrôle d'unicité. L'essai produit les quatre lignes du premier résultat. Un paramètre nommé validate ne garantit donc pas que la règle attendue est vérifiée : sa valeur compte.

Réutiliser la veille sur ton projet

Choisis une autre question liée à un livrable réel : format accepté par un outil utilisé, comportement d'une fonction ou compatibilité d'une version. Produis une entrée documentaire et un petit essai qui pourrait révéler un écart.

Aide : une documentation explique le comportement annoncé ; une note de version précise un changement et sa version. Compare deux versions si ta question porte sur une évolution. Si tu ne trouves aucune différence sur le point contrôlé, écris-le sans inventer une nouveauté.

Vérification : une autre personne doit pouvoir retrouver la déclaration sans moteur de recherche, identifier la version essayée, refaire le contrôle et expliquer ce que son résultat autorise à décider. Elle doit aussi pouvoir nommer ce qui reste inconnu. Conserve le code et sa sortie dans le dossier du projet, sans données personnelles.

Donne à l'entrée un statut : à vérifier, confirmé sur le cas testé, écart trouvé ou sans effet sur le projet. Nomme le livrable concerné et la personne qui reprend le contrôle. Reviens sur l'entrée avant ce livrable ou lors d'un changement de version ; ajoute une observation datée au lieu d'effacer l'ancienne.

À la fin de la leçon

Le quiz de la leçon

Choisis une réponse, puis lis l’explication avant de continuer.

  • 6 questions
  • 3 min par question
  • Une explication après chaque réponse

Le chrono démarre à la première question. Un clic sur une réponse valide ton choix.