Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Komplisert Gruppering | Aggregere Data
Avanserte Teknikker i Pandas

bookKomplisert Gruppering

Det hender noen ganger at vi ikke er fornøyde med innebygde pandas-funksjoner, som .mean() eller .min() ved gruppering.

Se på kolonnen 'Length'; her har vi flytid i minutter. Tenk deg at vi ønsker å beregne maksimal tid i timer for elementer med samme verdi i kolonnen 'Flight' og deretter i 'Airline'. For å gjøre dette kan vi beregne maksimumsverdien i kolonnen 'Length' for hver gruppe-nøkkel og deretter dele den på 60. Se eksempelet 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 eksempelet fra de forrige kapitlene litt mer komplisert, men når det gjelder datagruppering, er alt det samme; la oss se nærmere på .apply()-metoden.

.apply(lambda x: x['Length'].max()/60)
  • .apply() – brukes for å anvende en spesifikk funksjon på de nødvendige kolonnene;
  • i lambda-funksjonen er x argumentet og x['Length'].max()/60 uttrykket. Funksjonen finner altså maksimumsverdien for hver gruppe-nøkkel og deler den aggregerte verdien på 60.
Oppgave

Swipe to start coding

Din oppgave her er å gruppere data etter flyplassen hvor flyvningen startet, og deretter etter ukedag. Beregn minimumstiden av summen av gruppenes kolonner 'Length' og 'Time' for å finne ut hvor lang tid en flyvning med forsinkelse kan ta. Følg algoritmen for å løse oppgaven:

Grupper data:

  • Lagre listen over kolonner 'AirportFrom', 'Airline', 'Time' og 'Length' (i denne rekkefølgen) i variabelen columns;
  • Ekstraher columns fra data;
  • Rekkefølgen er avgjørende i .groupby()-metoden; sett kolonnene 'AirportFrom' og 'Airline' i denne rekkefølgen;
  • Bruk funksjonen på verdiene i datasettet med samme gruppe-nøkler;
  • Beregn summen av de to kolonnene: 'Length' og 'Time'. Finn deretter minimumsverdien.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 3
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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

bookKomplisert Gruppering

Sveip for å vise menyen

Det hender noen ganger at vi ikke er fornøyde med innebygde pandas-funksjoner, som .mean() eller .min() ved gruppering.

Se på kolonnen 'Length'; her har vi flytid i minutter. Tenk deg at vi ønsker å beregne maksimal tid i timer for elementer med samme verdi i kolonnen 'Flight' og deretter i 'Airline'. For å gjøre dette kan vi beregne maksimumsverdien i kolonnen 'Length' for hver gruppe-nøkkel og deretter dele den på 60. Se eksempelet 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 eksempelet fra de forrige kapitlene litt mer komplisert, men når det gjelder datagruppering, er alt det samme; la oss se nærmere på .apply()-metoden.

.apply(lambda x: x['Length'].max()/60)
  • .apply() – brukes for å anvende en spesifikk funksjon på de nødvendige kolonnene;
  • i lambda-funksjonen er x argumentet og x['Length'].max()/60 uttrykket. Funksjonen finner altså maksimumsverdien for hver gruppe-nøkkel og deler den aggregerte verdien på 60.
Oppgave

Swipe to start coding

Din oppgave her er å gruppere data etter flyplassen hvor flyvningen startet, og deretter etter ukedag. Beregn minimumstiden av summen av gruppenes kolonner 'Length' og 'Time' for å finne ut hvor lang tid en flyvning med forsinkelse kan ta. Følg algoritmen for å løse oppgaven:

Grupper data:

  • Lagre listen over kolonner 'AirportFrom', 'Airline', 'Time' og 'Length' (i denne rekkefølgen) i variabelen columns;
  • Ekstraher columns fra data;
  • Rekkefølgen er avgjørende i .groupby()-metoden; sett kolonnene 'AirportFrom' og 'Airline' i denne rekkefølgen;
  • Bruk funksjonen på verdiene i datasettet med samme gruppe-nøkler;
  • Beregn summen av de to kolonnene: 'Length' og 'Time'. Finn deretter minimumsverdien.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 3
single

single

some-alt