GroupBy et agrégation
df.groupby(), agg(), transform(), apply() et agrégations nommées avec Named Aggregation.
GroupBy et agrégation est une leçon Learn AI with Python gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn AI with Python, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn AI with Python comprend 4 leçons au total.
Le principe diviser-appliquer-combiner
GroupBy suit le modèle diviser-appliquer-combiner : diviser les lignes en groupes selon une clé, appliquer une fonction à chaque groupe, puis combiner les résultats dans un seul tableau. C’est la base de la plupart des synthèses analytiques.
import pandas as pd
df = pd.DataFrame({
"dept": ["A", "A", "B", "B", "B"],
"salary": [50, 70, 40, 60, 80],
})groupby de base
df.groupby("col") crée un objet groupé. En enchaînant une agrégation comme .mean(), vous calculez une valeur par groupe.
print(df.groupby("dept")["salary"].mean())
# dept
# A 60.0
# B 60.0Agrégations multiples
Appelez plusieurs réductions à la fois avec .agg([...]) pour produire une colonne par fonction.
print(df.groupby("dept")["salary"].agg(["mean", "min", "max", "count"]))Dictionnaire d’agrégation par colonne
Transmettez un dictionnaire à .agg pour appliquer des fonctions différentes à différentes colonnes.
df["bonus"] = [5, 7, 4, 6, 8]
out = df.groupby("dept").agg({"salary": "mean", "bonus": "sum"})
print(out)Agrégation nommée
L’agrégation nommée donne des noms clairs aux colonnes de sortie en utilisant la syntaxe pd.NamedAgg. Elle évite les en-têtes de colonnes multiniveaux difficiles à interpréter.
out = df.groupby("dept").agg(
avg_salary=("salary", "mean"),
total_bonus=("bonus", "sum"),
)
print(out)Regroupement selon plusieurs clés
Transmettez une liste de colonnes pour regrouper selon plusieurs clés à la fois, ce qui produit un résultat hiérarchique (MultiIndex).
df["level"] = ["jr", "sr", "jr", "sr", "sr"]
print(df.groupby(["dept", "level"])["salary"].mean())transform : même forme en sortie
.transform() renvoie un résultat aligné sur les lignes d’origine (ORIGINAL), et non une ligne par groupe. C’est idéal pour ajouter une statistique de groupe comme nouvelle colonne.
df["dept_avg"] = df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "dept_avg"]])transform pour la normalisation
Comme transform diffuse le résultat sur chaque ligne, vous pouvez normaliser les valeurs au sein des groupes, par exemple en soustrayant la moyenne du groupe.
df["centered"] = df["salary"] - df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "centered"]])apply pour une logique personnalisée
.apply() transmet chaque groupe (sous la forme d’un sous-DataFrame) à votre fonction. Utilisez-le pour une logique que les agrégations intégrées ne peuvent pas exprimer, comme renvoyer les N premières lignes de chaque groupe.
top = df.groupby("dept").apply(lambda g: g.nlargest(1, "salary"))
print(top[["dept", "salary"]])agg, transform ou apply
agg réduit chaque groupe à une seule valeur. transform renvoie une valeur par ligne d’origine. apply est la solution flexible (mais plus lente) pour les cas généraux. Choisissez la fonction la plus spécifique pour gagner en clarté et en rapidité.
Dégroupement avec reset_index
Les résultats de GroupBy placent les clés dans l’index. Appelez .reset_index() pour les reconvertir en colonnes ordinaires, comme l’attend la plupart du code utilisé ensuite.
flat = df.groupby("dept")["salary"].mean().reset_index()
print(flat)
# dept salary
# 0 A 60.0
# 1 B 60.0Vérification rapide
Testez votre compréhension de groupby.
Récapitulatif
Principes essentiels de GroupBy :
- Diviser-appliquer-combiner avec
df.groupby("col") .agg([...])et les agrégations par dictionnaire ou nommées pour plusieurs statistiques.transform()renvoie des résultats de la forme d’origine.apply()pour une logique arbitraire par groupe- Utilisez toujours
.reset_index()pour rétablir les clés de groupe sous forme de colonnes
Questions Fréquemment Posées
La leçon « GroupBy et agrégation » est-elle gratuite ?
Oui — le texte complet de « GroupBy et agrégation » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn AI with Python, passe à CoddyKit PRO. Le cours Learn AI with Python comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « GroupBy et agrégation » ?
df.groupby(), agg(), transform(), apply() et agrégations nommées avec Named Aggregation. Tu pratiques Learn AI with Python avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Learn AI with Python ?
Aucune expérience préalable n'est requise. Learn AI with Python sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « GroupBy et agrégation » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Learn AI with Python ?
Oui. Chaque leçon Learn AI with Python inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- GroupBy et agrégation
- Tableaux croisés dynamiques et tableaux de contingence
- Fusion et jointure avancées
- Séries temporelles dans Pandas