Data Analysis

Domina el Filtrado por Fecha en DataFrames de Pandas

Spread the love

Filtrar eficientemente DataFrames de Pandas basándose en rangos de fechas es una habilidad crucial en el análisis de datos. Pandas ofrece varios métodos para lograr esto, cada uno con sus fortalezas y debilidades. Este artículo explora cuatro enfoques populares, comparando su sintaxis, eficiencia y casos de uso.

Tabla de Contenido

Filtrando con Enmascaramiento Booleano

El enmascaramiento booleano ofrece el enfoque más fundamental y flexible. Crea una matriz booleana (máscara) que filtra las filas basándose en condiciones especificadas. Este método es altamente adaptable a escenarios complejos.


import pandas as pd

data = {'Fecha': pd.to_datetime(['2023-10-26', '2023-11-15', '2023-12-01', '2024-01-10', '2024-02-20']),
        'Valor': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)

fecha_inicio = pd.to_datetime('2023-11-01')
fecha_fin = pd.to_datetime('2024-01-01')

mascara = (df['Fecha'] >= fecha_inicio) & (df['Fecha'] <= fecha_fin)
df_filtrado = df[mascara]  #Más eficiente que df.loc[mascara]
print(df_filtrado)

Usando el método .query()

El método .query() proporciona una alternativa más legible y concisa para filtrar. Es particularmente beneficioso para condiciones complejas.


fecha_inicio = '2023-11-01'
fecha_fin = '2024-01-01'

df_filtrado = df.query('@fecha_inicio <= Fecha <= @fecha_fin')
print(df_filtrado)

Empleando el método .isin()

El método .isin() es adecuado cuando necesitas seleccionar filas basándote en una lista de fechas específicas, en lugar de un rango continuo. Es menos eficiente para rangos continuos grandes.


fechas_a_incluir = pd.to_datetime(['2023-11-15', '2023-12-01'])
df_filtrado = df[df['Fecha'].isin(fechas_a_incluir)]
print(df_filtrado)

Aprovechando el método .between()

El método .between() ofrece un enfoque simplificado para seleccionar filas dentro de un rango de fechas continuo. Es eficiente y fácil de leer.


fecha_inicio = pd.to_datetime('2023-11-01')
fecha_fin = pd.to_datetime('2024-01-01')

df_filtrado = df[df['Fecha'].between(fecha_inicio, fecha_fin, inclusive='both')] #argumento inclusive añadido para claridad
print(df_filtrado)

En resumen, Pandas ofrece diversos métodos para el filtrado basado en fechas. La opción óptima depende de tus necesidades específicas y estilo de codificación. El enmascaramiento booleano proporciona la máxima flexibilidad, .query() mejora la legibilidad, y .between() simplifica la selección de rangos continuos. Recuerda asegurarte de que tu columna de fecha sea de tipo datetime64 para un rendimiento óptimo.

Deja una respuesta

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