Maison >développement back-end >Tutoriel Python >Comment puis-je appliquer efficacement plusieurs fonctions aux colonnes DataFrame groupées dans Pandas ?

Comment puis-je appliquer efficacement plusieurs fonctions aux colonnes DataFrame groupées dans Pandas ?

DDD
DDDoriginal
2024-12-16 15:47:14357parcourir

How Can I Efficiently Apply Multiple Functions to Grouped DataFrame Columns in Pandas?

Application efficace de plusieurs fonctions à des colonnes groupées

Contrairement à l'objet groupby Series, l'application de plusieurs fonctions à un objet groupby DataFrame à l'aide d'un dictionnaire n'est pas simple. Cependant, il existe des moyens efficaces d'y parvenir en utilisant les méthodes suivantes :

Utilisation de la méthode apply

Si les fonctions souhaitées fonctionnent sur des colonnes individuelles, il est préférable d'exploiter la méthode apply. une option appropriée. La méthode apply permet de passer une fonction qui transforme un groupe entier (un DataFrame) en un autre objet. Par exemple :

grouped = df.groupby('group')
aggregated = grouped.apply(lambda x: pd.Series({
    'a_sum': x['a'].sum(),
    'a_max': x['a'].max(),
    'b_mean': x['b'].mean(),
}))

Cette approche agrège efficacement plusieurs colonnes et renvoie un DataFrame avec les colonnes souhaitées.

Renvoi d'une série depuis apply

Lorsqu'il s'agit de plusieurs colonnes qui doivent interagir, la méthode agg ne peut pas être utilisée car elle transmet implicitement une série à la fonction d'agrégation. Au lieu de cela, une fonction personnalisée peut être créée qui renvoie une série. Par exemple :

def aggregate_group(x):
    return pd.Series({
        'a_sum': x['a'].sum(),
        'b_mean': x['b'].mean(),
        'c_d_prod': (x['c'] * x['d']).sum()
    })

grouped = df.groupby('group')
result = grouped.apply(aggregate_group)

Cette méthode permet d'appliquer plusieurs fonctions à plusieurs colonnes groupées et de renvoyer les résultats en une seule étape.

Personnalisation des noms de fonctions

Si vous le souhaitez, des noms personnalisés peuvent être attribués aux fonctions à l'aide de l'attribut __name__. Définissez simplement __name__ sur le nom souhaité après avoir défini la fonction, ce qui améliorera la clarté des colonnes générées.

Il convient de noter que l'utilisation de boucles pour parcourir un objet groupby est généralement moins efficace que les méthodes ci-dessus. Pandas est optimisé pour les opérations vectorisées, ce qui fait de ces méthodes intégrées l'approche privilégiée pour une analyse efficace au niveau du groupe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn