Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mehrere Funktionen effizient auf gruppierte DataFrame-Spalten in Pandas anwenden?
Im Gegensatz zum Series-Groupby-Objekt ist das Anwenden mehrerer Funktionen auf ein DataFrame-Groupby-Objekt mithilfe eines Wörterbuchs nicht einfach. Es gibt jedoch effiziente Möglichkeiten, dies mit den folgenden Methoden zu erreichen:
Verwendung der Apply-Methode
Wenn die gewünschten Funktionen auf einzelnen Spalten ausgeführt werden, ist die Nutzung der Apply-Methode sinnvoll eine passende Option. Mit der Apply-Methode können Sie eine Funktion übergeben, die eine ganze Gruppe (einen DataFrame) in ein anderes Objekt umwandelt. Zum Beispiel:
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(), }))
Dieser Ansatz aggregiert effizient mehrere Spalten und gibt einen DataFrame mit den gewünschten Spalten zurück.
Zurückgeben einer Serie von apply
Beim Umgang mit mehreren Spalten, die interagieren müssen, kann die agg-Methode nicht verwendet werden, da sie implizit eine Serie an die Aggregationsfunktion übergibt. Stattdessen kann eine benutzerdefinierte Funktion erstellt werden, die eine Serie zurückgibt. Zum Beispiel:
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)
Diese Methode ermöglicht die Anwendung mehrerer Funktionen auf mehrere gruppierte Spalten und die Rückgabe der Ergebnisse in einem einzigen Schritt.
Anpassen von Funktionsnamen
Auf Wunsch können den Funktionen mithilfe des Attributs __name__ benutzerdefinierte Namen zugewiesen werden. Setzen Sie einfach __name__ auf den gewünschten Namen, nachdem Sie die Funktion definiert haben, was die Klarheit der generierten Spalten verbessert.
Es ist erwähnenswert, dass die Verwendung von Schleifen zum Durchlaufen eines Groupby-Objekts im Allgemeinen im Vergleich zu den oben genannten Methoden weniger effizient ist. Pandas ist für vektorisierte Operationen optimiert, was diese integrierten Methoden zum bevorzugten Ansatz für eine effiziente Analyse auf Gruppenebene macht.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Funktionen effizient auf gruppierte DataFrame-Spalten in Pandas anwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!