Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Kompliceret Gruppering | Aggregering af Data
Avancerede Teknikker i Pandas

bookKompliceret Gruppering

Det hænder nogle gange, at vi ikke er tilfredse med de indbyggede pandas-funktioner, såsom .mean() eller .min() ved gruppering.

Se på kolonnen 'Length'; her har vi flyvetiden i minutter. Forestil dig, at vi ønsker at beregne den maksimale tid i timer for poster med samme værdi i kolonnen 'Flight' og derefter i 'Airline'. For at gøre dette kan vi beregne den maksimale værdi af kolonnen 'Length' for hver gruppe-nøgle og derefter dividere den med 60. Se eksemplet og forklaringen nedenfor.

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

Forklaring:

Vi har gjort eksemplet fra de tidligere kapitler lidt mere kompliceret, så med datagruppering er alt det samme; lad os nu se på .apply()-metoden.

.apply(lambda x: x['Length'].max()/60)
  • .apply() – hjælper med at anvende en specifik funktion på de ønskede kolonner;
  • i lambda-funktionen er x argumentet, og x['Length'].max()/60 er udtrykket. Funktionen finder altså maksimum-værdien for hver gruppe-nøgle og dividerer den aggregerede værdi med 60.
Opgave

Swipe to start coding

Din opgave her er at gruppere data efter den lufthavn, hvorfra flyet startede, og derefter efter ugedag. Beregn den minimale tid for summen af gruppernes kolonner 'Length' og 'Time' for at finde ud af, hvor lang tid en flyvning med forsinkelse kan tage. Følg algoritmen for at løse opgaven:

Gruppér data:

  • Gem listen af kolonner 'AirportFrom', 'Airline', 'Time' og 'Length' (i denne rækkefølge) i variablen columns;
  • Udtræk columns fra data;
  • Rækkefølgen er afgørende i .groupby()-metoden; placer kolonnerne 'AirportFrom' og 'Airline' i denne rækkefølge;
  • Anvend funktionen på værdierne i datasættet med samme gruppe-nøgler;
  • Beregn summen af de to kolonner: 'Length' og 'Time'. Find derefter deres minimum.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 3
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

close

Awesome!

Completion rate improved to 3.03

bookKompliceret Gruppering

Stryg for at vise menuen

Det hænder nogle gange, at vi ikke er tilfredse med de indbyggede pandas-funktioner, såsom .mean() eller .min() ved gruppering.

Se på kolonnen 'Length'; her har vi flyvetiden i minutter. Forestil dig, at vi ønsker at beregne den maksimale tid i timer for poster med samme værdi i kolonnen 'Flight' og derefter i 'Airline'. For at gøre dette kan vi beregne den maksimale værdi af kolonnen 'Length' for hver gruppe-nøgle og derefter dividere den med 60. Se eksemplet og forklaringen nedenfor.

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

Forklaring:

Vi har gjort eksemplet fra de tidligere kapitler lidt mere kompliceret, så med datagruppering er alt det samme; lad os nu se på .apply()-metoden.

.apply(lambda x: x['Length'].max()/60)
  • .apply() – hjælper med at anvende en specifik funktion på de ønskede kolonner;
  • i lambda-funktionen er x argumentet, og x['Length'].max()/60 er udtrykket. Funktionen finder altså maksimum-værdien for hver gruppe-nøgle og dividerer den aggregerede værdi med 60.
Opgave

Swipe to start coding

Din opgave her er at gruppere data efter den lufthavn, hvorfra flyet startede, og derefter efter ugedag. Beregn den minimale tid for summen af gruppernes kolonner 'Length' og 'Time' for at finde ud af, hvor lang tid en flyvning med forsinkelse kan tage. Følg algoritmen for at løse opgaven:

Gruppér data:

  • Gem listen af kolonner 'AirportFrom', 'Airline', 'Time' og 'Length' (i denne rækkefølge) i variablen columns;
  • Udtræk columns fra data;
  • Rækkefølgen er afgørende i .groupby()-metoden; placer kolonnerne 'AirportFrom' og 'Airline' i denne rækkefølge;
  • Anvend funktionen på værdierne i datasættet med samme gruppe-nøgler;
  • Beregn summen af de to kolonner: 'Length' og 'Time'. Find derefter deres minimum.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 3
single

single

some-alt