Data Analysis

Pandas GroupBy und Aggregation meistern: Ein umfassender Leitfaden

Spread the love

Pandas ist eine leistungsstarke Python-Bibliothek zur Datenmanipulation und -analyse. Eine der am häufigsten verwendeten Funktionen ist die Möglichkeit, Daten zu gruppieren und aggregierte Berechnungen durchzuführen. Dieser Artikel untersucht verschiedene Methoden zur effizienten Berechnung aggregierter Summen nach dem Gruppieren von Daten mit der groupby()-Methode und bietet Lösungen für verschiedene Komplexitätsstufen und gewünschte Ausgabeformate.

Inhaltsverzeichnis:

Grundlegende Summierung mit groupby()

Die einfachste Möglichkeit, die Summe einer Spalte nach der Gruppierung zu berechnen, ist die direkte Verwendung von groupby() mit der sum()-Methode:


import pandas as pd

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

# Gruppieren nach 'Group' und Summe von 'Value'
grouped_sum = df.groupby('Group')['Value'].sum()
print(grouped_sum)

Dies erzeugt prägnant eine Series mit der Summe von ‚Value‘ für jede Gruppe.

Mehrere Aggregationen mit agg()

Die agg()-Methode ermöglicht die effiziente Berechnung mehrerer aggregierter Statistiken gleichzeitig. Dies ist besonders nützlich, wenn mehr als nur die Summe benötigt wird:


import pandas as pd

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

# Berechne die Summe, den Mittelwert und die Anzahl für jede Gruppe
aggregated = df.groupby('Group')['Value'].agg(['sum', 'mean', 'count'])
print(aggregated)

Diese einzelne Codezeile berechnet die Summe, den Mittelwert und die Anzahl von ‚Value‘ für jede Gruppe, was zu einem DataFrame führt.

Benutzerdefinierte Aggregation mit apply()

Für komplexere Szenarien, die eine benutzerdefinierte Aggregationslogik erfordern, bietet die apply()-Methode maximale Flexibilität. Sie können eine Funktion definieren, um beliebige Berechnungen durchzuführen:


import pandas as pd
import numpy as np

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

def custom_agg(x):
    return pd.Series({'sum': x.sum(), 'range': x.max() - x.min()})

# Anwendung der benutzerdefinierten Aggregationsfunktion
result = df.groupby('Group')['Value'].apply(custom_agg).reset_index()
print(result)

Hier berechnet eine benutzerdefinierte Funktion sowohl die Summe als auch die Spannweite für jede Gruppe.

Kumulative Summen mit groupby() und cumsum()

Um kumulative Summen innerhalb jeder Gruppe zu erhalten, kombinieren Sie groupby() mit der cumsum()-Methode:


import pandas as pd

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

# Berechne die kumulative Summe für jede Gruppe
df['Cumulative Sum'] = df.groupby('Group')['Value'].cumsum()
print(df)

Dies fügt eine neue Spalte hinzu, die die laufende Summe innerhalb jeder Gruppe anzeigt.

Daten umformen mit pivot_table()

Für eine optisch ansprechendere und leichter analysierbare Darstellung aggregierter Daten, insbesondere bei mehreren Gruppierungsvariablen, verwenden Sie pivot_table():


import pandas as pd

data = {'Group': ['A', 'A', 'B', 'B', 'B', 'A'],
        'Category': ['X', 'Y', 'X', 'Y', 'Z', 'X'],
        'Value': [10, 20, 15, 5, 25, 30]}
df = pd.DataFrame(data)

pivot_table = pd.pivot_table(df, values='Value', index='Group', columns='Category', aggfunc='sum', fill_value=0)
print(pivot_table)

Dies erstellt eine Pivot-Tabelle, die die Daten zusammenfasst und den Vergleich von Summen über verschiedene Kategorien innerhalb jeder Gruppe erleichtert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert