Modifica il tipo di dati delle colonne in Pandas
-
Metodo
to_numeric
per convertire le colonne in valori numerici in Pandas -
Metodo
astype()
per convertire un tipo in qualsiasi altro tipo di dati -
Metodo
infer_objects()
per convertire il tipo di dati delle colonne in un tipo più specifico
Introdurremo il metodo per cambiare il tipo di dati delle colonne in Pandas DataFrame
e opzioni come to_numaric
, as_type
e infer_objects
. Discuteremo anche come usare l’opzione downcasting
con to_numaric
.
Metodo to_numeric
per convertire le colonne in valori numerici in Pandas
to_numeric()
è il modo migliore per convertire una o più colonne di un DataFrame
in valori numerici. Proverà anche a cambiare gli oggetti non numerici (come le stringhe) in numeri interi o numeri in virgola mobile a seconda dei casi. to_numeric()
l’input può essere una Series
o una colonna di un DataFrame
. Se alcuni valori non possono essere convertiti in un tipo numerico, to_numeric()
ci permette di forzare i valori non numerici ad essere NaN
.
Codici di esempio:
# python 3.x
import pandas as pd
s = pd.Series(["12", "12", "4.7", "asad", "3.0"])
print(s)
print("------------------------------")
print(pd.to_numeric(s, errors="coerce"))
Produzione:
0 12
1 12
2 4.7
3 asad
4 3.0
dtype: object
------------------------------
0 12.0
1 12.0
2 4.7
3 NaN
4 3.0
dtype: float64
to_numeric()
ci darà un dtype int64
o float64
per impostazione predefinita. Possiamo usare un’opzione per eseguire il cast su integer
, signed
, unsigned
o float
:
# python 3.x
import pandas as pd
s = pd.Series([-3, 1, -5])
print(s)
print(pd.to_numeric(s, downcast="integer"))
Produzione:
0 -3
1 1
2 -5
dtype: int64
0 -3
1 1
2 -5
dtype: int8
Metodo astype()
per convertire un tipo in qualsiasi altro tipo di dati
Il metodo astype()
ci permette di essere espliciti riguardo al dtype che vogliamo convertire. Possiamo convertire un tipo di dati in un altro passando il parametro all’interno del metodo astype()
.
Codici di esempio:
# python 3.x
import pandas as pd
c = [["x", "1.23", "14.2"], ["y", "20", "0.11"], ["z", "3", "10"]]
df = pd.DataFrame(c, columns=["first", "second", "third"])
print(df)
df[["second", "third"]] = df[["second", "third"]].astype(float)
print("Converting..................")
print("............................")
print(df)
Produzione:
first second third
0 x 1.23 14.2
1 y 20 0.11
2 z 3 10
Converting..................
............................
first second third
0 x 1.23 14.20
1 y 20.00 0.11
2 z 3.00 10.00
Metodo infer_objects()
per convertire il tipo di dati delle colonne in un tipo più specifico
Il metodo infer_objects()
introdotto dalla versione 0.21.0 del pandas per convertire le colonne di un dataFrame
in un tipo di dati più specifico (conversioni soft).
Codici di esempio:
# python 3.x
import pandas as pd
df = pd.DataFrame({"a": [3, 12, 5], "b": [3.0, 2.6, 1.1]}, dtype="object")
print(df.dtypes)
df = df.infer_objects()
print("Infering..................")
print("............................")
print(df.dtypes)
Produzione:
a object
b object
dtype: object
Infering..................
............................
a int64
b float64
dtype: object