Komplizierte 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.
1234import 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))
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 istx
das Argument undx['Length'].max()/60
der Ausdruck. Die Funktion ermittelt also den maximalen Wert für jeden Gruppenschlüssel und teilt den aggregierten Wert durch60
.
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:
- Speichern Sie die Liste der Spalten
'AirportFrom'
,'Airline'
,'DayOfWeek'
,'Time'
und'Length'
(in dieser Reihenfolge) in der Variablencolumns
. - Extrahieren Sie diese Spalten aus
data
mit der Klammernotation (data[columns]
). - Gruppieren Sie den Datensatz nach
'AirportFrom'
,'Airline'
und'DayOfWeek'
(in genau dieser Reihenfolge). - 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. - Weisen Sie das Ergebnis einer Variablen namens
data_flights
zu. - Geben Sie die ersten 10 Zeilen der resultierenden Series mit
.head(10)
aus.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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?
Awesome!
Completion rate improved to 3.03
Komplizierte 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.
1234import 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))
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 istx
das Argument undx['Length'].max()/60
der Ausdruck. Die Funktion ermittelt also den maximalen Wert für jeden Gruppenschlüssel und teilt den aggregierten Wert durch60
.
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:
- Speichern Sie die Liste der Spalten
'AirportFrom'
,'Airline'
,'DayOfWeek'
,'Time'
und'Length'
(in dieser Reihenfolge) in der Variablencolumns
. - Extrahieren Sie diese Spalten aus
data
mit der Klammernotation (data[columns]
). - Gruppieren Sie den Datensatz nach
'AirportFrom'
,'Airline'
und'DayOfWeek'
(in genau dieser Reihenfolge). - 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. - Weisen Sie das Ergebnis einer Variablen namens
data_flights
zu. - Geben Sie die ersten 10 Zeilen der resultierenden Series mit
.head(10)
aus.
Lösung
Danke für Ihr Feedback!
single