La libreria Pandas di Python fornisce potenti strutture dati come Series e DataFrame, permettendo di importare, pulire, manipolare, analizzare e visualizzare dati in modo semplice ed efficiente, ed è oggi lo standard de facto per la data analysis in Python
Pandas è considerato il pilastro dell’analisi dei dati in Python, grazie a:
- performance elevate (molto codice critico scritto in C/Cython)
- sintassi intuitiva e poco verbosa
- enorme ecosistema di tutorial, documentazione e community
- compatibilità con strumenti di machine learning e visualizzazione
Cosa fa pandas (in pratica)
- DataFrame e Series — strutture dati ottimizzate per gestire tabelle e serie.
- Importazione dati — lettura da CSV, Excel, SQL, JSON, Parquet e molti altri formati.
- Pulizia e trasformazione — gestione dei valori mancanti, filtri, ordinamenti, reshaping, pivot.
- Analisi statistica — calcolo di medie, mediane, aggregazioni, correlazioni.
- Time series — funzioni avanzate per date, frequenze, finestre mobili, lag.
- Integrazione con l’ecosistema PyData — NumPy, Matplotlib, Seaborn, scikit‑learn
Series
Una Series di pandas è una struttura dati unidimensionale etichettata, capace di contenere qualsiasi tipo di valore (interi, float, stringhe, oggetti Python) e dotata di un indice che permette di identificare ogni elemento
import Pandas as pd
help(pd.Series)
Con questo comando possiamo vedere le informazioni di una serie
index = ['Mario', 'Carlo', 'Giovanna']
data = [ 25, 30, 28]
ages = pd.Series(data = data, index = index)
Mario 25
Carlo 30
Giovanna 28
Le assegnazioni sono facoltative, l’importante è l’ordine: prima data e poi le key.
Ora potremo avere lo stesso output sia che richiamiamo l’indice, sia che chiamiamo la posizione del dato.
ages[0] # posizione
ages['Mario'] # indice
Possiamo creare delle serie anche attraverso dei dizionari:
ages = { 'Mario' : 25, 'Carlo': 30, 'Giovanna': 28 }
pd.Series(ages)
Visualizziamo tutti gli indici della serie:
sales_q1.keys()
Operazioni con le serie
con Python:
(1,2)*2
(1,2,1,2)
con Numpy:
no.array([1,2])
array([2,4])
con Pandas:
Mentre con Python non è possibile fare operazioni sugli array, Numpy e Pandas sono stati pensati per ovviare al problema.
series*100
Non si possono però sommare serie con valori diversi, perché quando non avremo in una delle due serie un dato Pandas ci restituirà NaN invece di zero. Viene impostato un fill_value come valore di default. Si farà perciò:
sales_q1.add(sales_q2, fill_value = 0)
Per controllare invece che i valori siano del tipo corretto:
sales_q1.dtype
Si può definire a prescindere il valore quando creiamo la serie:
ages = pd.Series(data = data, index = index, dtype = "int64" )
Dataframe
Una DataFrame è una tabella etichettata, simile a un foglio Excel o a una tabella SQL, che permette di manipolare, filtrare, trasformare e analizzare dati in modo efficiente.
- Struttura bidimensionale — righe e colonne con etichette.
- Colonne come Series — ogni colonna è una Series con un proprio dtype.
- Indice delle righe — permette selezioni rapide e personalizzate.
- Operazioni vettoriali — filtri, aggregazioni, join, merge, pivot.
- Import/export dati — CSV, Excel, SQL, JSON, Parquet, ecc.
- integrazione con NumPy, Matplotlib, Seaborn, scikit‑learn
pd.DataFrame(data, index, columns, dtype = "int64" )
Per leggere i contenuti di un file:
df = pd.read_csv("file.csv")
Per visualizzare le colonne:
df.columns
df.index() # OUTPUT: RangeIndex(start = 0, stop = 244, step = 1)
df.head() # visualizza le prime righe
df.head(10) # visualizza le prime 10 righe
df.tail() # visualizza le righe finali
df.info()
df.describe()
df.describe().traspose()
Lavorare sulle colonne
df['total']
df[['total','tip']]
Operazioni sulle colonne
df['tip'] + df['total']
df['percentage'] = 100*df['tip'] / df['total']
Viene aggiunta una colonna percentuale lla fine. Se la colonna è già presente, viene sovrascritta nella posizione già presente.
Si può arrotondare la virgola
np.round(df['total']
Si possono eliminare colonne
df = df.drop('tip', axis = 1)
axis di default è a zero (righe)
df.shape[0]
Imposto l’indice con una colonna. ATTENZIONE! ora non sarà più il nome della colonna e non si potrà richiamare!
df.set_index('paymentID')
df.reset_index() # torna ad essere una normale colonna
ATTENZIONE!! de non ridefinite df = le modifiche non saranno permanenti!!
df.iloc[0] # info sulla riga
df.iloc[1.] # ATTENZIONE!! senza punto darà errore!
df.loc['Sun90904u3'] # info sull'ID
df.iloc[0:4] # per prendere più righe
df.loc[['ID12','ID38']]
df.drop('ID23', axios = 0) # toglie la riga selezionata
Filtrare dati
bool_series = df['total'] > 40
df[bool_series] # filtra solo ii dati che hanno valore superiore a 40
df[df['sex'] = 'Female'] # filtra i dati relativi alle donne
Condizioni multiple
df[ ( df['total']>30 ) & ( df['sex'] = 'Female' ) ]
options = ['Sat','Sun']
df['day'].isin(options)

Lascia un commento