Komplisert 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.
1234import 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))
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 erxargumentet ogx['Length'].max()/60uttrykket. Funksjonen finner altså maksimumsverdien for hver gruppe-nøkkel og deler den aggregerte verdien på60.
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:
- Lagre listen over kolonner
'AirportFrom','Airline','DayOfWeek','Time'og'Length'(i denne rekkefølgen) i variabelencolumns. - Ekstraher disse kolonnene fra
dataved å bruke bracket-notasjon (data[columns]). - Grupper datasettet etter
'AirportFrom','Airline'og'DayOfWeek'(i denne rekkefølgen). - 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. - Tildel resultatet til en variabel kalt
data_flights. - Vis de første 10 radene av den resulterende Series ved å bruke
.head(10).
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 3.03
Komplisert 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.
1234import 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))
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 erxargumentet ogx['Length'].max()/60uttrykket. Funksjonen finner altså maksimumsverdien for hver gruppe-nøkkel og deler den aggregerte verdien på60.
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:
- Lagre listen over kolonner
'AirportFrom','Airline','DayOfWeek','Time'og'Length'(i denne rekkefølgen) i variabelencolumns. - Ekstraher disse kolonnene fra
dataved å bruke bracket-notasjon (data[columns]). - Grupper datasettet etter
'AirportFrom','Airline'og'DayOfWeek'(i denne rekkefølgen). - 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. - Tildel resultatet til en variabel kalt
data_flights. - Vis de første 10 radene av den resulterende Series ved å bruke
.head(10).
Løsning
Takk for tilbakemeldingene dine!
single