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 sen jälkeen 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 ennallaan; siirrytään nyt käyttämään .apply()-metodia.
.apply(lambda x: x['Length'].max()/60)
.apply()– mahdollistaa tietyn funktion soveltamisen tarvittuihin sarakkeisiin;lambda-funktiossaxon argumentti jax['Length'].max()/60on lauseke. Funktio siis etsii suurimman arvon jokaiselle ryhmäavaimelle ja jakaa kootun arvon60:llä.
Swipe to start coding
Tehtävänäsi on analysoida lentojen kestoja huomioiden lähtökenttä, lentoyhtiö ja viikonpäivä.
Ryhmittele data selvittääksesi pienimmän kokonaislentoaikaan (eli 'Length' ja 'Time' -sarakkeiden summan) jokaiselle yksilölliselle lähtökentän, lentoyhtiön ja viikonpäivän yhdistelmälle.
Noudata algoritmia vaihe vaiheelta:
- Tallenna sarakkeiden lista
'AirportFrom','Airline','DayOfWeek','Time'ja'Length'(tässä järjestyksessä) muuttujaancolumns. - Poimi nämä sarakkeet
data-datakehyksestä hakasulkujen avulla (data[columns]). - Ryhmittele aineisto sarakkeiden
'AirportFrom','Airline'ja'DayOfWeek'mukaan (tässä järjestyksessä). - Käytä
.groupby()-menetelmän sisällä.apply()-funktiota laskeaksesi kunkin ryhmän'Length'- ja'Time'-sarakkeiden summan ja etsi sitten tämän summan pienin arvo. - Tallenna tulos muuttujaan
data_flights. - Tulosta tuloksena saadun Series-olion ensimmäiset 10 riviä metodilla
.head(10).
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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?
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 sen jälkeen 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 ennallaan; siirrytään nyt käyttämään .apply()-metodia.
.apply(lambda x: x['Length'].max()/60)
.apply()– mahdollistaa tietyn funktion soveltamisen tarvittuihin sarakkeisiin;lambda-funktiossaxon argumentti jax['Length'].max()/60on lauseke. Funktio siis etsii suurimman arvon jokaiselle ryhmäavaimelle ja jakaa kootun arvon60:llä.
Swipe to start coding
Tehtävänäsi on analysoida lentojen kestoja huomioiden lähtökenttä, lentoyhtiö ja viikonpäivä.
Ryhmittele data selvittääksesi pienimmän kokonaislentoaikaan (eli 'Length' ja 'Time' -sarakkeiden summan) jokaiselle yksilölliselle lähtökentän, lentoyhtiön ja viikonpäivän yhdistelmälle.
Noudata algoritmia vaihe vaiheelta:
- Tallenna sarakkeiden lista
'AirportFrom','Airline','DayOfWeek','Time'ja'Length'(tässä järjestyksessä) muuttujaancolumns. - Poimi nämä sarakkeet
data-datakehyksestä hakasulkujen avulla (data[columns]). - Ryhmittele aineisto sarakkeiden
'AirportFrom','Airline'ja'DayOfWeek'mukaan (tässä järjestyksessä). - Käytä
.groupby()-menetelmän sisällä.apply()-funktiota laskeaksesi kunkin ryhmän'Length'- ja'Time'-sarakkeiden summan ja etsi sitten tämän summan pienin arvo. - Tallenna tulos muuttujaan
data_flights. - Tulosta tuloksena saadun Series-olion ensimmäiset 10 riviä metodilla
.head(10).
Ratkaisu
Kiitos palautteestasi!
single