Comment changer le type de données des colonnes dans Pandas

  1. Méthode to_numeric pour convertir des colonnes en valeurs numériques dans Pandas
  2. Méthode astype() pour convertir un type en tout autre type de données
  3. 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

Article connexe - Pandas Data Type

  • Pandas Convertir une chaîne de caractères en un type numérique