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 de indbyggede pandas-funktioner, såsom .mean() eller .min(), ikke er tilstrækkelige 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 foregående 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å maksimumværdien for hver gruppe-nøgle og dividerer den aggregerede værdi med 60.
Opgave

Swipe to start coding

Din opgave her er at analysere flyvetider med hensyn til lufthavn, flyselskab og ugedag. Du skal gruppere dataene for at bestemme den mindste samlede flyvetid (summen af 'Length' og 'Time') for hver unikke kombination af afgangslufthavn, flyselskab og ugedag.

Følg algoritmen trin for trin:

  1. Gem listen af kolonner 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' og 'Length' (i denne rækkefølge) i variablen columns.
  2. Udtræk disse kolonner fra data ved hjælp af bracket notation (data[columns]).
  3. Gruppér datasættet efter 'AirportFrom', 'Airline' og 'DayOfWeek' (i denne præcise rækkefølge).
  4. Indenfor .groupby()-metoden anvendes .apply()-funktionen til at beregne summen af kolonnerne 'Length' og 'Time' for hver gruppe, og derefter findes minimum af denne sum.
  5. Tildel resultatet til en variabel med navnet data_flights.
  6. Udskriv de første 10 rækker af den resulterende Series ved hjælp af .head(10).

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 de indbyggede pandas-funktioner, såsom .mean() eller .min(), ikke er tilstrækkelige 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 foregående 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å maksimumværdien for hver gruppe-nøgle og dividerer den aggregerede værdi med 60.
Opgave

Swipe to start coding

Din opgave her er at analysere flyvetider med hensyn til lufthavn, flyselskab og ugedag. Du skal gruppere dataene for at bestemme den mindste samlede flyvetid (summen af 'Length' og 'Time') for hver unikke kombination af afgangslufthavn, flyselskab og ugedag.

Følg algoritmen trin for trin:

  1. Gem listen af kolonner 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' og 'Length' (i denne rækkefølge) i variablen columns.
  2. Udtræk disse kolonner fra data ved hjælp af bracket notation (data[columns]).
  3. Gruppér datasættet efter 'AirportFrom', 'Airline' og 'DayOfWeek' (i denne præcise rækkefølge).
  4. Indenfor .groupby()-metoden anvendes .apply()-funktionen til at beregne summen af kolonnerne 'Length' og 'Time' for hver gruppe, og derefter findes minimum af denne sum.
  5. Tildel resultatet til en variabel med navnet data_flights.
  6. Udskriv de første 10 rækker af den resulterende Series ved hjælp af .head(10).

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