Kompliceret Gruppering
Det hænder nogle gange, at de indbyggede pandas-funktioner, såsom .mean() eller .min(), ikke er tilstrækkelige ved 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()– hjælper med at anvende en specifik funktion på de ønskede kolonner;- i
lambda-funktionen erxargumentet, ogx['Length'].max()/60er udtrykket. Funktionen finder altså maksimumvæ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 unikke 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). - Indenfor
.groupby()-metoden anvendes.apply()-funktionen til at beregne summen af kolonnerne'Length'og'Time'for hver gruppe, og derefter findes minimum af denne sum. - Tildel resultatet til en variabel med navnet
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
Awesome!
Completion rate improved to 3.03
Kompliceret Gruppering
Stryg for at vise menuen
Det hænder nogle gange, at de indbyggede pandas-funktioner, såsom .mean() eller .min(), ikke er tilstrækkelige ved 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()– hjælper med at anvende en specifik funktion på de ønskede kolonner;- i
lambda-funktionen erxargumentet, ogx['Length'].max()/60er udtrykket. Funktionen finder altså maksimumvæ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 unikke 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). - Indenfor
.groupby()-metoden anvendes.apply()-funktionen til at beregne summen af kolonnerne'Length'og'Time'for hver gruppe, og derefter findes minimum af denne sum. - Tildel resultatet til en variabel med navnet
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