Converter Objecto em Float em Pandas

Manav Narula 30 janeiro 2023
  1. Utilize o astype() Método de conversão de objectos em Pandas
  2. Utilize a função to_numeric() para converter objecto para float em Pandas
Converter Objecto em Float em Pandas

Neste tutorial, centrar-nos-emos na conversão de uma coluna tipo objecto para float em Pandas. Uma coluna do tipo objecto contém um string ou uma mistura de outros tipos, enquanto que a coluna float contém valores decimais. Neste artigo, trabalharemos no seguinte DataFrame.

import pandas as pd

df = pd.DataFrame(
    [["10.0", 6, 7, 8], ["1.0", 9, 12, 14], ["5.0", 8, 10, 6]],
    columns=["a", "b", "c", "d"],
)

print(df)
print("---------------------------")
print(df.info())

Resultado:

      a  b   c   d
0  10.0  6   7   8
1   1.0  9  12  14
2   5.0  8  10   6
---------------------------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   a       3 non-null      object
 1   b       3 non-null      int64 
 2   c       3 non-null      int64 
 3   d       3 non-null      int64 
dtypes: int64(3), object(1)
memory usage: 224.0+ bytes
None

Repare no tipo de coluna 'a', que é do tipo object. Converteremos este objecto para float utilizando as funções pd.to_numeric() e astype() em Pandas.

Nota
Este tutorial não cobre convert_objects() função que é depreciada e removida.

Utilize o astype() Método de conversão de objectos em Pandas

Os Pandas fornecem o método astype() para converter uma coluna para um tipo específico. Passamos float para o método e definimos o parâmetro errors como 'raise', o que significa que irá levantar excepções para valores inválidos. Exemplo:

import pandas as pd

df = pd.DataFrame(
    [["10.0", 6, 7, 8], ["1.0", 9, 12, 14], ["5.0", 8, 10, 6]],
    columns=["a", "b", "c", "d"],
)

df["a"] = df["a"].astype(float, errors="raise")

print(df.info())

Resultado:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 4 columns):
a    3 non-null float64
b    3 non-null int64
c    3 non-null int64
d    3 non-null int64
dtypes: float64(1), int64(3)
memory usage: 224.0 bytes

Utilize a função to_numeric() para converter objecto para float em Pandas

A função Pandas to_numeric() pode ser utilizada para converter uma lista, uma série, um array, ou um tuple para um datatype numérico, o que significa int assinado, ou int não assinado e tipo float. Também tem o parâmetro errors para levantar excepções. Um exemplo de conversão do tipo de objecto para float utilizando to_numeric() é mostrado abaixo:

import pandas as pd

df = pd.DataFrame(
    [["10.0", 6, 7, 8], ["1.0", 9, 12, 14], ["5.0", 8, 10, 6]],
    columns=["a", "b", "c", "d"],
)

df["a"] = pd.to_numeric(df["a"], errors="coerce")

print(df.info())

Resultado:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 4 columns):
a    3 non-null float64
b    3 non-null int64
c    3 non-null int64
d    3 non-null int64
dtypes: float64(1), int64(3)
memory usage: 224.0 bytes
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artigo relacionado - Pandas DataFrame