single
Komplizierte Gruppierung
Swipe um das Menü anzuzeigen
Es kommt manchmal vor, dass wir mit den integrierten pandas-Funktionen wie .mean() oder .min() beim Gruppieren nicht zufrieden sind.
Betrachte die Spalte 'Length'; hier haben wir die Flugdauer in Minuten. 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. Sieh dir 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:
Das Beispiel aus den vorherigen Kapiteln wurde etwas komplizierter gestaltet, aber beim Gruppieren der Daten bleibt alles gleich; wir wenden 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 istxdas Argument undx['Length'].max()/60der Ausdruck. Die Funktion ermittelt also den Maximalwert für jeden Gruppenschlüssel und teilt den aggregierten Wert durch60.
Wischen, um mit dem Codieren zu beginnen
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
datamit der Klammernotation (data[columns]). - Gruppieren Sie den Datensatz nach
'AirportFrom','Airline'und'DayOfWeek'(in genau dieser Reihenfolge). - Wenden Sie innerhalb der
.groupby()-Methode die.apply()-Funktion an, um die Summe der Spalten'Length'und'Time'für jede Gruppe zu berechnen und anschließend das Minimum dieser Summe zu ermitteln. - Weisen Sie das Ergebnis einer Variablen namens
data_flightszu. - 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