Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mehrere Funktionen effizient auf gruppierte DataFrame-Spalten in Pandas anwenden?

Wie kann ich mehrere Funktionen effizient auf gruppierte DataFrame-Spalten in Pandas anwenden?

DDD
DDDOriginal
2024-12-16 15:47:14365Durchsuche

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

Effizientes Anwenden mehrerer Funktionen auf gruppierte Spalten

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn