Pandas es una poderosa biblioteca de Python para la manipulación y el análisis de datos. La gestión del tipo de datos es crucial para un procesamiento de datos eficiente. Este artículo explora varios métodos para cambiar eficazmente los tipos de datos de las columnas en sus DataFrames de Pandas.
Tabla de Contenidos
- Conversión a Tipos Numéricos con
pd.to_numeric()
- Conversión de Tipo Flexible con
astype()
- Inferencia Inteligente de Tipo con
infer_objects()
- Mejores Prácticas para la Conversión de Tipos de Datos
1. Conversión a Tipos Numéricos con pd.to_numeric()
La función pd.to_numeric()
es ideal para convertir columnas a tipos de datos numéricos (int
, float
). Es particularmente útil cuando se trabaja con columnas que contienen representaciones de cadenas de números, que a menudo se encuentran al importar datos.
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)
El parámetro errors
gestiona cómo se manejan los errores:
'coerce'
: Los valores inválidos se convierten enNaN
.'raise'
: Lanza una excepción para los valores inválidos.'ignore'
: Ignora los 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. Conversión de Tipo Flexible con astype()
El método astype()
proporciona un enfoque general para cambiar los tipos de datos. Puede convertir a prácticamente cualquier tipo compatible (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)
Precaución: La conversión de tipo puede provocar pérdida de datos (por ejemplo, truncamiento de decimales al convertir float
a int
).
3. Inferencia Inteligente de Tipo con infer_objects()
El método infer_objects()
es útil para DataFrames con tipos de datos mixtos en columnas «object». Intenta inferir el tipo más apropiado para cada columna.
data = {'col1': ['1', 2, '3.14', 4], 'col2': ['A', 'B', 'C', 'D']}
df = pd.DataFrame(data)
df = df.infer_objects()
print(df.dtypes)
Nota: Los datos inconsistentes pueden impedir una inferencia de tipo exitosa.
4. Mejores Prácticas para la Conversión de Tipos de Datos
Siempre inspeccione sus datos antes y después de la conversión para verificar los cambios y evitar resultados inesperados. Considere usar el método .info()
para verificar los tipos de datos y los valores faltantes. Maneje los posibles errores con elegancia usando el parámetro errors
en pd.to_numeric()
o preprocesando sus datos para eliminar o reemplazar valores problemáticos.