Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Komplizierte Gruppierung | Datenaggregation
Fortgeschrittene Techniken in Pandas

bookKomplizierte Gruppierung

Es kommt manchmal vor, dass die integrierten pandas-Funktionen wie .mean() oder .min() beim Gruppieren nicht ausreichen.

Betrachten Sie die Spalte 'Length'; hier ist die Flugdauer in Minuten angegeben. Angenommen, wir möchten die maximale Zeit in Stunden für Einträge mit demselben Wert in der Spalte 'Flight' und anschließend in der Spalte 'Airline' berechnen. Dazu können wir den Maximalwert der Spalte 'Length' für jeden Gruppenschlüssel berechnen und anschließend durch 60 teilen. Sehen Sie sich das folgende Beispiel und die Erklärung dazu an.

1234
import pandas as pd data = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/4bf24830-59ba-4418-969b-aaf8117d522e/plane', index_col = 0) data_flights = data[['Flight', 'Airline', 'Length']].groupby(['Flight', 'Airline']).apply(lambda x: x['Length'].max()/60) print(data_flights.head(10))
copy

Erläuterung:

Wir haben das Beispiel aus den vorherigen Kapiteln etwas komplexer gestaltet. Beim Gruppieren der Daten bleibt alles gleich; wenden wir uns nun der Methode .apply() zu.

.apply(lambda x: x['Length'].max()/60)
  • .apply() – ermöglicht das Anwenden einer bestimmten Funktion auf die gewünschten Spalten;
  • in der lambda-Funktion ist x das Argument und x['Length'].max()/60 der Ausdruck. Die Funktion ermittelt also den maximalen Wert für jeden Gruppenschlüssel und teilt den aggregierten Wert durch 60.
Aufgabe

Swipe to start coding

Ihre Aufgabe hier besteht darin, Flugdauern unter Berücksichtigung von Flughafen, Fluggesellschaft und Wochentag zu analysieren. Sie gruppieren die Daten, um die minimale gesamte Flugzeit (die Summe aus 'Length' und 'Time') für jede eindeutige Kombination aus Abflughafen, Fluggesellschaft und Wochentag zu bestimmen.

Folgen Sie dem Algorithmus Schritt für Schritt:

  1. Speichern Sie die Liste der Spalten 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' und 'Length' (in dieser Reihenfolge) in der Variablen columns.
  2. Extrahieren Sie diese Spalten aus data mit der Klammernotation (data[columns]).
  3. Gruppieren Sie den Datensatz nach 'AirportFrom', 'Airline' und 'DayOfWeek' (in genau dieser Reihenfolge).
  4. Wenden Sie innerhalb der .groupby()-Methode die Funktion .apply() an, um die Summe der Spalten 'Length' und 'Time' für jede Gruppe zu berechnen, und ermitteln Sie anschließend das Minimum dieser Summe.
  5. Weisen Sie das Ergebnis einer Variablen namens data_flights zu.
  6. Geben Sie die ersten 10 Zeilen der resultierenden Series mit .head(10) aus.

Lösung

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 3
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

Can you explain what the output of this code will look like?

How does the `.apply()` method differ from using `.agg()` in this context?

Can you show how to reset the index of the resulting DataFrame?

close

Awesome!

Completion rate improved to 3.03

bookKomplizierte Gruppierung

Swipe um das Menü anzuzeigen

Es kommt manchmal vor, dass die integrierten pandas-Funktionen wie .mean() oder .min() beim Gruppieren nicht ausreichen.

Betrachten Sie die Spalte 'Length'; hier ist die Flugdauer in Minuten angegeben. Angenommen, wir möchten die maximale Zeit in Stunden für Einträge mit demselben Wert in der Spalte 'Flight' und anschließend in der Spalte 'Airline' berechnen. Dazu können wir den Maximalwert der Spalte 'Length' für jeden Gruppenschlüssel berechnen und anschließend durch 60 teilen. Sehen Sie sich das folgende Beispiel und die Erklärung dazu an.

1234
import pandas as pd data = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/4bf24830-59ba-4418-969b-aaf8117d522e/plane', index_col = 0) data_flights = data[['Flight', 'Airline', 'Length']].groupby(['Flight', 'Airline']).apply(lambda x: x['Length'].max()/60) print(data_flights.head(10))
copy

Erläuterung:

Wir haben das Beispiel aus den vorherigen Kapiteln etwas komplexer gestaltet. Beim Gruppieren der Daten bleibt alles gleich; wenden wir uns nun der Methode .apply() zu.

.apply(lambda x: x['Length'].max()/60)
  • .apply() – ermöglicht das Anwenden einer bestimmten Funktion auf die gewünschten Spalten;
  • in der lambda-Funktion ist x das Argument und x['Length'].max()/60 der Ausdruck. Die Funktion ermittelt also den maximalen Wert für jeden Gruppenschlüssel und teilt den aggregierten Wert durch 60.
Aufgabe

Swipe to start coding

Ihre Aufgabe hier besteht darin, Flugdauern unter Berücksichtigung von Flughafen, Fluggesellschaft und Wochentag zu analysieren. Sie gruppieren die Daten, um die minimale gesamte Flugzeit (die Summe aus 'Length' und 'Time') für jede eindeutige Kombination aus Abflughafen, Fluggesellschaft und Wochentag zu bestimmen.

Folgen Sie dem Algorithmus Schritt für Schritt:

  1. Speichern Sie die Liste der Spalten 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' und 'Length' (in dieser Reihenfolge) in der Variablen columns.
  2. Extrahieren Sie diese Spalten aus data mit der Klammernotation (data[columns]).
  3. Gruppieren Sie den Datensatz nach 'AirportFrom', 'Airline' und 'DayOfWeek' (in genau dieser Reihenfolge).
  4. Wenden Sie innerhalb der .groupby()-Methode die Funktion .apply() an, um die Summe der Spalten 'Length' und 'Time' für jede Gruppe zu berechnen, und ermitteln Sie anschließend das Minimum dieser Summe.
  5. Weisen Sie das Ergebnis einer Variablen namens data_flights zu.
  6. Geben Sie die ersten 10 Zeilen der resultierenden Series mit .head(10) aus.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 3
single

single

some-alt