Kompliceret Gruppering
Det hænder nogle gange, at vi ikke er tilfredse med de indbyggede pandas-funktioner, såsom .mean()
eller .min()
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 tidligere 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 erx
argumentet, ogx['Length'].max()/60
er 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 gruppere data efter den lufthavn, hvorfra flyet startede, og derefter efter ugedag. Beregn den minimale tid for summen af gruppernes kolonner 'Length'
og 'Time'
for at finde ud af, hvor lang tid en flyvning med forsinkelse kan tage. Følg algoritmen for at løse opgaven:
Gruppér data:
- Gem listen af kolonner
'AirportFrom'
,'Airline'
,'Time'
og'Length'
(i denne rækkefølge) i variablencolumns
; - Udtræk
columns
fradata
; - Rækkefølgen er afgørende i
.groupby()
-metoden; placer kolonnerne'AirportFrom'
og'Airline'
i denne rækkefølge; - Anvend funktionen på værdierne i datasættet med samme gruppe-nøgler;
- Beregn summen af de to kolonner:
'Length'
og'Time'
. Find derefter deres minimum.
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 vi ikke er tilfredse med de indbyggede pandas-funktioner, såsom .mean()
eller .min()
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 tidligere 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 erx
argumentet, ogx['Length'].max()/60
er 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 gruppere data efter den lufthavn, hvorfra flyet startede, og derefter efter ugedag. Beregn den minimale tid for summen af gruppernes kolonner 'Length'
og 'Time'
for at finde ud af, hvor lang tid en flyvning med forsinkelse kan tage. Følg algoritmen for at løse opgaven:
Gruppér data:
- Gem listen af kolonner
'AirportFrom'
,'Airline'
,'Time'
og'Length'
(i denne rækkefølge) i variablencolumns
; - Udtræk
columns
fradata
; - Rækkefølgen er afgørende i
.groupby()
-metoden; placer kolonnerne'AirportFrom'
og'Airline'
i denne rækkefølge; - Anvend funktionen på værdierne i datasættet med samme gruppe-nøgler;
- Beregn summen af de to kolonner:
'Length'
og'Time'
. Find derefter deres minimum.
Løsning
Tak for dine kommentarer!
single