Filtrering och Val av Data med Python
Svep för att visa menyn
Att välja och filtrera är de vanligaste operationerna vid datamanipulation. Att välja gör det möjligt att plocka ut specifika kolumner av intresse, medan filtrering gör det möjligt att begränsa raderna baserat på specifika kriterier eller villkor.
I de flesta verkliga scenarier behöver du inte arbeta med varje enskild kolumn eller rad i en datamängd. Stora tabeller kan ha hundratals kolumner och miljontals rader, varav de flesta kan vara irrelevanta för din specifika analys. I detta kapitel lär du dig hur du "skär ut" exakt den data du behöver med hjälp av metoderna select() och filter().
Välja specifika kolumner
Metoden select() gör det möjligt att skapa en ny DataFrame som endast innehåller de kolumner du väljer. Detta minskar mängden minne som din kluster använder och gör resultaten mycket lättare att läsa.
# Select only two specific columns
selected_df = df.select("carat", "price")
display(selected_df)
Observera att Spark inte ändrar den ursprungliga df. Istället skapas en ny som kallas selected_df. Om du vill välja alla kolumner utom en, eller utföra en beräkning under urvalet, används mer avancerad syntax, men för grundläggande uppgifter är det standard att ange kolumnnamnen som strängar.
Filtrering av rader med villkor
Metoden filter() (eller dess alias where()) fungerar som en sil för dina data. Du anger ett villkor, och Spark behåller endast de rader där villkoret är sant.
# Filter for rows where the carat is '0.23'
filtered_df = df.filter(df.carat == 0.23)
display(filtered_df)
Du kan använda vanliga jämförelseoperatorer som == (lika med), != (inte lika med), > (större än) och < (mindre än).
Kombinera flera filter
Ofta behöver du tillämpa mer än en regel samtidigt. För att göra detta kan du kedja filter tillsammans eller använda logiska operatorer som "Och" (&) och "Eller" (|).
good_carat_df = df.filter((df.carat == 0.23) & (df.cut == "Good"))
display(good_carat_df)
När du kombinerar filter med & eller |, omslut alltid varje enskilt villkor med parenteser. Detta säkerställer att Spark utvärderar logiken korrekt.
Välja och filtrera i ett steg
Eftersom Spark använder ett "fluent" API kan du kedja ihop dessa kommandon på en enda kodrad. Detta är ett mycket vanligt mönster inom professionell data engineering:
# Select specific diamonds by `price > 500`
high_profit_df = df.select("carat", "price").filter(df.price > 500)
display(high_profit_df)
Kontrollera ditt arbete
Efter varje urval eller filtrering är det en god vana att köra en count(). Om du börjar med 10 000 rader och efter en filtrering har 0, vet du att ditt filtervillkor kan vara för strikt eller innehålla ett stavfel i strängvärdena.
1. Vilken metod skulle du använda om du vill välja endast 3 kolumner från en tabell med 50 kolumner?
2. I Python, vilket är det korrekta sättet att filtrera rader där "Total_Profit" är större än 1000?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal