HOWTO · Pandas

Ottieni il conteggio delle righe di un DataFrame Pandas

Scopri come contare le righe di un DataFrame Pandas con `shape`, `len()` e l’indice, distinguendo il conteggio delle righe da quello delle colonne e contando anche le righe che soddisfano una condizione.

In questa pagina

Per ottenere il numero di righe di un DataFrame Pandas, usa df.shape[0] oppure len(df). L’attributo shape restituisce entrambe le dimensioni: il primo valore è il numero di righe e il secondo quello delle colonne. Per contare solo le righe che soddisfano una condizione, somma una maschera booleana.

Usare DataFrame.shape per ottenere il numero di righe e colonne

DataFrame.shape è un attributo che restituisce una tupla nell’ordine (rows, columns). Seleziona l’indice 0 per ottenere il numero di righe e l’indice 1 per quello delle colonne. È utile quando vuoi esaminare entrambe le dimensioni o ottenere direttamente il numero di righe senza contare i valori di una colonna specifica.

L’esempio seguente crea un piccolo DataFrame e stampa entrambe le dimensioni:

import pandas as pd

data = {
    "Name": ["Alice", "Bob", "Charlie"],
    "Age": [25, 30, 35],
    "City": ["New York", "Los Angeles", "Chicago"],
}
df = pd.DataFrame(data)

print("Rows:", df.shape[0])
print("Columns:", df.shape[1])

Per conoscere solo il numero di righe, l’espressione pertinente è df.shape[0]. Non usare df.shape[1] per questo scopo: restituisce il numero di colonne, quindi in una tabella con tre righe e tre colonne i due conteggi sembrerebbero uguali.

Usare len() o l’indice per ottenere il numero di righe

La funzione integrata len() di Python restituisce il numero di righe quando la applichi a un DataFrame: len(df). È una scelta concisa quando ti serve solo il conteggio delle righe. len(df.index) restituisce lo stesso conteggio misurando l’indice delle righe del DataFrame, mentre len(df.axes[0]) accede alla lunghezza dell’asse delle righe. Per contare le colonne, len(df.axes[1]) corrisponde a df.shape[1].

Queste espressioni contano le righe indipendentemente dalle etichette dell’indice; non contano i valori non mancanti di una colonna selezionata. Per contare le righe che non contengono valori mancanti, filtra prima i dati con df.dropna() e poi usa len(df.dropna()). Per impostazione predefinita, dropna() rimuove le righe che contengono un valore mancante in qualsiasi colonna; passa subset=["Age"] per considerare una sola colonna.

Non è necessario chiamare .len() su un DataFrame: len() è una funzione Python, quindi scrivi len(df) invece di df.len() o .len(df.index). Nell’espressione di conteggio usa il DataFrame che vuoi misurare, ad esempio un DataFrame filtrato.

Contare le righe che soddisfano una condizione

Crea una maschera booleana confrontando i valori di una colonna, quindi chiama .sum() sulla maschera. In una Series booleana, ogni True vale uno e ogni False vale zero: la somma restituisce quindi il numero di righe che soddisfano la condizione. Questo approccio vettoriale è semplice per un singolo confronto e può essere esteso a più condizioni.

import pandas as pd

df = pd.DataFrame({"Name": ["Alice", "Bob", "Charlie"], "Age": [25, 30, 35]})
is_over_28 = df["Age"] > 28
matching_rows = is_over_28.sum()
print(matching_rows)

Per combinare più confronti, racchiudi ciascuno tra parentesi e uniscili con & per AND o | per OR. Ad esempio, (df["Age"] > 28) & (df["Age"] < 35) seleziona le righe in cui l’età rientra in entrambi i limiti; somma la maschera risultante per ottenere il conteggio. Non usare and o or di Python tra intere Series Pandas.

Per contare le righe distinte, rimuovi i duplicati prima del conteggio: len(df.drop_duplicates()). Questo risponde a una domanda diversa dal conteggio di tutte le righe, perché dopo drop_duplicates() i record ripetuti contribuiscono una sola volta. Scegli l’espressione in base a ciò che ti serve: tutte le righe, quelle che soddisfano un filtro o i record distinti.