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

Suraj Joshi 30 janvier 2023
  1. Méthode pandas.to_numeric()
  2. Convertir les valeurs des chaînes de caractères de Pandas DataFrame en type numérique en utilisant la méthode pandas.to_numeric()
  3. Conversion des valeurs de chaîne de caractères de Pandas DataFrame en type numérique avec d’autres caractères
Pandas Convertir une chaîne de caractères en un type numérique

Ce tutoriel explique comment nous pouvons convertir des valeurs de chaîne de Pandas DataFrame en type numérique en utilisant la méthode pandas.to_numeric().

import pandas as pd

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 343, 565],
        "Name": ["Watch", "Camera", "Phone", "Shoes", "Laptop", "Bed"],
        "Cost": ["300", "400", "350", "100", "1000", "400"],
    }
)

print(items_df)

Production :

    Id    Name  Cost
0  302   Watch   300
1  504  Camera   400
2  708   Phone   350
3  103   Shoes   100
4  343  Laptop  1000
5  565     Bed   400

Nous allons utiliser l’exemple ci-dessus pour démontrer comment nous pouvons changer les valeurs de DataFrame en type numérique.

Méthode pandas.to_numeric()

Syntaxe

pandas.to_numeric(arg, errors="raise", downcast=None)

Il convertit l’argument passé comme arg en type numérique. Par défaut, l’argument arg sera converti en int64 ou float64. Nous pouvons définir la valeur du paramètre downcast pour convertir le arg en d’autres types de données.

Convertir les valeurs des chaînes de caractères de Pandas DataFrame en type numérique en utilisant la méthode pandas.to_numeric()

import pandas as pd

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 343, 565],
        "Name": ["Watch", "Camera", "Phone", "Shoes", "Laptop", "Bed"],
        "Cost": ["300", "400", "350", "100", "1000", "400"],
    }
)

print("The items DataFrame is:")
print(items_df, "\n")

print("Datatype of Cost column before type conversion:")
print(items_df["Cost"].dtypes, "\n")

items_df["Cost"] = pd.to_numeric(items_df["Cost"])
print("Datatype of Cost column after type conversion:")
print(items_df["Cost"].dtypes)

Production :

The items DataFrame is:
    Id    Name  Cost
0  302   Watch   300
1  504  Camera   400
2  708   Phone   350
3  103   Shoes   100
4  343  Laptop  1000
5  565     Bed   400 

Datatype of Cost column before type conversion:
object 

Datatype of Cost column after type conversion:
int64

Il convertit le type de données de la colonne Cost du items_df de object à int64.

Conversion des valeurs de chaîne de caractères de Pandas DataFrame en type numérique avec d’autres caractères

Si nous voulons convertir une colonne en un type numérique avec des valeurs contenant certains caractères, nous obtenons une erreur intitulée ValueError: Unable to parse string. Dans ce cas, nous pouvons supprimer tous les caractères non numériques et effectuer la conversion de type.

import pandas as pd

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 343, 565],
        "Name": ["Watch", "Camera", "Phone", "Shoes", "Laptop", "Bed"],
        "Cost": ["$300", "$400", "$350", "$100", "$1000", "$400"],
    }
)

print("The items DataFrame is:")
print(items_df, "\n")

print("Datatype of Cost column before type conversion:")
print(items_df["Cost"].dtypes, "\n")

items_df["Cost"] = pd.to_numeric(items_df["Cost"].str.replace("$", ""))
print("Datatype of Cost column after type conversion:")
print(items_df["Cost"].dtypes, "\n")

print("DataFrame after Type Conversion:")
print(items_df)

Production :

The items DataFrame is:
    Id    Name   Cost
0  302   Watch   $300
1  504  Camera   $400
2  708   Phone   $350
3  103   Shoes   $100
4  343  Laptop  $1000
5  565     Bed   $400 

Datatype of Cost column before type conversion:
object 

Datatype of Cost column after type conversion:
int64 

DataFrame after Type Conversion:
    Id    Name  Cost
0  302   Watch   300
1  504  Camera   400
2  708   Phone   350
3  103   Shoes   100
4  343  Laptop  1000
5  565     Bed   400

Il supprime le caractère $ attaché aux valeurs de la colonne Cost et convertit ensuite ces valeurs en type numérique en utilisant la méthode pandas.to_numeric().

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Article connexe - Pandas Data Type