Komplicerad Gruppering
Ibland händer det att vi inte är nöjda med inbyggda pandas-funktioner, såsom .mean()
eller .min()
vid gruppering.
Titta på kolumnen 'Length'
; här har vi flygtiden i minuter. Föreställ dig att vi vill beräkna den maximala tiden i timmar för poster med samma värde i kolumnen 'Flight'
och därefter i 'Airline'
. För att göra detta kan vi beräkna det maximala värdet i kolumnen 'Length'
för varje gruppnyckel och sedan dividera det med 60
. Se exemplet och förklaringen nedan.
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))
Förklaring:
Vi har gjort exemplet från de tidigare kapitlen lite mer komplicerat, så med datagruppning är allt detsamma; vi vänder oss till metoden .apply()
.
.apply(lambda x: x['Length'].max()/60)
.apply()
– används för att tillämpa en specifik funktion på önskade kolumner;- i
lambda
-funktionen ärx
argumentet ochx['Length'].max()/60
är uttrycket. Funktionen hittar alltså det högsta värdet för varje gruppnyckel och dividerar det aggregerade värdet med60
.
Swipe to start coding
Din uppgift här är att gruppera data efter flygplatsen där flyget startade och sedan efter veckodag. Beräkna den minsta tiden av summan av gruppernas kolumner 'Length'
och 'Time'
för att ta reda på hur lång tid ett försenat flyg kan ta. Följ algoritmen för att lösa uppgiften:
Gruppera data:
- Spara listan med kolumner
'AirportFrom'
,'Airline'
,'Time'
och'Length'
(i denna ordning) i variabelncolumns
; - Extrahera
columns
fråndata
; - Ordningen är avgörande i metoden
.groupby()
; placera kolumnerna'AirportFrom'
och'Airline'
i denna ordning; - Använd funktionen på värdena i datasetet med samma gruppnycklar;
- Beräkna summan av två kolumner:
'Length'
och'Time'
. Hitta sedan deras minsta värde.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Komplicerad Gruppering
Svep för att visa menyn
Ibland händer det att vi inte är nöjda med inbyggda pandas-funktioner, såsom .mean()
eller .min()
vid gruppering.
Titta på kolumnen 'Length'
; här har vi flygtiden i minuter. Föreställ dig att vi vill beräkna den maximala tiden i timmar för poster med samma värde i kolumnen 'Flight'
och därefter i 'Airline'
. För att göra detta kan vi beräkna det maximala värdet i kolumnen 'Length'
för varje gruppnyckel och sedan dividera det med 60
. Se exemplet och förklaringen nedan.
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))
Förklaring:
Vi har gjort exemplet från de tidigare kapitlen lite mer komplicerat, så med datagruppning är allt detsamma; vi vänder oss till metoden .apply()
.
.apply(lambda x: x['Length'].max()/60)
.apply()
– används för att tillämpa en specifik funktion på önskade kolumner;- i
lambda
-funktionen ärx
argumentet ochx['Length'].max()/60
är uttrycket. Funktionen hittar alltså det högsta värdet för varje gruppnyckel och dividerar det aggregerade värdet med60
.
Swipe to start coding
Din uppgift här är att gruppera data efter flygplatsen där flyget startade och sedan efter veckodag. Beräkna den minsta tiden av summan av gruppernas kolumner 'Length'
och 'Time'
för att ta reda på hur lång tid ett försenat flyg kan ta. Följ algoritmen för att lösa uppgiften:
Gruppera data:
- Spara listan med kolumner
'AirportFrom'
,'Airline'
,'Time'
och'Length'
(i denna ordning) i variabelncolumns
; - Extrahera
columns
fråndata
; - Ordningen är avgörande i metoden
.groupby()
; placera kolumnerna'AirportFrom'
och'Airline'
i denna ordning; - Använd funktionen på värdena i datasetet med samma gruppnycklar;
- Beräkna summan av två kolumner:
'Length'
och'Time'
. Hitta sedan deras minsta värde.
Lösning
Tack för dina kommentarer!
single