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 · Agrégation

Agréger avec groupby, agg et pivot

Produire une analyse, c'est résumer : un indicateur par groupe. groupby regroupe les lignes selon les valeurs d'une ou plusieurs colonnes, puis on applique une agrégation : df.groupby('Région')['Ventes'].sum().

FonctionCalcule
.sum(), .mean()somme, moyenne par groupe
.count()nombre d'observations non nulles
.size()nombre de lignes du groupe (nulls compris)
.min() / .max()valeurs extrêmes du groupe
.agg(['mean','median','std'])plusieurs statistiques à la fois, une colonne par fonction

Grouper par plusieurs colonnes produit un index à plusieurs niveaux (une ligne par couple de valeurs). pd.pivot_table(values, index, columns, aggfunc) restructure en tableau croisé : les valeurs d'une colonne deviennent des colonnes.

Python pur

from collections import defaultdict
groupes = defaultdict(list)
for l in ventes: groupes[l["categorie"]].append(l["valeur"])
{k: sum(v) for k, v in groupes.items()}      # groupby(...).sum()
{k: len(v) for k, v in groupes.items()}      # groupby(...).size()

Vérifie que tu as compris

Quelle est la différence entre .count() et .size() ?

Vérifie que tu as compris

Que produit groupby(['Catégorie', 'Compte'])['Valeur'].max() ?

À toi de coder

groupby en Python pur

Reproduis trois agrégations sur ventes : la somme de valeur par catégorie, le nombre de lignes par catégorie (size) et le maximum par couple (catégorie, compte).

Ctrl/⌘+Entrée

À toi de coder

Plusieurs statistiques à la fois (agg)

.agg(['mean', 'median', 'min', 'max']) calcule plusieurs statistiques par groupe. Construis resume : pour chaque catégorie, un dictionnaire avec moyenne, mediane, min, max de valeur.

Ctrl/⌘+Entrée

Pivot : un tableau croisé

Un pivot met une variable en lignes, une autre en colonnes, et agrège à leur croisement. Pour ventes : catégories en lignes, comptes en colonnes, somme des valeurs.

c1c2
A4020
B20—

La case (B, c2) est vide : aucune observation. pandas y met NaN (ou une valeur de fill_value).

Vérifie que tu as compris

Dans pivot_table, que désigne le paramètre columns ?