Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Ingewikkelde Groepering | Gegevens Aggregeren
Geavanceerde Technieken in Pandas

bookIngewikkelde 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.

1234
import 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))
copy

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 is x het argument en x['Length'].max()/60 de expressie. De functie zoekt dus de maximale waarde voor elke groepssleutel en deelt de geaggregeerde waarde door 60.
Taak

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:

  1. Sla de lijst met kolommen 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' en 'Length' (in deze volgorde) op in de variabele columns.
  2. Extraheer deze kolommen uit data met behulp van bracketnotatie (data[columns]).
  3. Groepeer de dataset op 'AirportFrom', 'Airline' en 'DayOfWeek' (in deze exacte volgorde).
  4. 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.
  5. Wijs het resultaat toe aan een variabele genaamd data_flights.
  6. Toon de eerste 10 rijen van de resulterende Series met .head(10).

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 3
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 3.03

bookIngewikkelde 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.

1234
import 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))
copy

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 is x het argument en x['Length'].max()/60 de expressie. De functie zoekt dus de maximale waarde voor elke groepssleutel en deelt de geaggregeerde waarde door 60.
Taak

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:

  1. Sla de lijst met kolommen 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' en 'Length' (in deze volgorde) op in de variabele columns.
  2. Extraheer deze kolommen uit data met behulp van bracketnotatie (data[columns]).
  3. Groepeer de dataset op 'AirportFrom', 'Airline' en 'DayOfWeek' (in deze exacte volgorde).
  4. 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.
  5. Wijs het resultaat toe aan een variabele genaamd data_flights.
  6. Toon de eerste 10 rijen van de resulterende Series met .head(10).

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 3
single

single

some-alt