0Pricing
Python Academy · Lezione

Indicizzazione, filtraggio e maschere booleane

Selezioni righe e colonne con loc, iloc e condizioni booleane.

Indicizzazione, filtraggio e maschere booleane è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.

loc e iloc

loc seleziona in base all'etichetta; iloc seleziona in base alla posizione intera. Non li confonda mai.

import pandas as pd

df = pd.DataFrame({"a":[1,2,3],"b":[4,5,6]}, index=["x","y","z"])
print(df.loc["y"])       # row with label y
print(df.iloc[1])        # row at position 1 (same row)
print(df.loc["x":"y"])   # rows x to y inclusive

Filtraggio con maschere booleane

Crei una Series booleana e la utilizzi per selezionare le righe. È l'equivalente pandas dell'indicizzazione booleana di NumPy.

import pandas as pd

df = pd.DataFrame({"name":["Alice","Bob","Carol"],"age":[30,17,25]})
adults = df[df["age"] >= 18]
print(adults)
# Alice 30
# Carol 25

Condizioni multiple

Combini le condizioni booleane con & (and) e | (or). Racchiuda ogni condizione tra parentesi.

import pandas as pd

df = pd.DataFrame({"city":["NY","LA","NY","LA"],"score":[80,90,70,85]})
result = df[(df["city"]=="NY") & (df["score"]>75)]
print(result)

Metodo query()

df.query("expression") accetta un'espressione stringa, spesso più leggibile delle maschere booleane.

import pandas as pd

df = pd.DataFrame({"age":[30,17,25],"score":[90,80,70]})
result = df.query("age >= 18 and score > 75")
print(result)

Filtraggio con isin()

isin(list) filtra le righe in cui il valore di una colonna è presente in un determinato elenco.

import pandas as pd

df = pd.DataFrame({"city":["NY","LA","Chicago","NY"],"val":[1,2,3,4]})
print(df[df["city"].isin(["NY","LA"])])
# rows with NY or LA

between() per filtrare per intervallo

series.between(left, right) restituisce True per i valori compresi in [left, right] — estremi inclusi per impostazione predefinita.

import pandas as pd

df = pd.DataFrame({"score":[55,70,85,95,40]})
print(df[df["score"].between(60, 90)])
# 70 and 85

loc per le assegnazioni

Utilizzi sempre loc/iloc per le assegnazioni sul posto, così da evitare il SettingWithCopyWarning.

import pandas as pd

df = pd.DataFrame({"val":[1,2,3,4]})
df.loc[df["val"] > 2, "val"] = 99
print(df)
# 0:1  1:2  2:99  3:99

at e iat per valori singoli

at[label, col] e iat[i, j] forniscono un accesso scalare rapido — più veloce di loc/iloc per i valori singoli.

import pandas as pd

df = pd.DataFrame({"a":[10,20],"b":[30,40]})
print(df.at[0,"a"])    # 10  (by label)
print(df.iat[1,1])     # 40  (by position)

Selezione per dtype

select_dtypes(include/exclude) seleziona le colonne in base al tipo di dati.

import pandas as pd

df = pd.DataFrame({"x":[1,2],"name":["a","b"],"score":[1.5,2.5]})
nums = df.select_dtypes(include=["number"])
print(nums.columns.tolist())   # ['x', 'score']

Rimozione dei duplicati

drop_duplicates() rimuove le righe duplicate. Specifichi subset per confrontare solo determinate colonne.

import pandas as pd

df = pd.DataFrame({"name":["Alice","Bob","Alice"],"age":[30,25,30]})
print(df.drop_duplicates())
# keeps first Alice, removes second

nlargest e nsmallest

Selezioni in modo efficiente le prime o le ultime N righe in base al valore di una colonna.

import pandas as pd

df = pd.DataFrame({"product":["A","B","C","D"],"sales":[500,300,800,200]})
print(df.nlargest(2,"sales"))
# C 800
# A 500

Verifica rapida

Qual è la differenza tra loc e iloc?

Riepilogo

Utilizzi loc[label] per la selezione basata sulle etichette e iloc[i] per quella basata sulla posizione. Filtri le righe con maschere booleane combinate mediante &/|. Utilizzi query() per filtri leggibili, isin() per verificare l'appartenenza e assegni sempre tramite loc per evitare SettingWithCopyWarning.

Domande Frequenti

La lezione «Indicizzazione, filtraggio e maschere booleane» è gratuita?

Sì — il testo completo di «Indicizzazione, filtraggio e maschere booleane» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.

Cosa imparerò in «Indicizzazione, filtraggio e maschere booleane»?

Selezioni righe e colonne con loc, iloc e condizioni booleane. Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Python Academy?

Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Indicizzazione, filtraggio e maschere booleane»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Python Academy?

Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Fondamenti di Series e DataFrame
  2. Indicizzazione, filtraggio e maschere booleane
  3. GroupBy, aggregazione e tabelle pivot
  4. Unione, join e pulizia dei dati
← Torna a Python Academy