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 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, men vid 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 ä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.
Swipe to start coding
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 den minsta totala flygtiden (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 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 minimum av denna summa. - Tilldela resultatet till en variabel som heter
data_flights. - Visa de första 10 raderna av den resulterande Series med
.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
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 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, men vid 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 ä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.
Swipe to start coding
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 den minsta totala flygtiden (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 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 minimum av denna summa. - Tilldela resultatet till en variabel som heter
data_flights. - Visa de första 10 raderna av den resulterande Series med
.head(10).
Lösning
Tack för dina kommentarer!
single