Ingewikkelde Groepering
Het komt soms voor dat we niet tevreden zijn met ingebouwde pandas-functies, zoals .mean()
of .min()
tijdens het groeperen.
Bekijk de kolom 'Length'
; hierin staat de vluchtduur in minuten. Stel 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 onderstaande voorbeeld en de uitleg.
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 de .apply()
-methode bekijken.
.apply(lambda x: x['Length'].max()/60)
.apply()
- hiermee kan een specifieke functie op de gewenste kolommen worden toegepast;- in de
lambda
-functie isx
het argument enx['Length'].max()/60
de expressie. De functie zoekt dus de maximale waarde voor elke groepssleutel en deelt de geaggregeerde waarde door60
.
Swipe to start coding
De opdracht is om gegevens te groeperen op basis van de luchthaven van vertrek en vervolgens op de weekdag. Bereken de minimale tijdsduur van de som van de kolommen 'Length'
en 'Time'
binnen de groepen om te bepalen hoe lang een vlucht met vertraging kan duren. Volg het algoritme om de taak uit te voeren:
Gegevens groeperen:
- Sla de lijst met kolommen
'AirportFrom'
,'Airline'
,'Time'
en'Length'
(in deze volgorde) op in de variabelecolumns
; - Extraheer
columns
uitdata
; - De volgorde is essentieel binnen de
.groupby()
-methode; plaats de kolommen'AirportFrom'
en'Airline'
in deze volgorde; - Pas de functie toe op de waarden van de dataset met dezelfde groepssleutels;
- Bereken de som van de twee kolommen:
'Length'
en'Time'
. Zoek vervolgens hun minimumwaarde.
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.
Awesome!
Completion rate improved to 3.03
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.
Bekijk de kolom 'Length'
; hierin staat de vluchtduur in minuten. Stel 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 onderstaande voorbeeld en de uitleg.
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 de .apply()
-methode bekijken.
.apply(lambda x: x['Length'].max()/60)
.apply()
- hiermee kan een specifieke functie op de gewenste kolommen worden toegepast;- in de
lambda
-functie isx
het argument enx['Length'].max()/60
de expressie. De functie zoekt dus de maximale waarde voor elke groepssleutel en deelt de geaggregeerde waarde door60
.
Swipe to start coding
De opdracht is om gegevens te groeperen op basis van de luchthaven van vertrek en vervolgens op de weekdag. Bereken de minimale tijdsduur van de som van de kolommen 'Length'
en 'Time'
binnen de groepen om te bepalen hoe lang een vlucht met vertraging kan duren. Volg het algoritme om de taak uit te voeren:
Gegevens groeperen:
- Sla de lijst met kolommen
'AirportFrom'
,'Airline'
,'Time'
en'Length'
(in deze volgorde) op in de variabelecolumns
; - Extraheer
columns
uitdata
; - De volgorde is essentieel binnen de
.groupby()
-methode; plaats de kolommen'AirportFrom'
en'Airline'
in deze volgorde; - Pas de functie toe op de waarden van de dataset met dezelfde groepssleutels;
- Bereken de som van de twee kolommen:
'Length'
en'Time'
. Zoek vervolgens hun minimumwaarde.
Oplossing
Bedankt voor je feedback!
single