- analiticas
- Posts
- Importare dati in pandas da un file .csv
Importare dati in pandas da un file .csv
Scopri come aprire e maneggiare dati in formato .csv con Python.
In questa micro-lezione esamineremo i passaggi necessari per importare un file .csv in pandas e le relative possibilità di personalizzazione.
Importare il file
I file .csv (“comma separated values”) sono file che contengono valori separati tra loro da caratteri (di default si tratta di virgole). Pandas dispone di un comando adatto ad importare direttamente i dati contenuti in questo tipo di file.
dati = pd.read_csv('file.csv')
Specificare il percorso al file da importare
Se il file da importare non è situato nella stessa cartella del nostro script, sarà necessario specificare il path del file:
dati = pd.read_csv(r'C:\User\path\file.csv')
Specificare il separatore: sep o delimiter
Il separatore di default di read_csv() è la semplice virgola. Tuttavia, se il nostro file .csv usa un altro separatore (ad esempio il punto e virgola o uno spazio) ci basterà specificarlo.
Chiaramente, per essere quanto più chiari possibile, si può anche specificare la virgola come carattere che separa i valori, nonostante la ridondanza di tale accorgimento.
Ci sono due modi per specificare il separatore: infatto possiamo usare sep o delimiter.
dati = pd.read_csv(r'C:\User\path\file.csv', sep=',')
dati = pd.read_csv(r'C:\User\path\file.csv', sep=';')
dati = pd.read_csv(r'C:\User\path\file.csv', sep=' ')
dati = pd.read_csv(r'C:\User\path\file.csv', delimiter=',')
dati = pd.read_csv(r'C:\User\path\file.csv', delimiter=';')
dati = pd.read_csv(r'C:\User\path\file.csv', delimiter=' ')
sep e delimiter sono sinonimi. Data la brevità del primo, personalmente lo preferisco.
Specificare il separatore quando i valori sono separati da spazi
Cosa accade se per qualche ragione sono due o più spazi a separare i valori nel nostro file .csv? O se si tratta di tabulazioni? In tal caso, puoi usare questo argomento:
dati = pd.read_csv(r'C:\User\path\file.csv', delim_whitespace=True)
delim_whitespace si applica a qualsiasi spazio bianco, sia esso multiplo, una tabulazione ecc. Questo argomento funziona con valori booleani (True o False).
Il valore di default è False. Quindi, a meno che non si vada a specificare che a separare il valori nel nostro file .csv siano degli spazi, questo argomento non sarà valido.
Specificare la riga di intestazione: header
A volte può capitare di voler specificare quale riga del file .csv andrà a costituire l’intestazione del nostro dataframe. In questo caso, non ci resta che includere l’argomento corrispondente nel comando di importazione del file .csv.
dati = pd.read_csv(r'C:\User\path\file.csv', sep=',', header=1)
In questo caso, le riga d’intestazione del nostro dataframe sarà la seconda riga del file .csv.
Nota bene: nel linguaggio di programmazione Python si conta a partire dal numero zero. Di conseguenza quando attribuiamo il valore 0 all’argomento header indichiamo la prima riga.
Specificare la colonna che sarà l’indice del dataframe: index_col
Pandas aggiunge automaticamente una colonna che funge da indice al nostro dataframe. Ipotizziamo invece di voler che sia la colonna una colonna già esistente nel nostro set di dati ad essere l’indice del dataframe.
Per assegnare a questa colonna la funzionalità di indice, dobbiamo usare l’argomento index_col.
#attribuire l'indice partendo dalla posizione della colonna
dati = pd.read_csv(r'C:\User\path\file.csv', index_col=0)
#attribuire l'indice partendo dal nome della colonna
dati = pd.read_csv(r'C:\User\path\file.csv', index_col=['colonna_1'])
In entrambi i casi abbiamo attribuito alla prima colonna del nostro dataframe il ruole di indice: essa non sarà modificabile come le altre e non verrà considerata come facente parte del set di dati.
Scegliere le colonne da importare: usecols
Come facciamo a importare in pandas solo alcune colonne? In questo caso ci basterà utilizzare un l’argomento usecols.
Ciò ci permette di indicare le colonne del nostro set di dati che vogliamo utilizzare. Le altre, saranno automaticamente escluse dall’importazione.
# specificare le colonne da importare in base alla loro posizione
dati = pd.read_csv(r'C:\User\path\file.csv', usecols=[0])
# specificare le colonne da importare in base al loro nome
dati = pd.read_csv(r'C:\User\path\file.csv', usecols=['colonna_1'])
Nel caso volessimo specificare più colonne da importare, non ci resta che includerle tutte nel nostro codice:
# specificare le colonne da importare in base alla loro posizione
dati = pd.read_csv(r'C:\User\path\file.csv', usecols=[0,1])
# specificare le colonne da importare in base al loro nome
dati = pd.read_csv(r'C:\User\path\file.csv', usecols=['colonna_1','colonna_2'])
Specificare delle righe da escludere: skiprows
A volte capita che i il nostro file .csv contenga delle righe che non fanno parte del nostro set di dati.
Non ci resta che utilizzare l’argomento skiprows per specificare le righe del file da ignorare durante l’import.
dati = pd.read_csv(r'C:\User\path\file.csv', skiprows=3)
In questo esempio, stiamo excludendo dal nostro dataset da importare le prime tre righe.a
Se ti stai chiedendo come puoi Importare dati da un file Excel (.xlsx) con pandas, clicca pure sul link per andare alla micro-lezione dedicata!
Per ricevere micro-lezioni come questa via email, iscriviti alla newsletter!