HOWTO · Pandas
Converter Objecto em Float em Pandas
Este tutorial demonstra como converter uma coluna do tipo objecto para float de um jogo de dados de pandas
Nesta página
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.
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