OUJOOD.COM
Agrégations de base sur une colonne
Les méthodes d'agrégation s'appliquent directement sur une Series (colonne) ou sur un DataFrame entier. Chaque méthode retourne une valeur scalaire quand appliquée à une colonne, ou une Series quand appliquée à un DataFrame.
import pandas as pd
data = {
"produit": ["Clavier", "Souris", "Écran", "Casque", "Webcam"],
"prix": [45.90, 22.50, 189.00, 79.99, 54.90],
"stock": [120, 85, 34, 67, 48],
"ventes": [142, 310, 45, 98, 201]
}
df = pd.DataFrame(data)
# Agrégations sur une seule colonne
print("Somme des ventes :", df["ventes"].sum())
print("Prix moyen :", df["prix"].mean().round(2))
print("Stock minimum :", df["stock"].min())
print("Prix maximum :", df["prix"].max())
print("Nombre de produits :", df["produit"].count())
print("Médiane des ventes :", df["ventes"].median())
# Somme sur toutes les colonnes numériques
print(df[["prix", "stock", "ventes"]].sum())
count() compte les valeurs non-NaN, pas le nombre total de lignes. Si vous voulez le nombre total de lignes quelle que soit la présence de NaN, utilisez len(df) ou df.shape[0]. Cette distinction devient importante sur des données avec des valeurs manquantes.
Agrégations sur un DataFrame complet
Appliquer une méthode d'agrégation directement sur un DataFrame retourne une Series avec le résultat pour chaque colonne numérique.
import pandas as pd
data = {
"prix": [45.90, 22.50, 189.00, 79.99, 54.90],
"stock": [120, 85, 34, 67, 48],
"ventes": [142, 310, 45, 98, 201]
}
df = pd.DataFrame(data)
# Somme de toutes les colonnes numériques
print(df.sum())
# Moyenne de toutes les colonnes numériques
print(df.mean().round(2))
# Agrégation sur les lignes (axis=1) — somme par ligne
df["total"] = df[["stock", "ventes"]].sum(axis=1)
print(df)
axis=1 applique l'agrégation sur les colonnes de chaque ligne plutôt que sur les lignes de chaque colonne. Ici, sum(axis=1) additionne le stock et les ventes pour chaque produit. C'est utile quand vous voulez calculer un total ou une moyenne sur plusieurs colonnes pour chaque enregistrement.
agg() : plusieurs fonctions en une passe
agg() permet d'appliquer plusieurs fonctions d'agrégation en même temps sur une ou plusieurs colonnes. C'est plus compact que d'enchaîner les appels individuels.
import pandas as pd
data = {
"produit": ["Clavier", "Souris", "Écran", "Casque", "Webcam"],
"prix": [45.90, 22.50, 189.00, 79.99, 54.90],
"ventes": [142, 310, 45, 98, 201]
}
df = pd.DataFrame(data)
# Plusieurs fonctions sur une colonne
print(df["prix"].agg(["min", "max", "mean", "std"]))
# Plusieurs fonctions sur plusieurs colonnes
print(df[["prix", "ventes"]].agg(["sum", "mean", "max"]))
Quand vous passez une liste à agg(), le résultat est un DataFrame avec les fonctions en index et les colonnes sources en colonnes. C'est la façon la plus rapide d'obtenir un tableau de synthèse multi-statistiques sans écrire plusieurs lignes.
Fonctions personnalisées avec apply()
Quand les fonctions standard ne suffisent pas, apply() permet d'appliquer n'importe quelle fonction Python à chaque élément ou à chaque colonne d'un DataFrame.
import pandas as pd
data = {
"produit": ["Clavier", "Souris", "Écran", "Casque"],
"prix": [45.90, 22.50, 189.00, 79.99],
"ventes": [142, 310, 45, 98]
}
df = pd.DataFrame(data)
# Appliquer une lambda sur chaque valeur d'une colonne
df["prix_ttc"] = df["prix"].apply(lambda x: round(x * 1.20, 2))
# Classer les ventes en catégories
def categorie_ventes(n):
if n >= 200: return "fort"
elif n >= 100: return "moyen"
else: return "faible"
df["niveau"] = df["ventes"].apply(categorie_ventes)
print(df)
apply() est flexible mais plus lent que les méthodes vectorisées de Pandas comme sum() ou mean(). Sur de petits DataFrames, la différence est négligeable. Sur des millions de lignes, préférez les opérations vectorisées ou np.where() / pd.cut() pour les classifications conditionnelles.
Par carabde | Mis à jour le 26 avril 2026