Pandas Convertem Strings em Tipo Numérico

Suraj Joshi 30 janeiro 2023
  1. pandas.to_numeric() Método
  2. Converter valores de String de Pandas DataFrame para Tipo Numérico Utilizando o pandas.to_numeric() Método
  3. Converte os valores de String de Pandas DataFrame para Tipo Numérico com outros caracteres no mesmo
Pandas Convertem Strings em Tipo Numérico

Este tutorial explica como podemos converter valores de string de Pandas DataFrame para tipo numérico utilizando o método 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)

Resultado:

    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

Vamos utilizar o exemplo acima para demonstrar como podemos alterar os valores de DataFrame para o tipo numérico.

pandas.to_numeric() Método

Sintaxe

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

Converte o argumento passado como arg para o tipo numérico. Por defeito, o arg será convertido para int64 ou float64. Podemos definir o valor para o parâmetro downcast para converter o arg para outros tipos de dados.

Converter valores de String de Pandas DataFrame para Tipo Numérico Utilizando o pandas.to_numeric() Método

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)

Resultado:

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

Converte o tipo de dados da coluna Cost da coluna items_df de object para int64.

Converte os valores de String de Pandas DataFrame para Tipo Numérico com outros caracteres no mesmo

Se quisermos converter uma coluna para um tipo numérico com valores com alguns caracteres, recebemos um erro a dizer ValueError: Unable to parse string. Nesses casos, podemos remover todos os caracteres não numéricos e depois realizar a conversão do tipo.

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)

Resultado:

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

Remove o carácter $ anexado com os valores da coluna Cost e depois converte estes valores para o tipo numérico utilizando o método pandas.to_numeric().

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Pandas Data Type