Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Komplicerad Gruppering | Aggregering av Data
Avancerade tekniker i pandas

bookKomplicerad Gruppering

Ibland händer det att vi inte är nöjda med inbyggda pandas-funktioner, såsom .mean() eller .min() vid gruppering.

Titta på kolumnen 'Length'; här har vi flygtiden i minuter. Föreställ dig att vi vill beräkna den maximala tiden i timmar för poster med samma värde i kolumnen 'Flight' och därefter i 'Airline'. För att göra detta kan vi beräkna det maximala värdet i kolumnen 'Length' för varje gruppnyckel och sedan dividera det med 60. Se exemplet och förklaringen nedan.

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

Förklaring:

Vi har gjort exemplet från de tidigare kapitlen lite mer komplicerat, så med datagruppning är allt detsamma; vi vänder oss till metoden .apply().

.apply(lambda x: x['Length'].max()/60)
  • .apply() – används för att tillämpa en specifik funktion på önskade kolumner;
  • i lambda-funktionen är x argumentet och x['Length'].max()/60 är uttrycket. Funktionen hittar alltså det högsta värdet för varje gruppnyckel och dividerar det aggregerade värdet med 60.
Uppgift

Swipe to start coding

Din uppgift här är att gruppera data efter flygplatsen där flyget startade och sedan efter veckodag. Beräkna den minsta tiden av summan av gruppernas kolumner 'Length' och 'Time' för att ta reda på hur lång tid ett försenat flyg kan ta. Följ algoritmen för att lösa uppgiften:

Gruppera data:

  • Spara listan med kolumner 'AirportFrom', 'Airline', 'Time' och 'Length' (i denna ordning) i variabeln columns;
  • Extrahera columns från data;
  • Ordningen är avgörande i metoden .groupby(); placera kolumnerna 'AirportFrom' och 'Airline' i denna ordning;
  • Använd funktionen på värdena i datasetet med samma gruppnycklar;
  • Beräkna summan av två kolumner: 'Length' och 'Time'. Hitta sedan deras minsta värde.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 3
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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

bookKomplicerad Gruppering

Svep för att visa menyn

Ibland händer det att vi inte är nöjda med inbyggda pandas-funktioner, såsom .mean() eller .min() vid gruppering.

Titta på kolumnen 'Length'; här har vi flygtiden i minuter. Föreställ dig att vi vill beräkna den maximala tiden i timmar för poster med samma värde i kolumnen 'Flight' och därefter i 'Airline'. För att göra detta kan vi beräkna det maximala värdet i kolumnen 'Length' för varje gruppnyckel och sedan dividera det med 60. Se exemplet och förklaringen nedan.

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

Förklaring:

Vi har gjort exemplet från de tidigare kapitlen lite mer komplicerat, så med datagruppning är allt detsamma; vi vänder oss till metoden .apply().

.apply(lambda x: x['Length'].max()/60)
  • .apply() – används för att tillämpa en specifik funktion på önskade kolumner;
  • i lambda-funktionen är x argumentet och x['Length'].max()/60 är uttrycket. Funktionen hittar alltså det högsta värdet för varje gruppnyckel och dividerar det aggregerade värdet med 60.
Uppgift

Swipe to start coding

Din uppgift här är att gruppera data efter flygplatsen där flyget startade och sedan efter veckodag. Beräkna den minsta tiden av summan av gruppernas kolumner 'Length' och 'Time' för att ta reda på hur lång tid ett försenat flyg kan ta. Följ algoritmen för att lösa uppgiften:

Gruppera data:

  • Spara listan med kolumner 'AirportFrom', 'Airline', 'Time' och 'Length' (i denna ordning) i variabeln columns;
  • Extrahera columns från data;
  • Ordningen är avgörande i metoden .groupby(); placera kolumnerna 'AirportFrom' och 'Airline' i denna ordning;
  • Använd funktionen på värdena i datasetet med samma gruppnycklar;
  • Beräkna summan av två kolumner: 'Length' och 'Time'. Hitta sedan deras minsta värde.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 3
single

single

some-alt