single
Kompliceret Gruppering
Stryg for at vise menuen
Det sker nogle gange, at vi ikke er tilfredse med indbyggede pandas-funktioner som .mean() eller .min() under gruppering.
Se på kolonnen 'Length'; her har vi flyvetiden i minutter. Forestil dig, at vi ønsker at beregne den maksimale tid i timer for poster med samme værdi i kolonnen 'Flight' og derefter i 'Airline'. For at gøre dette kan vi beregne den maksimale værdi af kolonnen 'Length' for hver gruppe-nøgle og derefter dividere den med 60. Se eksemplet og forklaringen nedenfor.
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))
Forklaring:
Vi har gjort eksemplet fra de foregående kapitler lidt mere kompliceret, så med datagruppering er alt det samme; lad os nu se på .apply()-metoden.
.apply(lambda x: x['Length'].max()/60)
.apply()– bruges til at anvende en specifik funktion på de ønskede kolonner;- i
lambda-funktionen erxargumentet, ogx['Length'].max()/60er udtrykket. Funktionen finder altså maksimum-værdien for hver gruppe-nøgle og dividerer den aggregerede værdi med60.
Swipe to start coding
Din opgave her er at analysere flyvetider med hensyn til lufthavn, flyselskab og ugedag.
Du skal gruppere dataene for at bestemme den mindste samlede flyvetid (summen af 'Length' og 'Time') for hver unik kombination af afgangslufthavn, flyselskab og ugedag.
Følg algoritmen trin for trin:
- Gem listen af kolonner
'AirportFrom','Airline','DayOfWeek','Time'og'Length'(i denne rækkefølge) i variablencolumns. - Udtræk disse kolonner fra
dataved hjælp af bracket notation (data[columns]). - Gruppér datasættet efter
'AirportFrom','Airline'og'DayOfWeek'(i denne præcise rækkefølge). - Inden for
.groupby()-metoden anvendes.apply()-funktionen til at beregne summen af kolonnerne'Length'og'Time'for hver gruppe, og derefter findes minimumsværdien af denne sum. - Tildel resultatet til en variabel kaldet
data_flights. - Udskriv de første 10 rækker af den resulterende Series ved hjælp af
.head(10).
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat