Comment appliquer plusieurs fonctions à plusieurs colonnes groupées
Les opérations Groupby dans Pandas permettent l'agrégation de données en fonction de colonnes ou de clés spécifiques. Cependant, lorsque vous travaillez avec des ensembles de données complexes, il peut être nécessaire d'effectuer plusieurs opérations sur différentes colonnes au sein des données groupées.
Utilisation d'un dictionnaire pour les regroupements de séries
Pour un objet groupby Series, vous pouvez utiliser un dictionnaire pour spécifier plusieurs fonctions et noms de colonnes de sortie, comme indiqué ci-dessous :
grouped['D'].agg({'result1' : np.sum, .....: 'result2' : np.mean})
Cette approche, cependant, ne fonctionne pas pour les objets groupby DataFrame, car il s'attend à ce que les clés du dictionnaire représentent les noms de colonnes pour l'application des fonctions.
Fonctions personnalisées avec Apply
Pour résoudre cette limitation, vous peut exploiter la méthode apply, qui transmet implicitement un DataFrame à la fonction appliquée. En définissant une fonction personnalisée et en renvoyant une série ou une série MultiIndex, vous pouvez effectuer plusieurs opérations sur plusieurs colonnes au sein de chaque groupe :
Renvoyer une série :
def f(x): d = {} d['a_sum'] = x['a'].sum() d['a_max'] = x['a'].max() d['b_mean'] = x['b'].mean() d['c_d_prodsum'] = (x['c'] * x['d']).sum() return pd.Series(d, index=['a_sum', 'a_max', 'b_mean', 'c_d_prodsum']) df.groupby('group').apply(f)
Renvoyer une série avec MultiIndex :
def f_mi(x): d = [] d.append(x['a'].sum()) d.append(x['a'].max()) d.append(x['b'].mean()) d.append((x['c'] * x['d']).sum()) return pd.Series(d, index=[['a', 'a', 'b', 'c_d'], ['sum', 'max', 'mean', 'prodsum']]) df.groupby('group').apply(f_mi)
Cette approche offre un moyen flexible d'effectuer des agrégations sur des données groupées, permettant de multiples opérations sur plusieurs colonnes au sein de chaque 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!