Aller au contenu
Apprendre.
  • M1 · toutes les matières15 matières : Préparation de données, API & sécurité, CI/CD, Docker, Merise, Dataviz, KNIME, ML appliqué : projet LoL, SQL & UML, SQL avancé, Machine Learning, Git, IA frugale & responsable, Qualité des données, MathématiquesAnnée
  • M2 · toutes les matières4 matières : Deep Learning, AI Act, Comex & Fundraising, Gouvernance & DataMeshAnnée
  • Deep LearningM2 · 4 modules · Réseaux de neurones, CNN, texte, modèles génératifs.Matière
  • Préparation de donnéesM1 · 3 modules · Nettoyer, transformer et fusionner des données avec Python.Matière
  • API & sécuritéM1 · 2 modules · Consommer, concevoir et sécuriser des API.Matière
  • CI/CDM1 · 1 module · Intégration et livraison continues.Matière
  • DockerM1 · 3 modules · Conteneurs, images, volumes, réseaux, Compose.Matière
  • MeriseM1 · 2 modules · Modéliser une base : MCD, MLD, MPD.Matière
  • DatavizM1 · 2 modules · Visualiser pour comprendre et décider.Matière
  • KNIMEM1 · 1 module · Explorer et nettoyer des données en workflow.Matière
  • ML appliqué : projet LoLM1 · 2 modules · Du besoin métier au POC de vision par ordinateur.Matière
  • SQL & UMLM1 · 3 modules · Modèles UML et requêtes SQL.Matière
  • SQL avancéM1 · 3 modules · Jointures, fenêtres, CTE, optimisation.Matière
  • Machine LearningM1 · 3 modules · Régression, classification, segmentation, projet.Matière

↑↓ naviguer↵ ouvre le résultat en surbrillanceesc fermer

Partie 3 · Fonctions et bonnes pratiques

apply, map et colonnes dérivées

Pour créer une colonne à partir d'autres, on applique une fonction.

MéthodePortéeUsage
.apply(f)DataFrame : axis=0 (défaut) colonne par colonne, axis=1 ligne par ligne ; ou Serieslogique personnalisée (statut selon un seuil, commission selon le produit)
.map(dico)Series uniquementremplacer chaque valeur via un dictionnaire ('A' → 'Électronique')
calcul vectorisécolonnes entièresdf['TTC'] = df['HT'] * 1.2

Exemples du TP : statut « Importante » si le montant est supérieur à 150, « Normale » sinon ; commission de 10 % pour le produit A, 5 % pour B, 0 % sinon (fonction appliquée avec axis=1).

Vérifie que tu as compris

Quelle méthode remplace chaque valeur d'une colonne via un dictionnaire ?

Vérifie que tu as compris

Avec df.apply(f, axis=1), la fonction f reçoit :

À toi de coder

Statut, catégorie et commission

Sur les commandes, crée trois colonnes dérivées : statut ('Importante' si montant > 150, sinon 'Normale'), categorie (via un dictionnaire : A → Électronique, B → Alimentaire, C → Vêtements) et commission (10 % du montant pour A, 5 % pour B, 0 sinon, via une fonction qui reçoit une ligne).

Ctrl/⌘+Entrée

Efficacité et bonnes pratiques

  • Vectorisation plutôt que boucles : les opérations directes sur Series/DataFrame (en C/NumPy) sont nettement plus rapides que les boucles for ou qu'un .apply() ligne par ligne.
  • Type category pour des chaînes très répétitives (faible cardinalité) : économie mémoire et accélération.
  • Chaînage de méthodes (df.method1().method2()) : lisibilité d'une séquence d'opérations.
  • Affectation avec .loc[] (ou .iloc) : évite le SettingWithCopyWarning et garantit que le DataFrame original est modifié. Une affectation après un filtrage par simples crochets peut ne porter que sur une « vue » temporaire.

Équivalent Python pur : une compréhension de liste vaut mieux qu'une boucle avec append quand elle reste lisible ; on enchaîne les étapes en passant le résultat de l'une à la suivante.

Vérifie que tu as compris

Pourquoi utiliser df.loc[masque, 'col'] = v plutôt que df[masque]['col'] = v ?

Vérifie que tu as compris

Pour quelle colonne le type category est-il le plus intéressant ?