Filtraggio e Selezione dei Dati con Python
Scorri per mostrare il menu
La selezione e il filtraggio sono le operazioni più comuni nella manipolazione dei dati. Selezionare consente di scegliere colonne specifiche di interesse, mentre Filtrare permette di restringere le righe in base a criteri o condizioni specifiche.
Nella maggior parte degli scenari reali, non è necessario lavorare con ogni singola colonna o riga di un dataset. Le tabelle di grandi dimensioni possono avere centinaia di colonne e milioni di righe, molte delle quali potrebbero essere irrilevanti per l'analisi specifica. In questo capitolo, verrà illustrato come "estrarre" esattamente i dati necessari utilizzando i metodi select() e filter().
Selezione di colonne specifiche
Il metodo select() consente di creare un nuovo DataFrame che contiene solo le colonne scelte. Questo riduce la quantità di memoria utilizzata dal cluster e rende i risultati molto più leggibili.
# Select only two specific columns
selected_df = df.select("carat", "price")
display(selected_df)
Nota che Spark non modifica il df originale. Invece, crea un nuovo DataFrame chiamato selected_df. Se si desidera selezionare tutte le colonne tranne una, o eseguire un calcolo durante la selezione, è necessario utilizzare una sintassi più avanzata, ma per le operazioni di base, passare i nomi delle colonne come stringhe è l'approccio standard.
Filtraggio delle righe con condizioni
Il metodo filter() (o il suo alias where()) funziona come un setaccio per i dati. Si fornisce una condizione e Spark mantiene solo le righe in cui tale condizione è vera.
# Filter for rows where the carat is '0.23'
filtered_df = df.filter(df.carat == 0.23)
display(filtered_df)
È possibile utilizzare operatori di confronto standard come == (uguale), != (diverso), > (maggiore di) e < (minore di).
Combinazione di più filtri
Spesso è necessario applicare più di una regola contemporaneamente. Per farlo, è possibile concatenare i filtri o utilizzare operatori logici come "And" (&) e "Or" (|).
good_carat_df = df.filter((df.carat == 0.23) & (df.cut == "Good"))
display(good_carat_df)
Quando si combinano i filtri con & o |, racchiudere sempre ogni singola condizione tra parentesi. Questo garantisce che Spark valuti correttamente la logica.
Selezione e filtraggio in un unico passaggio
Poiché Spark utilizza un'API "fluent", è possibile concatenare questi comandi in una sola riga di codice. Questo è uno schema molto comune nell'ingegneria dei dati professionale:
# Select specific diamonds by `price > 500`
high_profit_df = df.select("carat", "price").filter(df.price > 500)
display(high_profit_df)
Verifica del lavoro svolto
Dopo ogni selezione o filtro, è buona pratica eseguire un count(). Se si parte da 10.000 righe e dopo un filtro si ottiene 0, è possibile che la condizione del filtro sia troppo restrittiva o che ci sia un errore nei valori delle stringhe.
1. Quale metodo utilizzeresti se vuoi selezionare solo 3 colonne da una tabella con 50 colonne?
2. In Python, qual è il modo corretto per filtrare le righe in cui "Total_Profit" è maggiore di 1000?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione