Data Science

Dominando la Conversión de Fechas con Pandas: Técnicas Eficientes para el Manejo de Datos

Spread the love

Pandas es una potente librería de Python para la manipulación y el análisis de datos. Trabajar con fechas y horas es una tarea común, y a menudo, sus datos pueden contener información de fecha y hora en formato de cadena u otros formatos que no sean de fecha y hora. Este artículo demuestra varias técnicas eficientes para convertir columnas de Pandas DataFrame al tipo de dato datetime, lo que facilita significativamente el análisis y la manipulación de series temporales.

Tabla de contenido:

  1. Conversión eficiente de datetime con pd.to_datetime()
  2. Manejo de formatos complejos con apply()
  3. Conversión simultánea de múltiples columnas
  4. Uso de astype() para conversiones simples

1. Conversión eficiente de datetime con pd.to_datetime()

El enfoque más directo y recomendado es utilizar la función pd.to_datetime(). Esta función es muy versátil y es capaz de manejar una amplia variedad de formatos de fecha y hora.


import pandas as pd

data = {'date_str': ['2024-03-08', '2024-03-09', '2024-03-10']}
df = pd.DataFrame(data)

# Convertir la columna 'date_str' a datetime
df['date'] = pd.to_datetime(df['date_str'])

print(df)
print(df.dtypes)

Este fragmento de código crea un DataFrame con una columna de cadenas de fecha. pd.to_datetime() infiere automáticamente el formato y convierte las cadenas en objetos datetime. La salida de dtypes confirma la conversión exitosa. pd.to_datetime() también maneja formatos con componentes de hora y ofrece manejo de errores a través del parámetro errors (por ejemplo, ‘coerce’ para reemplazar fechas inválidas con NaT).

2. Manejo de formatos complejos con apply()

El método apply() proporciona una mayor flexibilidad, particularmente cuando se trata de formatos de fecha intrincados o lógica de análisis personalizada.


import pandas as pd

data = {'date_str': ['Mar 8, 2024', 'Mar 9, 2024', 'Mar 10, 2024']}
df = pd.DataFrame(data)

# Función personalizada para analizar la cadena de fecha
def parse_date(date_str):
    return pd.to_datetime(date_str, format='%b %d, %Y')

df['date'] = df['date_str'].apply(parse_date)

print(df)
print(df.dtypes)

Aquí, se define una función personalizada parse_date para manejar un formato de fecha específico. El método apply() aplica esta función a cada elemento de la columna ‘date_str’. Este enfoque es beneficioso cuando se trata de formatos de fecha inconsistentes o se requiere un manejo especializado.

3. Conversión simultánea de múltiples columnas

El método apply() se puede extender para convertir varias columnas a la vez.


import pandas as pd

data = {'date_str': ['Mar 8, 2024', 'Mar 9, 2024', 'Mar 10, 2024'],
        'time_str': ['10:00:00', '12:30:00', '14:45:00']}
df = pd.DataFrame(data)

def parse_date_time(row):
    return pd.to_datetime(row['date_str'] + ' ' + row['time_str'], format='%b %d, %Y %H:%M:%S')

df['datetime'] = df.apply(parse_date_time, axis=1)

print(df)
print(df.dtypes)

Este ejemplo combina cadenas de fecha y hora de columnas separadas. El argumento axis=1 en apply() indica la aplicación de la función fila por fila.

4. Uso de astype() para conversiones simples

El método astype() ofrece un método de conversión conciso, pero es menos flexible que pd.to_datetime(). Es más efectivo cuando sus fechas ya están en un formato que Pandas puede interpretar directamente.


import pandas as pd

data = {'date_str': ['2024-03-08', '2024-03-09', '2024-03-10']}
df = pd.DataFrame(data)

df['date'] = pd.to_datetime(df['date_str']) #Primero convierte a objeto datetime usando pd.to_datetime para flexibilidad
df['date'] = df['date'].astype('datetime64[ns]') #Ahora podemos usar astype

print(df)
print(df.dtypes)

Si bien astype proporciona una conversión directa, pd.to_datetime generalmente se prefiere debido a su manejo de errores superior y flexibilidad de formato. Tenga en cuenta que es necesaria una conversión preliminar usando pd.to_datetime antes de aplicar astype; de lo contrario, se producirá un error.

El método óptimo depende de la complejidad de sus datos y sus necesidades específicas. Para la mayoría de los escenarios, pd.to_datetime() proporciona el mejor equilibrio entre eficiencia y flexibilidad. Sin embargo, el método apply() ofrece capacidades de funciones personalizadas cuando es necesario, y astype es una solución concisa para casos sencillos donde los datos ya están en un formato apropiado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *