Comment changer le type de données des colonnes dans Pandas
-
Méthode
to_numeric
pour convertir des colonnes en valeurs numériques dans Pandas -
Méthode
astype()
pour convertir un type en tout autre type de données -
Méthode
infer_objects()
pour convertir le type de données des colonnes en un type plus spécifique
Nous allons présenter la méthode pour changer le type de données des colonnes dans Pandas DataFrame
, et les options comme to_numaric
, as_type
et infer_objects
. Nous discuterons également de la façon d’utiliser l’option downcasting
avec to_numaric
.
Méthode to_numeric
pour convertir des colonnes en valeurs numériques dans Pandas
to_numeric()
est la meilleure façon de convertir une ou plusieurs colonnes d’un DataFrame
en valeurs numériques. Elle essaiera également de transformer des objets non numériques (tels que des chaînes de caractères) en nombres entiers ou en nombres à virgule float, selon le cas. Si certaines valeurs ne peuvent pas être converties en un type numérique, to_numeric()
nous permet de forcer les valeurs non numériques à être NaN
.
Exemples de codes:
# 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"))
Production:
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()
nous donnera soit un dtype int64
ou float64
par défaut. Nous pouvons utiliser une option pour obtenir soit integer
, signed
, unsigned
ou float
:
# python 3.x
import pandas as pd
s = pd.Series([-3, 1, -5])
print(s)
print(pd.to_numeric(s, downcast="integer"))
Production:
0 -3
1 1
2 -5
dtype: int64
0 -3
1 1
2 -5
dtype: int8
Méthode astype()
pour convertir un type en tout autre type de données
La méthode astype()
nous permet d’être explicite sur le dtype que nous voulons convertir. Nous pouvons convertir un type de données en un autre en passant le paramètre dans la méthode astype()
.
Considérons le code suivant:
# 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)
Production:
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
Méthode infer_objects()
pour convertir le type de données des colonnes en un type plus spécifique
infer_objects()
méthode introduite à partir de la version 0.21.0 du pandas pour convertir les colonnes d’un dataFrame
vers un type de données plus spécifique (conversions douces).
Considérons le code suivant:
# 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)
Production:
a object
b object
dtype: object
Infering..................
............................
a int64
b float64
dtype: object