Pandas é uma poderosa biblioteca Python para manipulação e análise de dados. A gestão do tipo de dados é crucial para o processamento eficiente de dados. Este artigo explora vários métodos para mudar efetivamente os tipos de dados das colunas em seus DataFrames Pandas.
Sumário
- Convertendo para Tipos Numéricos com
pd.to_numeric()
- Conversão de Tipo Flexível com
astype()
- Inferência Inteligente de Tipo com
infer_objects()
- Melhores Práticas para Conversão de Tipo de Dados
1. Convertendo para Tipos Numéricos com pd.to_numeric()
A função pd.to_numeric()
é ideal para converter colunas para tipos de dados numéricos (int
, float
). É particularmente útil quando se lida com colunas contendo representações de string de números, frequentemente encontradas ao importar dados.
import pandas as pd
data = {'col1': ['1', '2', '3', '4', '5'], 'col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)
df['col1'] = pd.to_numeric(df['col1'])
print(df.dtypes)
O parâmetro errors
gerencia como os erros são tratados:
'coerce'
: Valores inválidos se tornamNaN
.'raise'
: Lança uma exceção para valores inválidos.'ignore'
: Ignora valores inválidos.
data = {'col1': ['1', '2', 'a', '4', '5']}
df = pd.DataFrame(data)
df['col1'] = pd.to_numeric(df['col1'], errors='coerce')
print(df)
2. Conversão de Tipo Flexível com astype()
O método astype()
fornece uma abordagem geral para alterar tipos de dados. Você pode converter para praticamente qualquer tipo suportado (int
, float
, str
, bool
, datetime
, etc.).
data = {'col1': [1, 2, 3, 4, 5], 'col2': [True, False, True, False, True]}
df = pd.DataFrame(data)
df['col1'] = df['col1'].astype(str)
df['col2'] = df['col2'].astype(int)
print(df.dtypes)
Cuidado: A conversão de tipo pode levar à perda de dados (por exemplo, truncar decimais ao converter float
para int
).
3. Inferência Inteligente de Tipo com infer_objects()
O método infer_objects()
é útil para DataFrames com tipos de dados mistos em colunas “object”. Ele tenta inferir o tipo mais apropriado para cada coluna.
data = {'col1': ['1', 2, '3.14', 4], 'col2': ['A', 'B', 'C', 'D']}
df = pd.DataFrame(data)
df = df.infer_objects()
print(df.dtypes)
Nota: Dados inconsistentes podem impedir a inferência de tipo bem-sucedida.
4. Melhores Práticas para Conversão de Tipo de Dados
Sempre inspecione seus dados antes e depois da conversão para verificar as alterações e evitar resultados inesperados. Considere usar o método .info()
para verificar os tipos de dados e valores ausentes. Trate erros potenciais graciosamente usando o parâmetro errors
em pd.to_numeric()
ou pré-processando seus dados para remover ou substituir valores problemáticos.