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 isxhet argument enx['Length'].max()/60de expressie. De functie zoekt dus de maximale waarde voor elke groepssleutel en deelt de geaggregeerde waarde door60.
Swipe to start coding
Uw taak hier is het analyseren van vluchtduur met inachtneming van luchthaven, luchtvaartmaatschappij en weekdag.
U 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 deze exacte volgorde). - Pas binnen de
.groupby()-methode de.apply()-functie toe om de som van de kolommen'Length'en'Time'voor elke groep te berekenen en bepaal vervolgens het minimum van deze som. - Wijs 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.
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
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 isxhet argument enx['Length'].max()/60de expressie. De functie zoekt dus de maximale waarde voor elke groepssleutel en deelt de geaggregeerde waarde door60.
Swipe to start coding
Uw taak hier is het analyseren van vluchtduur met inachtneming van luchthaven, luchtvaartmaatschappij en weekdag.
U 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 deze exacte volgorde). - Pas binnen de
.groupby()-methode de.apply()-functie toe om de som van de kolommen'Length'en'Time'voor elke groep te berekenen en bepaal vervolgens het minimum van deze som. - Wijs 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