Vai al contenuto principale

Tutorial su pandas in Python: la guida definitiva per principianti

Pronto a iniziare il tuo percorso con pandas? Ecco una guida passo dopo passo per partire.
Aggiornato 3 giu 2026  · 15 min leggi

pandas è probabilmente il pacchetto Python più importante per l’analisi dei dati. Con oltre 100 milioni di download al mese, è lo standard de facto per la manipolazione dei dati e l’analisi esplorativa. La sua capacità di leggere e scrivere in un’ampia gamma di formati lo rende uno strumento versatile per chi lavora in data science. Le sue funzioni di manipolazione dei dati lo rendono uno strumento estremamente accessibile e pratico per aggregare, analizzare e pulire i dati. 

Nel nostro post su come imparare pandas abbiamo discusso il percorso di apprendimento per padroneggiare questo pacchetto. Questo tutorial per principianti coprirà tutti i concetti di base e illustrerà le diverse funzioni di pandas. Puoi anche dare un’occhiata al nostro corso Fondamenti di pandas per ulteriori dettagli. 

Questo articolo è pensato per chi ha conoscenze di base di Python e nessuna esperienza precedente con pandas, per aiutarti a iniziare.

Che cos’è pandas?

pandas è un pacchetto Python per la manipolazione di dati tabellari. Cioè, dati sotto forma di righe e colonne, noti anche come DataFrame. In modo intuitivo, puoi pensare a un DataFrame come a un foglio Excel. 

Le funzionalità di pandas includono trasformazioni dei dati, come ordinare le righe e prendere sottoinsiemi, il calcolo di statistiche riassuntive come la media, il reshaping dei DataFrame e l’unione di più DataFrame. pandas si integra bene con altri popolari pacchetti Python per la data science, spesso chiamati ecosistema PyData, tra cui

A cosa serve pandas?

pandas viene usato lungo tutto il flusso di lavoro dell’analisi dei dati. Con pandas puoi:

  • Importare dataset da database, fogli di calcolo, file CSV (comma-separated values) e altro.
  • Pulire i dataset, ad esempio gestendo i valori mancanti.
  • Ordinare i dataset ristrutturandone la forma in un formato adatto all’analisi.
  • Aggregare i dati calcolando statistiche riassuntive come la media delle colonne, la correlazione tra di esse e altro.
  • Visualizzare i dataset e far emergere insight.

pandas include anche funzionalità per l’analisi di serie temporali e l’analisi di dati testuali.

Vantaggi principali del pacchetto pandas

Senza dubbio, pandas è un potente strumento di manipolazione dati ricco di vantaggi, tra cui:

  • Nato per Python: Python è il linguaggio più popolare al mondo per machine learning e data science.
  • Meno verboso per operazione: Il codice scritto in pandas è meno verboso e richiede meno righe per ottenere il risultato desiderato. 
  • Vista intuitiva dei dati: pandas offre una rappresentazione dei dati estremamente intuitiva che facilita comprensione e analisi.
  • Set di funzionalità ampio: Supporta un’ampia gamma di operazioni: dall’analisi esplorativa alla gestione dei valori mancanti, dal calcolo di statistiche alla visualizzazione di dati univariati e bivariati, e molto altro.
  • Lavora con grandi moli di dati: pandas gestisce con facilità dataset di grandi dimensioni. Offre velocità ed efficienza con dataset dell’ordine di milioni di record e centinaia di colonne, a seconda della macchina.

Come installare pandas?

Prima di entrare nelle funzionalità, installiamo pandas. Puoi evitare questo passaggio registrandoti per un account DataCamp gratuito e usando DataLab, un IDE in cloud che include pandas (insieme ai principali pacchetti Python per la data science) preinstallato.

Esegui e modifica il codice da questo tutorial online

Esegui codice

Installa pandas

Installare pandas è semplice: usa il comando pip install nel tuo terminale. 

pip install pandas

In alternativa, puoi installarlo tramite conda:

conda install pandas

Dopo aver installato pandas, è buona pratica controllare la versione installata per assicurarti che tutto funzioni correttamente:

import pandas as pd
print(pd.__version__)  # Prints the pandas version

Questo conferma che pandas è installato correttamente e ti permette di verificare la compatibilità con altri pacchetti.

Importare dati in pandas

Per iniziare a lavorare con pandas, importa il pacchetto Python come mostrato sotto. L’alias più comune per pandas è pd.

import pandas as pd

Importare file CSV

Usa read_csv() con il percorso del file CSV per leggere un file comma-separated values (consulta il nostro tutorial sull’importazione dei dati con read_csv() per maggiori dettagli).

df = pd.read_csv("diabetes.csv")

Questa operazione carica il file CSV diabetes.csv e genera un oggetto DataFrame di pandas df. Nel corso di questo tutorial vedrai come manipolare questi DataFrame. 

Importare file di testo

La lettura di file di testo è simile ai CSV. L’unica differenza è che devi specificare un separatore con l’argomento sep, come mostrato sotto. Il separatore indica il simbolo usato per separare le righe in un DataFrame. Virgola (sep = ","), spazio bianco (sep = "\s"), tabulazione (sep = "\t") e due punti (sep = ":") sono i più comuni. Qui \s rappresenta un singolo carattere di spazio.

df = pd.read_csv("diabetes.txt", sep="\s")

Importare file Excel (singolo foglio)

Leggere file Excel (sia XLS che XLSX) è semplice con la funzione read_excel(), passando il percorso del file come input.

df = pd.read_excel('diabetes.xlsx')

Puoi anche specificare altri argomenti, come header per indicare quale riga diventa l’intestazione del DataFrame. Il valore predefinito è 0, che indica la prima riga come intestazioni o nomi di colonna. Puoi anche passare i nomi delle colonne come lista tramite l’argomento names. L’argomento index_col (predefinito None) può essere usato se il file contiene un indice di riga.

Nota: In un DataFrame o Series di pandas, l’indice è un identificatore che punta alla posizione di una riga o di una colonna. In sintesi, l’indice etichetta la riga o la colonna di un DataFrame e ti permette di accedere a una riga o colonna specifica tramite il suo indice (lo vedrai più avanti). L’indice delle righe di un DataFrame può essere un intervallo (es. da 0 a 303), una serie temporale (date o timestamp), un identificatore univoco (es. employee_ID in una tabella employees) o altri tipi di dati. Per le colonne, di solito è una stringa (che indica il nome della colonna).

Importare file Excel (più fogli)

La lettura di file Excel con più fogli non è molto diversa. Devi solo specificare un argomento aggiuntivo, sheet_name, a cui puoi passare una stringa con il nome del foglio o un intero per la posizione del foglio (nota che Python usa l’indicizzazione da 0, quindi il primo foglio è accessibile con sheet_name = 0)

# Estrazione del secondo foglio poiché Python usa l'indicizzazione da 0
df = pd.read_excel('diabetes_multi.xlsx', sheet_name=1)

Importare file JSON

In modo analogo a read_csv(), puoi usare read_json() per file JSON passando il nome del file come argomento (per maggiori dettagli leggi questo tutorial su come importare dati JSON e HTML in pandas). Il codice seguente legge un file JSON dal disco e crea un DataFrame df.

df = pd.read_json("diabetes.json")

Se vuoi saperne di più sull’importazione dei dati con pandas, dai un’occhiata a questo cheat sheet sull’importazione di vari tipi di file con Python. 

Importare dati da database SQL

Per caricare dati da un database relazionale, usa pd.read_sql() insieme a una connessione al database.

import sqlite3

# Stabilisce una connessione a un database SQLite
conn = sqlite3.connect("my_database.db")

# Legge i dati da una tabella
df = pd.read_sql("SELECT * FROM my_table", conn)

Per dataset di grandi dimensioni, valuta l’uso di SQLAlchemy per ottimizzare le query.

Importare dati da un’API (formato JSON)

Se i tuoi dati provengono da una web API, pandas può leggerli direttamente usando pd.read_json():

df = pd.read_json("https://api.example.com/data.json")

Se la risposta dell’API è paginata o in formato JSON annidato, potresti aver bisogno di ulteriore elaborazione usando json_normalize() da pandas.io.json.

Esportare dati in pandas

Così come pandas può importare dati da vari formati, ti permette anche di esportarli in diversi formati. Questo capita soprattutto quando i dati vengono trasformati con pandas e devono essere salvati in locale. Di seguito come esportare DataFrame in vari formati.

Esportare un DataFrame in un file CSV

Un DataFrame di pandas (qui usiamo df) si salva come file CSV con il metodo .to_csv(). Gli argomenti includono il nome file con percorso e index – dove index = True implica scrivere l’indice del DataFrame.

df.to_csv("diabetes_out.csv", index=False)

Esportare un DataFrame in un file JSON

Esporta un DataFrame in un file JSON richiamando il metodo .to_json().

df.to_json("diabetes_out.json")

Nota: Un file JSON memorizza un oggetto tabellare come un insieme di coppie chiave-valore. Perciò potresti osservare intestazioni di colonna ripetute in un file JSON.

Esportare un DataFrame in un file di testo

Come per la scrittura di DataFrame in file CSV, puoi chiamare .to_csv(). Le uniche differenze sono che il formato di output è .txt e devi specificare un separatore tramite l’argomento sep.

df.to_csv('diabetes_out.txt', header=df.columns, index=None, sep=' ')

Esportare un DataFrame in un file Excel

Richiama .to_excel() dall’oggetto DataFrame per salvarlo come file “.xls” o “.xlsx”.

df.to_excel("diabetes_out.xlsx", index=False)

Visualizzare e comprendere i DataFrame con pandas 

Dopo aver letto i dati tabellari come DataFrame, avrai bisogno di un’anteprima. Puoi visualizzare un piccolo campione del dataset o un riepilogo dei dati sotto forma di statistiche descrittive.

Come visualizzare i dati con .head() e .tail()

Puoi vedere le prime o le ultime righe di un DataFrame usando rispettivamente i metodi .head() o .tail(). Puoi specificare il numero di righe con l’argomento n (il valore predefinito è 5).

df.head()

First five rows of the DataFrame (df) using .head()

Prime cinque righe del DataFrame 

df.tail(n = 10)

last 10 rows of a Dataframe with df.head()

Prime 10 righe del DataFrame 

Comprendere i dati con .describe()

Il metodo .describe() stampa le statistiche riassuntive di tutte le colonne numeriche, come conteggio, media, deviazione standard, range e quartili delle colonne numeriche.

df.describe()

Get summary statistics with .describe()

Ottieni statistiche descrittive con .describe()

Offre uno sguardo rapido alla scala, alla skewness e all’intervallo dei dati numerici.

Puoi anche modificare i quartili usando l’argomento percentiles. Qui, ad esempio, osserviamo i percentili 30%, 50% e 70% delle colonne numeriche nel DataFrame df.

df.describe(percentiles=[0.3, 0.5, 0.7])

Get summary statistics with specific percentiles  pandas

Ottieni statistiche descrittive con percentili specifici 

Puoi anche isolare particolari tipi di dato nel riepilogo usando l’argomento include. Qui, ad esempio, stiamo riassumendo solo le colonne con tipo di dato integer

df.describe(include=[int])

summary statistics of integer columns only pandas

Ottieni statistiche descrittive solo per le colonne intere 

Allo stesso modo, potresti voler escludere alcuni tipi di dato usando l’argomento exclude.

df.describe(exclude=[int])

get summary statistics of non-integer columns pandas

Ottieni statistiche descrittive solo per le colonne non intere 


Spesso è più comodo visualizzare tali statistiche trasponendole con l’attributo .T.

df.describe().T

Transpose summary statistics pandas

Trasponi le statistiche descrittive con .T


Per maggiori informazioni sulla descrizione dei DataFrame, consulta il seguente cheat sheet.

Impara le basi di pandas

Python for Spreadsheet Users

BeginnerSkill Level
4 h
29.1K learners
Use your knowledge of common spreadsheet functions and techniques to explore Python!
See DetailsRight Arrow

Comprendere i dati con .info()

Il metodo .info() è un modo rapido per dare un’occhiata ai tipi di dato, ai valori mancanti e alla dimensione dei dati di un DataFrame. Qui impostiamo l’argomento show_counts su True, che mostra una vista del numero totale di valori non mancanti in ogni colonna. Impostiamo anche memory_usage su True, che mostra l’uso totale di memoria degli elementi del DataFrame. Quando verbose è impostato su True, stampa il riepilogo completo di .info()

df.info(show_counts=True, memory_usage=True, verbose=True)

image26.png

Comprendere i dati con .shape

Il numero di righe e colonne di un DataFrame può essere identificato usando l’attributo .shape. Restituisce una tupla (righe, colonne) e può essere indicizzato per ottenere solo il numero di righe o solo il numero di colonne.

df.shape # Get the number of rows and columns
df.shape[0] # Get the number of rows only
df.shape[1] # Get the number of columns only
(768,9)
768
9

Ottenere tutte le colonne e i nomi delle colonne

Richiamare l’attributo .columns di un DataFrame restituisce i nomi delle colonne sotto forma di oggetto Index. Ricorda: un indice di pandas è l’indirizzo/etichetta della riga o della colonna.

df.columns

Output of columns

Può essere convertito in una lista usando la funzione list().

list(df.columns)

column names as a list pandas

Verificare i valori mancanti in pandas con .isnull()

Il DataFrame di esempio non ha valori mancanti. Aggiungiamone alcuni per rendere le cose più interessanti. Il metodo .copy() crea una copia del DataFrame originale. Questo serve a garantire che eventuali modifiche alla copia non si riflettano nel DataFrame originale. Usando .loc (ne parleremo più avanti), puoi impostare le righe dalla due alla cinque della colonna Pregnancies su valori NaN, che indicano valori mancanti.

df2 = df.copy()
df2.loc[2:5,'Pregnancies'] = None
df2.head(7)

Rows 2 to 5 are missing pandas

Come vedi, ora le righe da 2 a 5 sono NaN

Puoi verificare se ciascun elemento in un DataFrame è mancante usando il metodo .isnull().

df2.isnull().head(7)

Dato che spesso è più utile sapere quanti valori mancanti hai, puoi combinare .isnull() con .sum() per contare il numero di null in ogni colonna.

df2.isnull().sum()
Pregnancies                 4
Glucose                     0
BloodPressure               0
SkinThickness               0
Insulin                     0
BMI                         0
DiabetesPedigreeFunction    0
Age                         0
Outcome                     0
dtype: int64

Puoi anche fare una doppia somma per ottenere il numero totale di null nel DataFrame.

df2.isnull().sum().sum()
4

Ordinare, effettuare slicing ed estrarre dati in pandas

Il pacchetto pandas offre diversi modi per ordinare, suddividere, filtrare e isolare i dati nei tuoi DataFrame. Qui vedremo i modi più comuni.

Ordinare i dati

Per ordinare un DataFrame in base a una colonna specifica:

df.sort_values(by="Age", ascending=False, inplace=True)  # Sort by Age in descending order

Puoi ordinare per più colonne:

df.sort_values(by=["Age", "Glucose"], ascending=[False, True], inplace=True)

Reimpostare l’indice

Se filtri o ordini un DataFrame, l’indice potrebbe non essere più allineato. Usa .reset_index() per sistemarlo:

df.reset_index(drop=True, inplace=True)  # Resets index and removes old index column

Filtrare i dati usando condizioni

Per estrarre dati in base a una condizione:

df[df["BloodPressure"] > 100]  # Selects rows where BloodPressure is greater than 100

Isolare una colonna usando [ ] 

Puoi isolare una singola colonna usando le parentesi quadre [ ] con il nome della colonna al loro interno. L’output è un oggetto Series di pandas. Una Series di pandas è un array monodimensionale che contiene dati di qualsiasi tipo, inclusi interi, float, stringhe, booleani, oggetti Python, ecc. Un DataFrame è composto da molte Series che fungono da colonne.

df['Outcome']

Isolating one column in pandas

Isolare una colonna in pandas

Isolare due o più colonne usando [[ ]] 

Puoi anche fornire una lista di nomi di colonna all’interno delle parentesi quadre per recuperare più di una colonna. Qui le parentesi quadre sono usate in due modi diversi. Usiamo le parentesi esterne per indicare un sottoinsieme di un DataFrame e quelle interne per creare una lista.

df[['Pregnancies', 'Outcome']]

image15.png

Isolare due colonne in pandas

Isolare una riga usando [ ] 

Una singola riga può essere recuperata passando una Series booleana con un solo valore True. Nell’esempio sotto, viene restituita la seconda riga con index = 1. Qui .index restituisce le etichette delle righe del DataFrame e il confronto le trasforma in un array monodimensionale di booleani.

df[df.index==1]

Isolating one row in pandas

Isolare una riga in pandas

Isolare due o più righe usando [ ] 

Allo stesso modo, due o più righe possono essere restituite usando il metodo .isin() invece dell’operatore ==.

df[df.index.isin(range(2,10))]

Isolating specific rows in pandas

Isolare righe specifiche in pandas

Usare .loc[] e .iloc[] per recuperare righe

Puoi recuperare righe specifiche tramite etichette o condizioni usando .loc[] e .iloc[] ("location" e "integer location"). .loc[] usa un’etichetta per puntare a una riga, colonna o cella, mentre .iloc[] usa la posizione numerica. Per capire la differenza tra i due, modifichiamo l’indice di df2 creato in precedenza.

df2.index = range(1,769)

L’esempio sotto restituisce una Series di pandas invece di un DataFrame. Il 1 rappresenta l’indice (etichetta) della riga, mentre il 1 in .iloc[] è la posizione della riga (prima riga).

df2.loc[1]
Pregnancies                   6.000
Glucose                     148.000
BloodPressure                72.000
SkinThickness                35.000
Insulin                       0.000
BMI                          33.600
DiabetesPedigreeFunction      0.627
Age                          50.000
Outcome                       1.000
Name: 1, dtype: float64
df2.iloc[1]
Pregnancies                  1.000
Glucose                     85.000
BloodPressure               66.000
SkinThickness               29.000
Insulin                      0.000
BMI                         26.600
DiabetesPedigreeFunction     0.351
Age                         31.000
Outcome                      0.000
Name: 2, dtype: float64

Puoi anche recuperare più righe fornendo un intervallo tra parentesi quadre.

df2.loc[100:110]

Isolating rows with loc

Isolare righe in pandas con .loc[]

df2.iloc[100:110]

Isolating rows in pandas with .loc[]

Isolare righe in pandas con .iloc[]

Puoi anche fare subset con .loc[] e .iloc[] usando una lista invece di un intervallo.

df2.loc[[100, 200, 300]]

Isolating rows using a list in pandas with .loc[]

Isolare righe usando una lista con .loc[]

df2.iloc[[100, 200, 300]]

image25.png

Isolare righe usando una lista con .iloc[]

Puoi anche selezionare colonne specifiche insieme alle righe. Qui .iloc[] differisce da .loc[]: richiede la posizione delle colonne e non le etichette.

df2.loc[100:110, ['Pregnancies', 'Glucose', 'BloodPressure']]

Isolating columns using a list in pandas with .loc[]

Isolare colonne in pandas con .loc[]

df2.iloc[100:110, :3]

Isolating columns using in pandas with .iloc[]

Isolare colonne con .iloc[]

Per flussi di lavoro più rapidi, puoi passare l’indice di partenza di una riga come intervallo.

df2.loc[760:, ['Pregnancies', 'Glucose', 'BloodPressure']]

Isolating columns using in pandas with .loc[]

Isolare colonne e righe in pandas con .loc[]

df2.iloc[760:, :3]

image4.png
Isolare colonne e righe in pandas con .iloc[]

Puoi aggiornare/modificare determinati valori usando l’operatore di assegnazione =

df2.loc[df['Age']==81, ['Age']] = 80

Slicing condizionale (che rispetta determinate condizioni)

pandas ti permette di filtrare i dati in base a condizioni sui valori di righe/colonne. Ad esempio, il codice sotto seleziona la riga in cui la pressione sanguigna è esattamente 122. Qui stiamo isolando righe usando le parentesi [ ] come visto nelle sezioni precedenti. Tuttavia, invece di inserire indici di riga o nomi di colonna, inseriamo una condizione in cui la colonna BloodPressure è uguale a 122. Indichiamo questa condizione con df.BloodPressure == 122.

df[df.BloodPressure == 122]

Isolating rows based on a condition in pandas

Isolare righe in base a una condizione in pandas 

L’esempio sottostante recupera tutte le righe in cui Outcome è 1. Qui df.Outcome seleziona quella colonna, df.Outcome == 1 restituisce una Series di valori booleani che determinano quali Outcome sono uguali a 1, quindi [] prende un sottoinsieme di df in cui quella Series booleana è True.

df[df.Outcome == 1]

Isolating rows based on a condition in pandas

Isolare righe in base a una condizione in pandas 

Puoi usare un operatore > per confronti. Il codice seguente recupera Pregnancies, Glucose e BloodPressure per tutti i record con BloodPressure maggiore di 100.

df.loc[df['BloodPressure'] > 100, ['Pregnancies', 'Glucose', 'BloodPressure']]

Isolating rows and columns based on a condition in pandas

Isolare righe e colonne in base a una condizione in pandas 

Pulire i dati con pandas 

La pulizia dei dati è una delle attività più comuni in data science. pandas ti permette di preprocessare i dati per qualsiasi uso, incluso (ma non solo) l’addestramento di modelli di machine learning e deep learning. Usiamo il DataFrame df2 di prima, con quattro valori mancanti, per illustrare alcuni casi d’uso di pulizia dati. Come promemoria, ecco come vedere quanti valori mancanti ci sono in un DataFrame.

df2.isnull().sum()
Pregnancies                 4
Glucose                     0
BloodPressure               0
SkinThickness               0
Insulin                     0
BMI                         0
DiabetesPedigreeFunction    0
Age                         0
Outcome                     0
dtype: int64

Tecnica #1 per gestire i dati mancanti: eliminare i valori mancanti

Un modo per gestire i dati mancanti è eliminarli. Questo è particolarmente utile quando hai molti dati e perdere una piccola porzione non influirà sull’analisi a valle. Puoi usare il metodo .dropna() come mostrato sotto. Qui salviamo i risultati di .dropna() in un DataFrame df3.

df3 = df2.copy()
df3 = df3.dropna()
df3.shape
(764, 9) # this is 4 rows less than df2

L’argomento axis ti permette di specificare se stai eliminando righe o colonne con valori mancanti. L’axis predefinito rimuove le righe contenenti NaN. Usa axis = 1 per rimuovere le colonne con uno o più valori NaN. Nota anche come usiamo l’argomento inplace=True, che ti permette di evitare di salvare l’output di .dropna() in un nuovo DataFrame.  

df3 = df2.copy()
df3.dropna(inplace=True, axis=1)
df3.head()

Dropping missing data pandas

Eliminare dati mancanti in pandas

Puoi anche eliminare sia righe sia colonne con valori mancanti impostando l’argomento how su 'all'

df3 = df2.copy()
df3.dropna(inplace=True, how='all')

Tecnica #2 per gestire i dati mancanti: sostituire i valori mancanti

Invece di eliminare, sostituire i valori mancanti con una statistica riassuntiva o un valore specifico (a seconda del caso d’uso) può essere la scelta migliore. Ad esempio, se manca un valore nella colonna delle temperature che rappresenta le temperature durante i giorni della settimana, sostituire quel valore con la temperatura media della settimana può essere più efficace che eliminarlo del tutto. Puoi sostituire i dati mancanti con la media di riga o di colonna usando il codice seguente.

df3 = df2.copy()
# Get the mean of Pregnancies
mean_value = df3['Pregnancies'].mean()
# Fill missing values using .fillna()
df3 = df3.fillna(mean_value)

Gestire i duplicati

Aggiungiamo alcuni duplicati ai dati originali per imparare come eliminarli da un DataFrame. Qui usiamo il metodo .concat() per concatenare le righe di df2 a df2, aggiungendo duplicati perfetti di ogni riga in df2

df3 = pd.concat([df2, df2])
df3.shape
(1536, 9)

Puoi rimuovere tutte le righe duplicate (impostazione predefinita) dal DataFrame usando il metodo .drop_duplicates().

df3 = df3.drop_duplicates()
df3.shape
(768, 9)

Rinominare le colonne

Un’attività di pulizia dati comune è rinominare le colonne. Con il metodo .rename() puoi usare columns come argomento per rinominare colonne specifiche. Il codice seguente mostra il dizionario per mappare vecchi e nuovi nomi.

df3.rename(columns = {'DiabetesPedigreeFunction':'DPF'}, inplace = True)
df3.head()

Renaming columns in pandas

Rinominare colonne in pandas

Puoi anche assegnare direttamente i nomi delle colonne come lista al DataFrame.

df3.columns = ['Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI', 'DPF', 'Age', 'Outcome', 'STF']
df3.head()

Renaming columns in pandas

Rinominare colonne in pandas

Per approfondire la pulizia dei dati, e per flussi di lavoro più semplici e prevedibili, consulta la seguente checklist, che fornisce un set completo di comuni attività di data cleaning

Analisi dei dati in pandas

Il principale valore aggiunto di pandas risiede nelle sue funzionalità per un’analisi rapida dei dati. In questa sezione ci concentreremo su un insieme di tecniche di analisi utilizzabili in pandas.

Operatori riassuntivi (media, moda, mediana)

Come hai visto in precedenza, puoi ottenere la media di ciascuna colonna con il metodo .mean().

df.mean()

Printing the mean of columns in pandas

Stampa della media delle colonne in pandas

La moda può essere calcolata in modo analogo con il metodo .mode()

df.mode()

image22.png

Stampa della moda delle colonne in pandas

Allo stesso modo, la mediana di ciascuna colonna si calcola con il metodo .median()

df.median()

Printing the median of columns in pandas
Stampa della mediana delle colonne in pandas

Creare nuove colonne a partire da colonne esistenti 

pandas fornisce calcoli veloci ed efficienti combinando due o più colonne come variabili scalari. Il codice seguente divide ciascun valore nella colonna Glucose per il corrispondente valore nella colonna Insulin per calcolare una nuova colonna chiamata Glucose_Insulin_Ratio.

df2['Glucose_Insulin_Ratio'] = df2['Glucose']/df2['Insulin']
df2.head()

Create a new column from existing columns in pandas

Creare una nuova colonna da colonne esistenti in pandas

Contare con .value_counts()

Spesso lavorerai con valori categorici e vorrai contare il numero di osservazioni che ogni categoria ha in una colonna. I valori di categoria possono essere contati con il metodo .value_counts(). Qui, ad esempio, contiamo il numero di osservazioni in cui l’Outcome è diabetico (1) e il numero di osservazioni in cui l’Outcome è non diabetico (0).

df['Outcome'].value_counts()

Using .value_counts() in pandas

Usare .value_counts() in pandas

Aggiungendo l’argomento normalize ottieni proporzioni invece di conteggi assoluti.

df['Outcome'].value_counts(normalize=True)

Using .value_counts() in pandas with normalization

Usare .value_counts() in pandas con normalizzazione


Disattiva l’ordinamento automatico dei risultati usando l’argomento sort (predefinito True). L’ordinamento predefinito è basato sui conteggi in ordine decrescente.

df['Outcome'].value_counts(sort=False)

Using .value_counts() in pandas with normalization

Usare .value_counts() in pandas con ordinamento

Puoi anche applicare .value_counts() a un oggetto DataFrame e a colonne specifiche al suo interno, non solo a una singola colonna. Qui, ad esempio, applichiamo value_counts() a df con l’argomento subset, che accetta una lista di colonne. 

df.value_counts(subset=['Pregnancies', 'Outcome'])

Using .value_counts() in pandas while subsetting columns

Usare .value_counts() in pandas mentre si fa subset delle colonne

Aggregare i dati con .groupby() in pandas

pandas ti permette di aggregare i valori raggruppandoli per valori specifici di colonna. Puoi farlo combinando il metodo .groupby() con un metodo riassuntivo a tua scelta. Il codice sotto mostra la media di ciascuna delle colonne numeriche raggruppate per Outcome.

df.groupby('Outcome').mean()

Aggregating data by one column in pandas

Aggregare i dati per una colonna in pandas

.groupby() consente il raggruppamento per più di una colonna passando una lista di nomi di colonna, come mostrato sotto.

df.groupby(['Pregnancies', 'Outcome']).mean()

Aggregating data by two columns in pandas

Aggregare i dati per due colonne in pandas

Qualsiasi metodo riassuntivo può essere usato insieme a .groupby(), tra cui .min(), .max(), .mean(), .median(), .sum(), .mode() e altri.

Tabelle pivot 

pandas consente anche di calcolare statistiche riassuntive come tabelle pivot. Questo rende più facile trarre conclusioni sulla base di una combinazione di variabili. Il codice seguente imposta le righe come valori unici di Pregnancies, le colonne come valori unici di Outcome e le celle come valore medio di BMI nel gruppo corrispondente.

Ad esempio, per Pregnancies = 5 e Outcome = 0, il BMI medio risulta 31,1.

pd.pivot_table(df, values="BMI", index='Pregnancies', 
               columns=['Outcome'], aggfunc='mean')

Aggregating data by pivoting with pandas

Aggregare i dati con il pivoting in pandas

Visualizzazione dei dati in pandas

pandas fornisce dei wrapper di comodo alle funzioni di plotting di Matplotlib per facilitare la visualizzazione dei tuoi DataFrame. Di seguito vedrai come realizzare le visualizzazioni più comuni con pandas.

Line plot in pandas

pandas ti permette di tracciare le relazioni tra variabili usando i grafici a linee. Di seguito un line plot di BMI e Glucose rispetto all’indice di riga.

df[['BMI', 'Glucose']].plot.line()

Basic lineplot with pandas

Line plot di base con pandas

Puoi scegliere i colori usando l’argomento color.

df[['BMI', 'Glucose']].plot.line(figsize=(20, 10), 
                                 color={"BMI": "red", "Glucose": "blue"})

Basic line plot with pandas, with custom colors

Line plot di base con pandas, con colori personalizzati

Tutte le colonne di df possono anche essere tracciate su scale e assi diversi usando l’argomento subplots.

df.plot.line(subplots=True)

Subplots for line plots with pandas

Sottotrame per line plot con pandas

Bar plot in pandas

Per colonne discrete, puoi usare un grafico a barre sui conteggi delle categorie per visualizzarne la distribuzione. La variabile Outcome con valori binari è visualizzata sotto.

df['Outcome'].value_counts().plot.bar()

Barplots in pandas

Bar plot in pandas

Box plot in pandas

La distribuzione in quartili delle variabili continue può essere visualizzata con un box plot. Il codice seguente ti permette di creare un box plot con pandas.

df.boxplot(column=['BMI'], by='Outcome')

Boxplots in pandas
Box plot in pandas

Per saperne di più su pandas

Il tutorial sopra tocca solo la superficie di ciò che è possibile con pandas. Che si tratti di analizzare, visualizzare, filtrare o aggregare dati, pandas offre un set di funzionalità incredibilmente ricco che accelera qualsiasi flusso di lavoro sui dati. Inoltre, combinando pandas con altri pacchetti di data science, potrai creare dashboard interattive, modelli predittivi con il machine learning, automatizzare flussi di lavoro sui dati e altro ancora. Dai un’occhiata alle risorse qui sotto per accelerare il tuo percorso di apprendimento su pandas:

FAQ su pandas

Che cos’è pandas in Python?

pandas è una potente libreria di manipolazione dei dati in Python. Fornisce le strutture dati e le funzioni necessarie per manipolare dati strutturati, incluse funzionalità per manipolare e analizzare i DataFrame. È uno strumento indispensabile nel mondo dell’analisi dei dati e della data science perché consente una pulizia, trasformazione e analisi dei dati efficienti.

Perché dovrei imparare pandas?

Se lavori con i dati in Python, pandas è praticamente un must. Semplifica la gestione e l’analisi dei dati, così puoi concentrarti sull’estrazione di insight e sulla creazione di valore. Che tu stia gestendo piccoli dataset o dati su larga scala, pandas ti semplificherà la vita grazie a velocità, flessibilità e strutture dati intuitive.

Come installo pandas?

Per installare pandas, ti servono Python e pip (il gestore pacchetti di Python) sul sistema. Puoi quindi installare pandas con il comando: pip install pandas. Se usi un notebook Jupyter in un ambiente come Anaconda, pandas è preinstallato.

Quali sono le strutture dati di base in pandas?

Le due principali strutture dati in pandas sono Series e DataFrame. Una Series è in sostanza una colonna, e un DataFrame è una tabella multidimensionale composta da una raccolta di Series. Queste strutture sono flessibili: possono contenere dati di tipi diversi (per esempio, integer, string, float).

pandas è adatto a grandi dataset?

Sì, pandas è un’ottima scelta per dataset di grandi dimensioni. È progettato per un’analisi efficiente dei dati, inclusi quelli grandi. Tieni però presente che la dimensione dei dati gestibili dipende in parte dalla memoria del tuo sistema. Se lavori con dataset estremamente grandi che non entrano in memoria, potresti dover usare altri strumenti o tecniche (come il chunking o l’uso di dask).

Come importo i dati in pandas?

pandas può leggere dati da vari formati di file come CSV, Excel, database SQL, JSON e altro. I comandi pd.read_csv(), pd.read_excel(), pd.read_sql() e pd.read_json() servono per importare dati dai rispettivi formati. Tutti questi comandi restituiscono un DataFrame, che puoi manipolare con pandas.


Vidhi Chugh's photo
Author
Vidhi Chugh
LinkedIn

Sono una stratega ed eticista dell’AI che lavora all’intersezione tra data science, prodotto e ingegneria per creare sistemi di machine learning scalabili. Inserita tra i "Top 200 Business and Technology Innovators" al mondo, ho la missione di democratizzare il machine learning e di eliminare il gergo tecnico affinché tutti possano partecipare a questa trasformazione.

Argomenti

Altri corsi su pandas

Corso

Introduzione a Python

4 h
6.9M
Impara le basi dell’analisi dei dati con Python in sole 4 ore. Questo corso online ti introduce all’interfaccia di Python e ai pacchetti più usati.
Vedi dettagliRight Arrow
Inizia il corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra altroMostra altro