2.3.1 - Introduzione a Pandas¶
Notebook di accompagnamento
Per questa lezione esiste un notebook di accompagnamento, reperibile a questo indirizzo.
Notebook di accompagnamento
Per questa lezione esiste un notebook di accompagnamento, reperibile a questo indirizzo.
Notebook di accompagnamento
Per questa lezione esiste un notebook di accompagnamento, reperibile a questo indirizzo.
Pandas viene usata per la lettura ed elaborazione dei dati provenienti da sorgenti di vario tipo, come ad esempio file CSV o Excel, ma anche file di testo e database. Vediamo quindi brevemente come usare la libreria, tenendo presente che ne approfondiremo il funzionamento anche durante le lezioni successive.
Installazione e configurazione di Pandas¶
Al solito, il primo passo è sempre quello di installare la libreria nel nostro ambiente di lavoro:
Possiamo quindi importare la libreria all'interno dei nostri script o notebook:
Pandas e la gestione dei dati¶
Pandas gestisce prevalentemente dati strutturati sotto forma tabellare, ossia simili a quelli comunemente contenuti all'interno dei fogli di calcolo o nei database. Questi dati sono sicuramente tra i più diffusi ed utilizzati nel contesto dell'analisi dei dati, ovviamente escludendo le immagini: in tal senso, per modellarli, Pandas ci mette a disposizione un'apposita struttura denominata DataFrame
.
I dataframe sono quindi delle strutture atte a contenere dati di ogni tipo. Questi sono normalmente organizzati in righe e colonne, in maniera del tutto analoga a quella in cui sono organizzati i fogli di calcolo ed i database. Importante anche sottolineare come, per convenzione, le singole righe rappresentino i campioni del dataset, mentre le colonne siano associati ai valori assunti dalle diverse caratteristiche, o feature, di ciascun campione.
Facciamo un esempio usando il dataset Titanic, che è uno tra i più utilizzati a scopi di sperimentazione. Per prima cosa, generiamo un dataframe rappresentativo dei dati contenuti nel dataset, leggendo il file titanic.csv
, che possiamo scaricare a questo link. Per leggere i dati, dovremo utilizzare il metodo read_csv()
, cui passeremo il percorso relativo del file:
Usiamo il metodo head()
per mostrare a schermo le prime cinque righe del dataframe.
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
4 5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S
Vediamo rapidamente che ad ogni passeggero sono associate delle feature, di cui possiamo inferire il tipo (lo verificheremo a breve):
Feature | Descrizione | Tipo |
---|---|---|
PassengerId | Identificativo univoco del passeggero. | Intero |
Survived | Stabilisce se il passeggero è sopravvissuto. | Intero/booleano |
Pclass | Rappresenta la classe del passeggero | Intero |
Name | Nome completo del passeggero | Stringa |
Sex | Genere del passeggero | Stringa |
Age | Età del passeggero | Decimale |
SibSp | Crasi di "Siblings/Spouses", rappresenta il numero di fratelli/sorelle/coniugi a bordo per ogni passeggero | Intero |
Parch | Crasi di "Parents/Children", rappresenta il numero di genitori/figli a bordo per ogni passeggero | Intero |
Ticket | Rappresenta l'identificativo per il ticket del passeggero. | Stringa |
Tariffa | Rappresenta la tariffa pagata dal passeggero. | Decimale |
Cabin | Rappresenta la cabina in cui allogiava il passeggero. | Stringa |
Embarked | Rappresenta il punto di imbarco del passeggero. | Stringa |
Verifichiamo che le nostre ipotesi sul tipo di dato siano corrette; per farlo, possiamo usare la proprietà dtypes
del dataframe:
>>> df.dtypes
PassengerId int64
Survived int64
Pclass int64
Name object
Sex object
Age float64
SibSp int64
Parch int64
Ticket object
Fare float64
Cabin object
Embarked object
dtype: object
Notiamo subito la presenza di tre tipi di colonna, ovvero int64
, float64
e object
. Laddove i primi due sono autoesplicativi, merita una particolare menzione il tipo object
, che viene associato automaticamente a tutte le stringhe.
Suggerimento
Normalmente, usare il tipo object
comporta diversi problemi nella successiva fase di analisi dei dati. Potrebbe quindi essere una buona idea parametrizzare la funzione read_csv()
mediante il parametro dtype
, che accetta un dizionario che specifica il tipo di una o più colonne. Ad esempio, se volessimo specificare che i nomi sono delle stringhe, potremmo usare il tipo string
:
Appare chiaro come il dataset ci illustri numerose proprietà per ogni passeggero imbarcato. Queste potranno quindi essere utilizzate per un'analisi approfondita della struttura dei dati sotto diversi aspetti e punti di vista; ne parleremo più estesamente nel seguito.