Kursinhalt
Fortgeschrittene Techniken in Pandas
Fortgeschrittene Techniken in Pandas
Komplizierte Gruppierung
Es kommt manchmal vor, dass wir mit den eingebauten pandas-Funktionen wie .mean()
oder .min()
beim Gruppieren nicht zufrieden sind.
Schauen Sie sich die Spalte 'Length'
an; hier haben wir die Fluglänge in Minuten. Stellen Sie sich vor, wir möchten die maximale Zeit in Stunden für Elemente berechnen, die denselben Wert in der Spalte 'Flight'
und dann in der Spalte 'Airline'
haben. Dazu können wir den Maximalwert der Spalte 'Length'
für jeden Gruppenschlüssel berechnen und dann durch 60
teilen. Schauen Sie sich das Beispiel und die Erklärung unten an.
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))
Erklärung:
Wir haben das Beispiel aus den vorherigen Kapiteln etwas komplizierter gemacht, sodass beim Gruppieren der Daten alles gleich bleibt; wenden wir uns der .apply()
-Methode zu.
.apply()
- es hilft, eine spezifische Funktion auf die benötigten Spalten anzuwenden;- in der
lambda
-Funktion istx
das Argument undx['Length'].max()/60
der Ausdruck. Die Funktion findet den maximalen Wert für jeden Gruppenschlüssel und teilt den aggregierten Wert durch60
.
Swipe to start coding
Ihre Aufgabe besteht darin, Daten nach dem Flughafen, von dem der Flug gestartet ist, und dann nach dem Wochentag zu gruppieren. Berechnen Sie die minimale Zeitdauer der Summe der Spalten 'Length'
und 'Time'
der Gruppen, um herauszufinden, wie lange der Flug mit Verspätung dauern kann. Befolgen Sie den Algorithmus, um die Aufgabe zu bewältigen:
Daten gruppieren:
- Speichern Sie die Liste der Spalten
'AirportFrom'
,'Airline'
,'Time'
und'Length'
(in dieser Reihenfolge) in der Variablencolumns
; - Extrahieren Sie
columns
ausdata
; - Die Reihenfolge ist entscheidend innerhalb der
.groupby()
-Methode; setzen Sie die Spalten'AirportFrom'
und'Airline'
in dieser Reihenfolge; - Wenden Sie die Funktion auf die Werte des Datensatzes mit denselben Gruppenschlüsseln an;
- Berechnen Sie die Summe von zwei Spalten:
'Length'
und'Time'
. Finden Sie dann deren Minimum.
Lösung
Danke für Ihr Feedback!
Komplizierte Gruppierung
Es kommt manchmal vor, dass wir mit den eingebauten pandas-Funktionen wie .mean()
oder .min()
beim Gruppieren nicht zufrieden sind.
Schauen Sie sich die Spalte 'Length'
an; hier haben wir die Fluglänge in Minuten. Stellen Sie sich vor, wir möchten die maximale Zeit in Stunden für Elemente berechnen, die denselben Wert in der Spalte 'Flight'
und dann in der Spalte 'Airline'
haben. Dazu können wir den Maximalwert der Spalte 'Length'
für jeden Gruppenschlüssel berechnen und dann durch 60
teilen. Schauen Sie sich das Beispiel und die Erklärung unten an.
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))
Erklärung:
Wir haben das Beispiel aus den vorherigen Kapiteln etwas komplizierter gemacht, sodass beim Gruppieren der Daten alles gleich bleibt; wenden wir uns der .apply()
-Methode zu.
.apply()
- es hilft, eine spezifische Funktion auf die benötigten Spalten anzuwenden;- in der
lambda
-Funktion istx
das Argument undx['Length'].max()/60
der Ausdruck. Die Funktion findet den maximalen Wert für jeden Gruppenschlüssel und teilt den aggregierten Wert durch60
.
Swipe to start coding
Ihre Aufgabe besteht darin, Daten nach dem Flughafen, von dem der Flug gestartet ist, und dann nach dem Wochentag zu gruppieren. Berechnen Sie die minimale Zeitdauer der Summe der Spalten 'Length'
und 'Time'
der Gruppen, um herauszufinden, wie lange der Flug mit Verspätung dauern kann. Befolgen Sie den Algorithmus, um die Aufgabe zu bewältigen:
Daten gruppieren:
- Speichern Sie die Liste der Spalten
'AirportFrom'
,'Airline'
,'Time'
und'Length'
(in dieser Reihenfolge) in der Variablencolumns
; - Extrahieren Sie
columns
ausdata
; - Die Reihenfolge ist entscheidend innerhalb der
.groupby()
-Methode; setzen Sie die Spalten'AirportFrom'
und'Airline'
in dieser Reihenfolge; - Wenden Sie die Funktion auf die Werte des Datensatzes mit denselben Gruppenschlüsseln an;
- Berechnen Sie die Summe von zwei Spalten:
'Length'
und'Time'
. Finden Sie dann deren Minimum.
Lösung
Danke für Ihr Feedback!