Datan Suodatus ja Valinta Pythonilla
Pyyhkäise näyttääksesi valikon
Valitseminen ja suodattaminen ovat yleisimpiä operaatioita datan käsittelyssä. Valitseminen mahdollistaa tiettyjen kiinnostavien sarakkeiden poimimisen, kun taas Suodattaminen rajaa rivejä tiettyjen ehtojen tai kriteerien perusteella.
Useimmissa tosielämän tilanteissa ei ole tarpeen käsitellä jokaista saraketta tai riviä tietojoukossa. Suurissa tauluissa voi olla satoja sarakkeita ja miljoonia rivejä, joista suurin osa voi olla epäolennaisia analyysisi kannalta. Tässä luvussa opit, kuinka voit "rajata" juuri tarvitsemasi datan käyttämällä select()- ja filter()-metodeja.
Tiettyjen sarakkeiden valitseminen
select()-metodi mahdollistaa uuden DataFramen luomisen, joka sisältää vain valitsemasi sarakkeet. Tämä vähentää klusterisi muistinkäyttöä ja tekee tuloksista helpommin luettavia.
# Select only two specific columns
selected_df = df.select("carat", "price")
display(selected_df)
Huomaa, että Spark ei muuta alkuperäistä df:ää. Sen sijaan se luo uuden nimeltä selected_df. Jos haluaisit valita kaikki sarakkeet yhtä lukuun ottamatta tai suorittaa laskutoimituksen valinnan aikana, käyttäisit edistyneempää syntaksia, mutta perustoiminnoissa sarakkeiden nimet annetaan merkkijonoina.
Rivien suodatus ehtojen avulla
filter()-metodi (tai sen alias where()) toimii kuin siivilä datallesi. Annetaan ehto, ja Spark säilyttää vain ne rivit, joissa ehto toteutuu.
# Filter for rows where the carat is '0.23'
filtered_df = df.filter(df.carat == 0.23)
display(filtered_df)
Voit käyttää tavallisia vertailuoperaattoreita, kuten == (yhtä suuri kuin), != (eri suuri kuin), > (suurempi kuin) ja < (pienempi kuin).
Useiden suodattimien yhdistäminen
Usein on tarpeen käyttää useampaa sääntöä samanaikaisesti. Tämän voi tehdä ketjuttamalla suodattimia tai käyttämällä loogisia operaattoreita, kuten "Ja" (&) ja "Tai" (|).
good_carat_df = df.filter((df.carat == 0.23) & (df.cut == "Good"))
display(good_carat_df)
Kun yhdistät suodattimia &- tai |-operaattorilla, laita jokainen yksittäinen ehto aina sulkeisiin. Tämä varmistaa, että Spark arvioi logiikan oikein.
Valitseminen ja suodattaminen yhdellä askeleella
Koska Spark käyttää "fluent"-rajapintaa, voit ketjuttaa nämä komennot yhteen riville. Tämä on hyvin yleinen käytäntö ammattimaisessa data engineeringissä:
# Select specific diamonds by `price > 500`
high_profit_df = df.select("carat", "price").filter(df.price > 500)
display(high_profit_df)
Työn tarkistaminen
Jokaisen valinnan tai suodatuksen jälkeen on hyvä tapa suorittaa count(). Jos aloitat 10 000 rivillä ja suodatuksen jälkeen rivejä on 0, suodatusehto saattaa olla liian tiukka tai merkkijonossa on kirjoitusvirhe.
1. Mitä metodia käyttäisit, jos haluat valita vain 3 saraketta 50-sarakkeisesta taulusta?
2. Pythonissa, mikä on oikea tapa suodattaa rivit, joissa "Total_Profit" on suurempi kuin 1000?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme