single
Ingewikkelde Groepering
Veeg om het menu te tonen
Het komt soms voor dat we niet tevreden zijn met ingebouwde pandas-functies, zoals .mean() of .min() tijdens het groeperen.
Kijk naar de kolom 'Length'; hierin staat de vluchtduur in minuten. Stel je voor dat we de maximale tijd in uren willen berekenen voor items met dezelfde waarde in de kolom 'Flight' en vervolgens in de kolom 'Airline'. Hiervoor kunnen we de maximale waarde van de kolom 'Length' voor elke groepssleutel berekenen en deze vervolgens delen door 60. Bekijk het voorbeeld en de uitleg hieronder.
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))
Uitleg:
We hebben het voorbeeld uit de vorige hoofdstukken iets ingewikkelder gemaakt, maar bij het groeperen van data blijft alles hetzelfde; laten we nu kijken naar de .apply()-methode.
.apply(lambda x: x['Length'].max()/60)
.apply()- hiermee kun je een specifieke functie toepassen op de gewenste kolommen;- in de
lambda-functie isxhet argument enx['Length'].max()/60de expressie. De functie zoekt dus de maximale waarde voor elke groepssleutel en deelt de geaggregeerde waarde door60.
Veeg om te beginnen met coderen
Je taak hier is om de vluchtduur te analyseren met inachtneming van luchthaven, luchtvaartmaatschappij en weekdag.
Je groepeert de gegevens om de minimale totale vliegtijd (de som van 'Length' en 'Time') te bepalen voor elke unieke combinatie van vertrek luchthaven, luchtvaartmaatschappij en weekdag.
Volg het algoritme stap voor stap:
- Sla de lijst met kolommen
'AirportFrom','Airline','DayOfWeek','Time'en'Length'(in deze volgorde) op in de variabelecolumns. - Extraheer deze kolommen uit
datamet behulp van bracketnotatie (data[columns]). - Groepeer de dataset op
'AirportFrom','Airline'en'DayOfWeek'(in precies deze volgorde). - Gebruik binnen de
.groupby()-methode de.apply()-functie om de som van de kolommen'Length'en'Time'voor elke groep te berekenen en bepaal vervolgens het minimum van deze som. - Ken het resultaat toe aan een variabele genaamd
data_flights. - Toon de eerste 10 rijen van de resulterende Series met
.head(10).
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.