Komplisert Gruppering
Det hender noen ganger at vi ikke er fornøyde med innebygde pandas-funksjoner, som .mean()
eller .min()
ved gruppering.
Se på kolonnen 'Length'
; her har vi flytid i minutter. Tenk deg at vi ønsker å beregne maksimal tid i timer for elementer med samme verdi i kolonnen 'Flight'
og deretter i 'Airline'
. For å gjøre dette kan vi beregne maksimumsverdien i kolonnen 'Length'
for hver gruppe-nøkkel og deretter dele den på 60
. Se eksempelet 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 eksempelet fra de forrige kapitlene litt mer komplisert, men når det gjelder datagruppering, er alt det samme; la oss se nærmere på .apply()
-metoden.
.apply(lambda x: x['Length'].max()/60)
.apply()
– brukes for å anvende en spesifikk funksjon på de nødvendige kolonnene;- i
lambda
-funksjonen erx
argumentet ogx['Length'].max()/60
uttrykket. Funksjonen finner altså maksimumsverdien for hver gruppe-nøkkel og deler den aggregerte verdien på60
.
Swipe to start coding
Din oppgave her er å gruppere data etter flyplassen hvor flyvningen startet, og deretter etter ukedag. Beregn minimumstiden av summen av gruppenes kolonner 'Length'
og 'Time'
for å finne ut hvor lang tid en flyvning med forsinkelse kan ta. Følg algoritmen for å løse oppgaven:
Grupper data:
- Lagre listen over kolonner
'AirportFrom'
,'Airline'
,'Time'
og'Length'
(i denne rekkefølgen) i variabelencolumns
; - Ekstraher
columns
fradata
; - Rekkefølgen er avgjørende i
.groupby()
-metoden; sett kolonnene'AirportFrom'
og'Airline'
i denne rekkefølgen; - Bruk funksjonen på verdiene i datasettet med samme gruppe-nøkler;
- Beregn summen av de to kolonnene:
'Length'
og'Time'
. Finn deretter minimumsverdien.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you explain what the output of this code will look like?
How does the `.apply()` method differ from using `.agg()` in this context?
Can you show how to reset the index of the resulting DataFrame?
Awesome!
Completion rate improved to 3.03
Komplisert Gruppering
Sveip for å vise menyen
Det hender noen ganger at vi ikke er fornøyde med innebygde pandas-funksjoner, som .mean()
eller .min()
ved gruppering.
Se på kolonnen 'Length'
; her har vi flytid i minutter. Tenk deg at vi ønsker å beregne maksimal tid i timer for elementer med samme verdi i kolonnen 'Flight'
og deretter i 'Airline'
. For å gjøre dette kan vi beregne maksimumsverdien i kolonnen 'Length'
for hver gruppe-nøkkel og deretter dele den på 60
. Se eksempelet 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 eksempelet fra de forrige kapitlene litt mer komplisert, men når det gjelder datagruppering, er alt det samme; la oss se nærmere på .apply()
-metoden.
.apply(lambda x: x['Length'].max()/60)
.apply()
– brukes for å anvende en spesifikk funksjon på de nødvendige kolonnene;- i
lambda
-funksjonen erx
argumentet ogx['Length'].max()/60
uttrykket. Funksjonen finner altså maksimumsverdien for hver gruppe-nøkkel og deler den aggregerte verdien på60
.
Swipe to start coding
Din oppgave her er å gruppere data etter flyplassen hvor flyvningen startet, og deretter etter ukedag. Beregn minimumstiden av summen av gruppenes kolonner 'Length'
og 'Time'
for å finne ut hvor lang tid en flyvning med forsinkelse kan ta. Følg algoritmen for å løse oppgaven:
Grupper data:
- Lagre listen over kolonner
'AirportFrom'
,'Airline'
,'Time'
og'Length'
(i denne rekkefølgen) i variabelencolumns
; - Ekstraher
columns
fradata
; - Rekkefølgen er avgjørende i
.groupby()
-metoden; sett kolonnene'AirportFrom'
og'Airline'
i denne rekkefølgen; - Bruk funksjonen på verdiene i datasettet med samme gruppe-nøkler;
- Beregn summen av de to kolonnene:
'Length'
og'Time'
. Finn deretter minimumsverdien.
Løsning
Takk for tilbakemeldingene dine!
single