Il DataFrame in Pandas è uno degli strumenti più utilizzati in Python quando si lavora con i dati. Se stai iniziando a esplorare l’analisi dei dati, capire bene come funziona un dataframe pandas è un passaggio fondamentale. In questa guida firmata Gedemy, vedremo in modo semplice e concreto che cos’è, perché viene usato così spesso e quali sono le operazioni principali da conoscere per iniziare con sicurezza.
Che cos’è un DataFrame in Pandas e a cosa serve
Un DataFrame è una struttura dati tabellare offerta dalla libreria Pandas. Puoi immaginarlo come una tabella simile a un foglio Excel o a una tabella di database, dove i dati sono organizzati in righe e colonne.
Ogni colonna può contenere un tipo di informazione diverso: numeri, testi, date, valori booleani e molto altro. Questa flessibilità rende il dataframe pandas una soluzione estremamente pratica per raccogliere, leggere, filtrare e trasformare dati in modo ordinato.
Uno dei motivi per cui Pandas è così apprezzato è che permette di lavorare con insiemi di dati anche molto grandi mantenendo una sintassi leggibile. In altre parole, aiuta a fare operazioni complesse con comandi relativamente semplici.
Perché i DataFrame di Pandas sono così importanti nell’analisi dei dati
I DataFrame sono importanti perché rappresentano il punto di partenza di gran parte del lavoro sui dati in Python. Quando importi un file CSV, leggi un file Excel o recuperi dati da una sorgente esterna, molto spesso il risultato finale viene gestito proprio attraverso un dataframe pandas.
La loro utilità si vede soprattutto in queste attività:
- organizzare dati in forma tabellare;
- pulire valori mancanti o duplicati;
- filtrare righe e colonne;
- calcolare statistiche rapide;
- preparare dati per grafici o modelli di machine learning.
Per chi è alle prime armi, il vantaggio principale è la combinazione tra semplicità e potenza. Si può partire da operazioni molto basilari e poi, con il tempo, arrivare a elaborazioni decisamente più strutturate senza cambiare strumento.
Come creare un DataFrame con Pandas in Python
Per creare un DataFrame in Pandas, il primo passo è importare la libreria. In genere si usa l’alias pd, che è diventato uno standard molto comune.
import pandas as pd
Uno dei modi più semplici per costruire un dataframe pandas è partire da un dizionario Python, dove ogni chiave rappresenta il nome di una colonna e ogni lista associata contiene i valori.
import pandas as pd
dati =
{
"Nome": ["Anna", "Luca", "Marco"],
"Età": [25, 30, 28],
"Città": ["Milano", "Roma", "Torino"]
}
df = pd.DataFrame(dati)
print(df)
Il risultato sarà una tabella con tre colonne: Nome, Età e Città. Questo approccio è molto utile quando vuoi fare test rapidi o creare esempi di lavoro.
Un altro caso molto frequente è la creazione di un DataFrame a partire da un file CSV.
import pandas as pd
df = pd.read_csv("studenti.csv")
print(df)
Con questa istruzione, Pandas legge il file e lo trasforma in un oggetto tabellare pronto da analizzare. È una delle operazioni più comuni in assoluto quando si lavora con dati reali.
Come usare un DataFrame Pandas nelle operazioni più comuni
Dopo aver creato il DataFrame, il passo successivo è imparare a esplorarlo. Le prime operazioni servono quasi sempre a capire che tipo di dati contiene e come sono distribuiti.
Per visualizzare le prime righe puoi usare head().
print(df.head())
Per conoscere la struttura generale del DataFrame, inclusi i tipi di dato presenti nelle colonne, è molto utile info().
print(df.info())
Se invece vuoi ottenere alcune statistiche descrittive sulle colonne numeriche, puoi usare describe().
print(df.describe())
Un’altra operazione fondamentale riguarda la selezione delle colonne. Per esempio, se vuoi lavorare solo con la colonna dei nomi, puoi scrivere:
print(df["Nome"])
Se desideri filtrare le righe in base a una condizione, Pandas rende questa operazione molto immediata. Ad esempio, per vedere solo le persone con età superiore a 26 anni:
filtrati = df[df["Età"] > 26]
print(filtrati)
Questa modalità di lavoro è estremamente pratica, perché consente di interrogare i dati con una sintassi chiara e leggibile anche per chi ha poca esperienza.
Metodi utili per manipolare un DataFrame Pandas in modo efficace
La vera forza di un dataframe pandas emerge quando si passa dalla semplice lettura alla manipolazione dei dati. In questa fase puoi modificare valori, rinominare colonne, rimuovere righe inutili o gestire dati mancanti.
Rinominare colonne in un DataFrame Pandas
Capita spesso di avere nomi di colonna poco chiari. Con rename() puoi renderli più leggibili.
df = df.rename(columns={"Età": "Anni"})
print(df.head())
Eliminare colonne o righe non necessarie
Se una colonna non serve, puoi rimuoverla con drop().
df = df.drop(columns=["Città"])
print(df.head())
Lo stesso metodo può essere usato anche per eliminare righe specifiche, a seconda dell’indice.
Gestire i valori mancanti nei dati
Quando si lavora con dataset reali, i valori mancanti sono molto comuni. Pandas offre strumenti semplici sia per individuarli sia per gestirli.
print(df.isnull().sum())
Se vuoi eliminare le righe che contengono valori mancanti, puoi usare:
df = df.dropna()
Se invece preferisci sostituire i valori vuoti con un valore specifico, puoi fare così:
df = df.fillna("Non disponibile")
Ordinare i dati in un DataFrame
L’ordinamento è un’altra operazione frequente. Ad esempio, puoi ordinare i dati per età in ordine crescente.
df = df.sort_values(by="Anni")
print(df)
Aggiungere una nuova colonna calcolata
Un dataframe pandas permette anche di creare nuove colonne a partire da quelle esistenti. Questo è molto utile quando vuoi arricchire il dataset con informazioni derivate.
df["Età tra 5 anni"] = df["Anni"] + 5
print(df)
Questa logica è alla base di molte trasformazioni nei processi di analisi: si parte da dati grezzi e li si rende progressivamente più leggibili, coerenti e utili.
Filtrare e selezionare dati con maggiore precisione
Con il tempo potresti avere bisogno di selezioni più precise. Pandas mette a disposizione strumenti come loc e iloc, molto usati per lavorare rispettivamente con etichette e posizioni.
print(df.loc[0, "Nome"])
print(df.iloc[0, 0])
All’inizio possono sembrare dettagli secondari, ma diventano molto importanti non appena il dataset cresce o le operazioni da svolgere diventano più articolate.