single
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 sedan 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å när det gäller datagruppning är allt detsamma; låt oss nu titta på 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 ärxargumentet 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.
Svep för att börja koda
Din uppgift här är att analysera flygtider med hänsyn till flygplats, flygbolag och veckodag.
Du ska gruppera data för att bestämma minsta totala flygtid (summan av 'Length' och 'Time') för varje unik kombination av avgångsflygplats, flygbolag och veckodag.
Följ algoritmen steg för steg:
- Spara listan med kolumnerna
'AirportFrom','Airline','DayOfWeek','Time'och'Length'(i denna ordning) i variabelncolumns. - Extrahera dessa kolumner från
datamed hjälp av hakparentesnotation (data[columns]). - Gruppera datasetet efter
'AirportFrom','Airline'och'DayOfWeek'(i exakt denna ordning). - Inuti
.groupby()-metoden, använd funktionen.apply()för att beräkna summan av kolumnerna'Length'och'Time'för varje grupp, och hitta sedan det minsta av denna summa. - Tilldela resultatet till en variabel som heter
data_flights. - Visa de första 10 raderna av den resulterande Series med hjälp av
.head(10).
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