Filtrering og Udvælgelse af Data med Python
Stryg for at vise menuen
Udvælgelse og filtrering er de mest almindelige operationer inden for datamanipulation. Udvælgelse giver mulighed for at vælge specifikke kolonner af interesse, mens Filtrering gør det muligt at indsnævre rækkerne baseret på bestemte kriterier eller betingelser.
I de fleste virkelige scenarier er det ikke nødvendigt at arbejde med alle kolonner eller rækker i et datasæt. Store tabeller kan have hundredevis af kolonner og millioner af rækker, hvoraf de fleste kan være irrelevante for din specifikke analyse. I dette kapitel lærer du, hvordan du "udskærer" præcis de data, du har brug for, ved hjælp af metoderne select() og filter().
Udvælgelse af specifikke kolonner
Metoden select() gør det muligt at oprette en ny DataFrame, der kun indeholder de kolonner, du vælger. Dette reducerer mængden af hukommelse, som din klynge bruger, og gør dine resultater meget lettere at læse.
# Select only two specific columns
selected_df = df.select("carat", "price")
display(selected_df)
Bemærk, at Spark ikke ændrer den oprindelige df. I stedet oprettes en ny kaldet selected_df. Hvis du ønsker at vælge alle kolonner undtagen én, eller udføre en beregning under udvælgelsen, skal du bruge mere avanceret syntaks, men til grundlæggende opgaver er det standard at angive kolonnenavnene som strenge.
Filtrering af rækker med betingelser
Metoden filter() (eller dens alias where()) fungerer som en si for dine data. Du angiver en betingelse, og Spark beholder kun de rækker, hvor denne betingelse er opfyldt.
# Filter for rows where the carat is '0.23'
filtered_df = df.filter(df.carat == 0.23)
display(filtered_df)
Du kan bruge standard sammenligningsoperatorer som == (lig med), != (ikke lig med), > (større end) og < (mindre end).
Kombinering af flere filtre
Ofte er det nødvendigt at anvende mere end én regel ad gangen. Dette kan gøres ved at kæde filtre sammen eller bruge 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 |, skal du altid omslutte hver enkelt betingelse med parenteser. Dette sikrer, at Spark evaluerer logikken korrekt.
Udvælgelse og filtrering i ét trin
Fordi Spark bruger et "fluent" API, kan du kæde disse kommandoer sammen på én linje kode. Dette er et meget almindeligt mønster inden for professionel data engineering:
# Select specific diamonds by `price > 500`
high_profit_df = df.select("carat", "price").filter(df.price > 500)
display(high_profit_df)
Kontrol af dit arbejde
Efter hver selektion eller filtrering er det en god vane at køre en count(). Hvis du starter med 10.000 rækker og efter en filtrering har 0, ved du, at din filterbetingelse måske er for streng eller indeholder en stavefejl i strengværdierne.
1. Hvilken metode ville du bruge, hvis du kun vil vælge 3 kolonner ud af en tabel med 50 kolonner?
2. Hvad er den korrekte måde i Python at filtrere rækker, hvor "Total_Profit" er større end 1000?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat