Transformer les données après regroupement
Après un regroupement des données avec groupby(), vous pouvez appliquer des transformations pour modifier ou calculer de nouvelles valeurs sur chaque groupe. Cela peut inclure des opérations telles que l’ajout de nouvelles colonnes, l’application de calculs ou la mise à l’échelle des données de chaque groupe individuellement. Vous pouvez utiliser la méthode transform() pour appliquer une fonction à chaque groupe et renvoyer un objet de même forme que les données d’origine, permettant ainsi de conserver la structure du DataFrame.
Fonctions :
-
groupby('colonne').transform(lambda x: …)
La méthode transform() permet de transformer les données d'un DataFrame après un regroupement. Elle applique une fonction à chaque groupe créé par groupby(), tout en maintenant la structure du DataFrame d'origine. Cela permet de calculer de nouvelles valeurs ou de modifier les valeurs existantes en fonction de groupes définis. Contrairement à agg() qui retourne une série ou un DataFrame agrégé, transform() conserve la même forme que les données d'origine, mais avec des valeurs modifiées ou calculées.
Importation :
import pandas as pd
Attributs :
Paramètre Type Description Valeur par défaut groupby()
function Méthode pour regrouper les données par une ou plusieurs colonnes. None
transform()
function Applique une fonction de transformation à chaque groupe tout en maintenant la structure du DataFrame d'origine. None
Exemple de code :
import pandas as pd # Exemple de DataFrame data = { 'nom': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'], 'ville': ['Paris', 'Lyon', 'Paris', 'Lyon', 'Paris'], 'score': [88, 92, 75, 85, 95] } df = pd.DataFrame(data) # Regrouper par 'ville' et transformer les scores pour qu'ils soient normalisés par ville grouped = df.groupby('ville') # Appliquer une transformation pour centrer les scores par ville (soustraction de la moyenne) df['score_normalized'] = grouped['score'].transform(lambda x: x - x.mean()) print("DataFrame avec les scores normalisés :") print(df)
Explication du code :
- DataFrame : Le DataFrame contient les colonnes
nom
,ville
, etscore
, avec des informations sur des personnes, leur ville et leur score. - Regroupement par
ville
: La méthodegroupby('ville')
regroupe les données en fonction de la colonneville
. - Transformation avec
transform()
: Après le regroupement, la méthodetransform(lambda x: x - x.mean())
applique une transformation à chaque groupe de ville. Ici, pour chaque ville, la transformation consiste à soustraire la moyenne des scores de chaque individu, ce qui permet de centrer les scores autour de la moyenne de chaque groupe (par ville).
Remarque :
- Utilisation de
transform()
avec des fonctions personnalisées : Vous pouvez appliquer une variété de fonctions à vos groupes, comme la normalisation, le calcul de scores, ou toute autre transformation nécessaire.
- DataFrame : Le DataFrame contient les colonnes