Pandas è una potente libreria open-source per la manipolazione e l'analisi dei dati in Python. È ampiamente utilizzata nel mondo dell’analisi dati, del machine learning e della data science per la gestione di dati strutturati e tabellari. La libreria fornisce strumenti flessibili e intuitivi per importare, esplorare, pulire, trasformare e analizzare dati in modo efficace.
Caratteristiche
Pandas offre diverse caratteristiche che la rendono una libreria indispensabile per l’analisi dei dati:
- Strutture Dati Potenti: Pandas introduce due principali strutture dati, il DataFrame e la Serie. Il DataFrame è una tabella bidimensionale simile a un foglio di calcolo, mentre la Serie è un array unidimensionale con etichette.
- Importazione e Esportazione dei Dati: Pandas supporta una vasta gamma di formati dati, inclusi CSV, Excel, SQL, JSON, HTML e molti altri. È possibile importare dati da molte fonti diverse e esportare i risultati in vari formati.
- Indicizzazione Etichettata: Pandas consente di assegnare etichette personalizzate alle righe e alle colonne dei DataFrame, semplificando la ricerca e l’accesso ai dati.
- Operazioni Flessibili: Pandas offre numerosi metodi per la manipolazione dei dati, tra cui selezione, filtraggio, ordinamento, raggruppamento, aggregazione e molto altro. È possibile applicare queste operazioni in modo semplice e intuitivo.
- Gestione di Dati Mancanti: La libreria offre strumenti avanzati per la gestione dei dati mancanti, consentendo di riempire, rimuovere o sostituire i valori mancanti in modo efficace.
- Integrazione con NumPy: Pandas è integrato con NumPy, un’altra libreria fondamentale per l’analisi dei dati in Python. Ciò significa che è possibile utilizzare le funzionalità di NumPy all’interno di Pandas.
DataFrame
Un ==DataFrame
è una struttura dati bidimensionale simile a una tabella o uno spreadsheet. È composto da righe e colonne, e ogni colonna può contenere dati di tipo diverso==.
Un DataFrame
è fondamentalmente una raccolta di Serie
, dove ogni colonna rappresenta una Serie. Ecco alcune caratteristiche principali dei DataFrame
:
- Dati Ibridi: I
DataFrame
possono contenere dati eterogenei, il che significa che le colonne possono contenere diversi tipi di dati. - Indici delle Righe e Etichette delle Colonne: I DataFrame hanno indici per le righe e etichette per le colonne, consentendo un accesso flessibile ai dati.
- Operazioni su Colonne e Righe: È possibile eseguire operazioni su singole colonne o su righe intere del DataFrame.
- Utilizzo: I
DataFrame
sono ampiamente utilizzati per rappresentare e analizzare dati tabellari, come i dati di un database o di un file CSV. Sono la struttura dati più comunemente utilizzata in Pandas.
Ecco come creare un DataFrame in Pandas:
I DataFrame
offrono una flessibilità incredibile nella gestione e nell’analisi dei dati: è possibile eseguire una vasta gamma di operazioni, tra cui filtraggio, selezione, raggruppamento, aggregazione, calcolo di statistiche, operazioni di join e molto altro.
read_csv
L’operazione più comune per creare un dataframe è tramite un csv tramite il comando read_csv
Qualora il csv contenga già una colonna per l’indice, per esempio un csv di una tabella compresa la colonna id
possiamo utilizzare il parametro index_col
per esplicitare la colonna contenente tale indice
Informazioni sul dataframe
shape
: permette di sapere numero di righe e colonnedescribe
: offre panoramica dei dati, quindi, per ogni colonna, il numero di elementi, la media, la std e il numero di elementi al 25, 50 e 75 percentile, oltre che al numero più alto.
Indexing
Index based
Pandas permette di selezionare un dati a partire dalla loro posizione all’intero del dataframe usando la funzione iloc
utilizzando l’indice di dove si trova il dato che mi serve.
Attenzione che la notazione è prima la riga e successivamente la colonna e non il contrario come avviene in python classico.
Alcuni esempi:
- Ottenere la prima riga:
data.iloc[0]
- Ottenere la prima colonna:
data.iloc[:, 0]
- Ottieni le prime 3 righe della prima colonna:
data.iloc[:3, 0]
- Ottieni le ultime 5 righe della prima colonna:
data.iloc[-5:, 0]
- Ottieni la seconda e la terza riga della prima colonna:
data.iloc[1:3, 0]
iloc
utilizza lo schema di indicizzazione stdlib di Python, in cui il primo elemento dell’intervallo è incluso e l’ultimo escluso. Quindi 0:10
selezionerà le voci 0,...,9
.
Label based
Pandas permette di selezionare un dati a partire dalla loro posizione all’intero del dataframe usando la funzione loc
utilizzando la label di dove si trova il dato che mi serve.
Per esempio se voglio ottenere il contenuto della cella della colonna country
della prima riga di un dataframe scrivo reviews.loc[0, 'country']
.
Dato che spesso i dataset hanno label spesso è più comodo usare il metodo loc
, per esempio qui seleziono solo un sottoinsieme di colonne identificate da un name: `reviews.loc[:, [‘taster_name’, ‘taster_twitter_handle’, ‘points’]]
loc
, indicizza in modo inclusivo a differenza di iloc
. Quindi 0:10
selezionerà le voci `0,…,10.
loc
può essere usata anche insieme a dei filtraggi, per esempio per sapere tutti i vini italiani con punteggio maggiore di 90 posso fare reviews.loc[(reviews.country == 'Italy') & (reviews.points >= 90)]
.
Posso usare anche il metodo isin
per scrivere un filtraggio in OR, per esempio questo comando fornisce tutti i vini italiani o francesi reviews.loc[reviews.country.isin(['Italy', 'France'])]
.
Operazioni Comuni
Ecco alcune delle operazioni comuni eseguite su Serie
e DataFrame
in Pandas:
Selezione di una colonna
Una delle operazioni più comuni è la selezione di una colonna, per esempio se voglio selezionare la colonna su cui voglio fare le predizioni. Esistono due notazioni per selezionare una colonna
e la più moderna è sicuramente la dot-notation.
Selezione di una serie di colonne
Qualora voglia considerare solo un sottoinsieme delle colonna del dataframe di partenza posso definire il sottoinsieme come una array di stringhe di nomi e poi usare la seguente sintassi:
Primi n dati
Filtraggio dei Dati:
Operazioni Aggregazione:
Aggiunta di Nuove Colonne:
Raggruppamento e Aggregazione:
Unione di DataFrame:
Series
Una Serie
in Pandas è una struttura dati unidimensionale che può contenere dati di qualsiasi tipo ma omogenei, tra cui numeri interi, float, stringhe, oggetti complessi e altro. Come fosse un array di un linguaggio fortemente tipizzato.
Ogni elemento in una Serie è associato a un’etichetta o un indice.
Gli indici possono essere etichette personalizzate o interi predefiniti che iniziano da zero.
Ecco alcune caratteristiche principali delle Serie
:
- Dati Omogenei: Le Serie contengono dati omogenei, il che significa che tutti gli elementi devono essere dello stesso tipo di dati.
- Etichette degli Indici: Ogni elemento della Serie ha un’etichetta di indice che consente di accedere a un elemento specifico.
- Operazioni Vettoriali: Le operazioni su Serie in Pandas sono in genere vettoriali, il che significa che è possibile eseguire operazioni su tutta la Serie in modo efficiente.
- Utilizzo: Le Serie sono utilizzate per rappresentare una singola colonna di dati e sono spesso utilizzate in contesti in cui è necessario lavorare con una singola dimensione di dati, ad esempio le altezze di una lista di persone.
Ecco come creare una Serie in Pandas:
Operazioni
Pandas permette di eseguire varie operazioni sui dati, tra cui il filtraggio dei dati, il raggruppamento, l’aggregazione e il calcolo di statistiche.
Filtraggi
Ad esempio, è possibile filtrare le righe del DataFrame
in base a una condizione:
Raggruppamenti
È possibile raggruppare i dati in base a una colonna e calcolare la media:
Gestione dei Dati Mancanti
Pandas fornisce strumenti per gestire dati mancanti, inclusi i metodi dropna()
per rimuovere righe o colonne con dati mancanti e fillna()
per riempire valori mancanti con dati specifici.
Rimozione di righe o colonne
La funzione drop
in Pandas viene utilizzata per eliminare righe o colonne da un DataFrame. Per farlo, è necessario specificare l’etichetta delle righe o delle colonne che si desidera rimuovere
Eliminare righe
Output:
A B
0 1 4
2 3 6
Eliminare colonne
Output:
A
0 1
1 2
2 3
Nell’esempio sopra, abbiamo rimosso la colonna ‘B’ dal DataFrame df
.
È importante notare che abbiamo specificato axis=1
per indicare che vogliamo eliminare una colonna. Se non specifichi axis
, il comportamento predefinito sarà eliminare righe.
Puoi anche eliminare più righe o colonne passando una lista di etichette: