- analiticas
- Posts
- Trasforma i tipi di dati con astype() in pandas
Trasforma i tipi di dati con astype() in pandas
Come cambiare facilmente i tipi di dati delle tue colonne
Una delle primissime tappe dell’analisi dei dati consiste nel controllarne la qualità ed eventualmente sistemarli.
In questa micro-lezione esploreremo l'uso del metodo astype()
in pandas, uno strumento fondamentale per la gestione dei tipi di dati nei nostri dataframe.
Infatti, a volte capita di dover cambiare il tipo di dati di una colonna. Ad esempio, potremmo dover convertire una colonna con dei numeri decimali in numeri interi, o viceversa.
Il metodo astype()
di pandas è la soluzione a molte di queste situazioni.
Il programma della micro-lezione
La libreria e il dataframe
Iniziamo importando la libreria pandas
:
import pandas as pd
Creiamo un dataframe con tre colonne (se hai già dei dati su un foglio Excel e vuoi importarli con pandas, dai un’occhiata a questa micro-lezione):
df = pd.DataFrame({
'Nome': ['Sara', 'Luigi', 'Mario'],
'Eventi': ['7', '3', '9'],
'Spese': [87.0, 22.0, 91.0]
})
Il nostro dataframe avrà questo aspetto:
Nome | Eventi | Spese |
---|---|---|
Sara | 7 | 87.0 |
Luigi | 3 | 22.0 |
Mario | 9 | 91.0 |
Come visto nella micro-lezione sui 5 comandi per esplorare i dati con pandas, possiamo scoprire il tipo di dati di ogni colonna eseguendo il comando dtypes
:
df.dtypes
Ed ecco qui il risultato:
Nome object
Eventi object
Spese float64
dtype: object
Ma cosa significa?
object
indica un tipo di dati generico, dalle molteplici applicazioni. Ad esempio pandas interpreta comeobject
le colonne contenenti stringhe di testo o dati misti (lettere e numeri).float64
è il tipo di dati dei numeri decimali, siano essi positivi o negativi. Il numero 64 indica che i numeri decimali sono salvati usando 64 bit di memoria.
Usiamo astype()
per convertire tipi di dati
La colonna “Eventi” del nostro dataframe contiene dei numeri che però non sono letti come tali da pandas.
Andiamo dunque a trasformare i dati della colonna “Eventi” in numeri interi:
df['Eventi'] = df['Eventi'].astype(int)
Eseguendo il comando df.dtypes
possiamo osservare il cambiamento:
Nome object
Eventi int64
Spese float64
dtype: object
La colonna “Eventi” è adesso di tipo int64
che indica i numeri interi.
Convertiamo più colonne contemporaneamente
Possiamo anche cambiare i valori di più colonne in una sola operazione. Immaginiamo di voler convertire i valori delle colonne “Eventi” e “Spese” in numeri interi.
Per farlo, dobbiamo usare un dizionario all’interno del metodo astype()
. Ecco come fare:
df = df.astype({'Eventi': int, 'Spese': int})
Ed ecco i tipi di dati delle colonne del nostro dataframe:
Nome object
Eventi int64
Spese int64
dtype: object
Attenzione agli imprevisti
In alcuni casi la conversione potrebbe non essere possibile.
Ad esempio, non possiamo convertire i valori di una di colonna che contiene una stringa di testo (ad esempio “abc”) in numeri. Inoltre, in alcune situazioni, la conversione di colonne contenenti valori nulli in numeri interi potrebbe essere limitata.
In questi casi, astype()
solleverà un errore.
Per situazioni come queste, sarebbe opportuno utilizzare try
e except
quando convertiamo tipi di dati, soprattutto se abbiamo intenzione di riutilizzare il codice per analisi future.
A tal proposito, ti consiglio di leggere questa micro-lezione.
Conclusione
astype()
ci permette di gestire i tipi di dati nei dataframe pandas con facilità.
Questo è molto spesso necessario se stiamo preparando dati per analisi più avanzate
Alla prossima micro-lezione 👋