Filtrering og Valg av Data med Python
Sveip for å vise menyen
Valg og filtrering er de vanligste operasjonene innen datamanipulering. Valg lar deg plukke ut bestemte kolonner av interesse, mens filtrering lar deg begrense radene basert på spesifikke kriterier eller betingelser.
I de fleste virkelige scenarier trenger du ikke å arbeide med hver eneste kolonne eller rad i et datasett. Store tabeller kan ha hundrevis av kolonner og millioner av rader, hvorav de fleste kan være irrelevante for din spesifikke analyse. I dette kapittelet lærer du hvordan du kan "skjære ut" akkurat de dataene du trenger ved å bruke metodene select() og filter().
Velge spesifikke kolonner
Metoden select() lar deg opprette en ny DataFrame som kun inneholder de kolonnene du velger. Dette reduserer minnebruken i klyngen din og gjør resultatene mye enklere å lese.
# Select only two specific columns
selected_df = df.select("carat", "price")
display(selected_df)
Legg merke til at Spark ikke endrer den opprinnelige df. I stedet opprettes en ny kalt selected_df. Hvis du ønsker å velge alle kolonner unntatt én, eller utføre en beregning under utvalget, brukes mer avansert syntaks, men for grunnleggende oppgaver er det vanlig å sende kolonnenavnene som strenger.
Filtrering av rader med betingelser
Metoden filter() (eller aliaset where()) fungerer som en sil for dataene dine. Du oppgir en betingelse, og Spark beholder kun radene hvor denne betingelsen er sann.
# Filter for rows where the carat is '0.23'
filtered_df = df.filter(df.carat == 0.23)
display(filtered_df)
Du kan bruke vanlige sammenligningsoperatorer som == (lik), != (ulik), > (større enn) og < (mindre enn).
Kombinere flere filtre
Ofte er det behov for å bruke mer enn én regel samtidig. For å gjøre dette kan du kjede sammen filtre eller bruke logiske operatorer som "Og" (&) og "Eller" (|).
good_carat_df = df.filter((df.carat == 0.23) & (df.cut == "Good"))
display(good_carat_df)
Når du kombinerer filtre med & eller |, må du alltid sette hver enkelt betingelse i parentes. Dette sikrer at Spark evaluerer logikken riktig.
Velge og filtrere i ett steg
Siden Spark bruker et "fluent" API, kan du kjede disse kommandoene sammen på én linje med kode. Dette er et svært vanlig mønster innen profesjonell data engineering:
# Select specific diamonds by `price > 500`
high_profit_df = df.select("carat", "price").filter(df.price > 500)
display(high_profit_df)
Kontrollere arbeidet ditt
Etter hver seleksjon eller filtrering er det en god vane å kjøre en count(). Hvis du starter med 10 000 rader og etter en filtrering har 0, vet du at filterbetingelsen kan være for streng eller inneholder en skrivefeil i strengverdiene.
1. Hvilken metode ville du brukt hvis du ønsker å velge kun 3 kolonner fra en tabell med 50 kolonner?
2. Hva er den riktige måten i Python for å filtrere rader der "Total_Profit" er større enn 1000?
Takk for tilbakemeldingene dine!
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