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 å analysere flytider med hensyn til flyplass, flyselskap og ukedag. Du skal gruppere dataene for å finne minste totale flytid (summen av 'Length' og 'Time') for hver unike kombinasjon av avreiseflyplass, flyselskap og ukedag.

Følg algoritmen steg for steg:

  1. Lagre listen over kolonner 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' og 'Length' (i denne rekkefølgen) i variabelen columns.
  2. Ekstraher disse kolonnene fra data ved å bruke bracket-notasjon (data[columns]).
  3. Grupper datasettet etter 'AirportFrom', 'Airline' og 'DayOfWeek' (i denne rekkefølgen).
  4. Inne i .groupby()-metoden, bruk .apply()-funksjonen for å beregne summen av kolonnene 'Length' og 'Time' for hver gruppe, og finn deretter minimum av denne summen.
  5. Tildel resultatet til en variabel kalt data_flights.
  6. Vis de første 10 radene av den resulterende Series ved å bruke .head(10).

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 å analysere flytider med hensyn til flyplass, flyselskap og ukedag. Du skal gruppere dataene for å finne minste totale flytid (summen av 'Length' og 'Time') for hver unike kombinasjon av avreiseflyplass, flyselskap og ukedag.

Følg algoritmen steg for steg:

  1. Lagre listen over kolonner 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' og 'Length' (i denne rekkefølgen) i variabelen columns.
  2. Ekstraher disse kolonnene fra data ved å bruke bracket-notasjon (data[columns]).
  3. Grupper datasettet etter 'AirportFrom', 'Airline' og 'DayOfWeek' (i denne rekkefølgen).
  4. Inne i .groupby()-metoden, bruk .apply()-funksjonen for å beregne summen av kolonnene 'Length' og 'Time' for hver gruppe, og finn deretter minimum av denne summen.
  5. Tildel resultatet til en variabel kalt data_flights.
  6. Vis de første 10 radene av den resulterende Series ved å bruke .head(10).

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