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
Datahantering med Pandas
Avsnitt 4. Kapitel 3
single

single

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 sedan 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å när det gäller datagruppning är allt detsamma; låt oss nu titta på 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

Svep för att börja koda

Din uppgift här är att analysera flygtider med hänsyn till flygplats, flygbolag och veckodag. Du ska gruppera data för att bestämma minsta totala flygtid (summan av 'Length' och 'Time') för varje unik kombination av avgångsflygplats, flygbolag och veckodag.

Följ algoritmen steg för steg:

  1. Spara listan med kolumnerna 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' och 'Length' (i denna ordning) i variabeln columns.
  2. Extrahera dessa kolumner från data med hjälp av hakparentesnotation (data[columns]).
  3. Gruppera datasetet efter 'AirportFrom', 'Airline' och 'DayOfWeek' (i exakt denna ordning).
  4. Inuti .groupby()-metoden, använd funktionen .apply() för att beräkna summan av kolumnerna 'Length' och 'Time' för varje grupp, och hitta sedan det minsta av denna summa.
  5. Tilldela resultatet till en variabel som heter data_flights.
  6. Visa de första 10 raderna av den resulterande Series med hjälp av .head(10).

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

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

some-alt