• analiticas
  • Posts
  • Importare dati da un file Excel (.xlsx) con pandas

Importare dati da un file Excel (.xlsx) con pandas

Iniziare a lavorare con i dati con Python non è mai stato così semplice.

Utilizzare Python e la libreria pandas per analizzare dati prevede un banale requisito: i dati! Da dove li prendiamo? Dove li importiamo? Cosa ne facciamo?

I dati che andremo ad importare nel nostro script andranno a costituire un dataframe (spesso abbreviato come df).

Importare il file

I file .xlsx sono file nel formato standard di Microsoft Excel. Pandas dispone di un comando adatto ad importare direttamente i dati contenuti in questo tipo di file.

dati = pd.read_excel('file.xlsx')

Importante: se usi una versione di pandas inferiore alla 1.2 dovrai specificare l'argomento engine per leggere un file .xlsx. Il pacchetto openpyxl dovrà essere scaricato e installato separatamente. In alternativa, puoi aggiornare pandas alla versione 1.2 o superiore. Ecco come leggere un file .xlsx con una versione di pandas inferiore alle 1.2:

dati = pd.read_excel('file.xlsx', engine='openpyxl')

Specificare il percorso al file da importare

Il caso visto finora è una situazione ideale: il file da importare si trova nella stessa cartella dove abbiamo salvato il nostro script. Se questo non è il caso, dobbiamo specificare il path del file:

dati = pd.read_excel(r'C:\User\path\file.xlsx')

Questo è tutto quello ciò che occorre per importare i dati da un file Excel in un programma Python, usando la libreria pandas.

Specificare il foglio del file Excel : sheet_name

Il comando read_excel() legge sempre i dati che si trovano sul primo foglio del file Excel. Se vogliamo personalizzare questo aspetto, dobbiamo specificare il parametro sheet_name.

Inoltre, è possibile selezionare il foglio sia in base al suo nome che in base alla sua posizione all’interno del file Excel.

# selezionare il foglio in base al suo nome

dati = pd.read_excel(r'C:\User\path\file.xlsx', sheet_name='foglio-1')

dati = pd.read_excel(r'C:\User\path\file.xlsx', sheet_name='foglio-2')
# selezionare il foglio in base alla sua posizione

dati = pd.read_excel(r'C:\User\path\file.xlsx', sheet_name=0)

dati = pd.read_excel(r'C:\User\path\file.xlsx', sheet_name=1)

Nota bene: nel linguaggio di programmazione Python si conta a partire dal numero zero. Di conseguenza quando attribuiamo il valore 0 all’argomento sheet_name indichiamo il primo foglio.

Quando l’argomento sheet_name non viene specificato, il suo valore di default corrisponde a zero. Questo vuol dire che il comando leggerà il primo foglio del file Excel, qualunque esso sia.

Specificare la riga di intestazione: header

A volte può capitare di voler specificare quale riga del foglio Excel andrà a costituire l’intestazione del nostro dataframe. In questo caso, non ci resta che includere l’argomento header:

dati = pd.read_excel(r'C:\User\path\file.xlsx', header=1)

In questo caso, stiamo prendendo la seconda riga del foglio Excel (header = 1) come intestazione.

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_excel(r'C:\User\path\file.xlsx', index_col=0)
#attribuire l'indice partendo dal nome della colonna

dati = pd.read_excel(r'C:\User\path\file.xlsx', index_col="colonna-1")

Il valore di default dell’argomento index_col è “None” (“nessuno” in inglese"). Ecco perché pandas ne crea una supplementare affinché il dataframe sia dotato di un indice.

Cambiare il nome alle colonne: names

A volte può capitare di voler cambiare il nome alle colonne del dataframe. Questa è un’operazione che può essere eseguita sin dal momento dell’importazione dei dati. Basta solo specificare l’argomento names.

dati = pd.read_excel(r'\User\path\file.xlsx', names=['nome1', 'nome2', 'nome3'])

Escludere delle righe all’inizio: skiprows

A volte capita che i il nostro file .xlsx contenga delle righe che non fanno parte del nostro set di dati subito sopra la tabella che vogliamo importare. In questo caso, l’argomento skiprows ci permetterà di non importarle.

dati = pd.read_excel(r'\User\path\file.xlsx', skiprows=4)

Eseguendo questa linea di codice, importeremo i dati dal nostro file Excel escludendo le prime 4 righe del foglio di calcolo.

Il valore di default dell’argomento skiprows é uguale a zero. Questo vuol dire che, a meno che non gliene attribuiamo un altro, nessuna riga verrà esclusa.

Escludere delle righe alla fine: skipfooter

Analogamente all’esempio precedente, a volte può capitare di voler escludere alcune righe alla fine del nostro set di dati sul file Excel (ad esempio, se vi sono delle note). A questo scopo, dobbiamo specificare un valore per l’argomento skipfooter.

dati = pd.read_excel(r'\User\path\file.xlsx', skipfooter=2)

In questo modo importeremo i nostri dati escludendo le ultime due righe del set di dati.

Il valore di default dell’argomento skipfooter è uguale a zero. Se non gli attribuiamo un valore differente, nessuna riga verrà esclusa dall’importazione.

Convertire numeri interi in decimali: convert_float

L’argomento convert_float è un po’ più di nicchia rispetto a quelli esaminati fin qui e serve per convertire i numeri interi in decimali, mentre importiamo dei dati da un file Excel.

Questo può avvenire perché tutti i numeri, indipendentemente dal fatto che abbiano valori o meno dopo la virgola, sono classificati come float da Excel (float è il tipo di dati corrispondente ai numeri con la virgola). Quindi il numero 2 corrisponde in realtà a 2,0.

Quando importiamo dei dati tramite la libreria pandas, Python converte automaticamente tutti i numeri senza valori dopo la virgola in integers. Per far sì che questo non avvenga, e si conservi la tipologia float, dobbiamo cambiare il valore di default dell’argomento convert_float.

dati = pd.read_excel(r'\User\path\file.xlsx',sheet_name=0, convert_float=False)

Se ti stai chiedendo come puoi Importare dati in pandas da un file .csv, clicca pure sul link per andare alla micro-lezione dedicata!

Per ricevere micro-lezioni come questa via email, iscriviti alla newsletter!