Monimutkainen Ryhmittely
Joskus sisäänrakennetut pandas-funktiot, kuten .mean()
tai .min()
, eivät riitä ryhmittelyssä.
Tarkastele saraketta 'Length'
; tässä on lennon kesto minuutteina. Kuvittele, että haluamme laskea maksimiajan tunneissa niille riveille, joilla on sama arvo sarakkeessa 'Flight'
ja sitten sarakkeessa 'Airline'
. Tämän saavuttamiseksi voimme laskea sarakkeen 'Length'
maksimiarvon jokaiselle ryhmäavaimelle ja jakaa sen sitten 60
:llä. Katso esimerkki ja selitys alla.
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))
Selitys:
Teimme aiemman esimerkin hieman monimutkaisemmaksi, mutta tietojen ryhmittelyssä kaikki pysyy samana; siirrytään nyt käyttämään .apply()
-metodia.
.apply(lambda x: x['Length'].max()/60)
.apply()
– mahdollistaa tietyn funktion soveltamisen tarvittuihin sarakkeisiin;lambda
-funktiossax
on argumentti jax['Length'].max()/60
on lauseke. Funktio siis hakee suurimman arvon jokaiselle ryhmäavaimelle ja jakaa kootun arvon60
:llä.
Swipe to start coding
Tehtävänäsi on ryhmittää data lähtölentokentän ja viikonpäivän mukaan. Laske ryhmien sarakkeiden 'Length'
ja 'Time'
summan pienin arvo selvittääksesi, kuinka kauan viivästynyt lento voi kestää. Noudata seuraavaa algoritmia:
- Tallenna sarakkeet
'AirportFrom'
,'Airline'
,'Time'
ja'Length'
muuttujaancolumns
. - Poimi
columns
data
-objektista. - Käytä ryhmittelyssä
.groupby()
-metodia sarakkeiden'AirportFrom'
ja'Airline'
mukaan tässä järjestyksessä. - Laske kunkin ryhmän
'Length'
ja'Time'
summa ja valitse sen pienin arvo.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 3.03
Monimutkainen Ryhmittely
Pyyhkäise näyttääksesi valikon
Joskus sisäänrakennetut pandas-funktiot, kuten .mean()
tai .min()
, eivät riitä ryhmittelyssä.
Tarkastele saraketta 'Length'
; tässä on lennon kesto minuutteina. Kuvittele, että haluamme laskea maksimiajan tunneissa niille riveille, joilla on sama arvo sarakkeessa 'Flight'
ja sitten sarakkeessa 'Airline'
. Tämän saavuttamiseksi voimme laskea sarakkeen 'Length'
maksimiarvon jokaiselle ryhmäavaimelle ja jakaa sen sitten 60
:llä. Katso esimerkki ja selitys alla.
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))
Selitys:
Teimme aiemman esimerkin hieman monimutkaisemmaksi, mutta tietojen ryhmittelyssä kaikki pysyy samana; siirrytään nyt käyttämään .apply()
-metodia.
.apply(lambda x: x['Length'].max()/60)
.apply()
– mahdollistaa tietyn funktion soveltamisen tarvittuihin sarakkeisiin;lambda
-funktiossax
on argumentti jax['Length'].max()/60
on lauseke. Funktio siis hakee suurimman arvon jokaiselle ryhmäavaimelle ja jakaa kootun arvon60
:llä.
Swipe to start coding
Tehtävänäsi on ryhmittää data lähtölentokentän ja viikonpäivän mukaan. Laske ryhmien sarakkeiden 'Length'
ja 'Time'
summan pienin arvo selvittääksesi, kuinka kauan viivästynyt lento voi kestää. Noudata seuraavaa algoritmia:
- Tallenna sarakkeet
'AirportFrom'
,'Airline'
,'Time'
ja'Length'
muuttujaancolumns
. - Poimi
columns
data
-objektista. - Käytä ryhmittelyssä
.groupby()
-metodia sarakkeiden'AirportFrom'
ja'Airline'
mukaan tässä järjestyksessä. - Laske kunkin ryhmän
'Length'
ja'Time'
summa ja valitse sen pienin arvo.
Ratkaisu
Kiitos palautteestasi!
single