La manipulación de datos con fechas es una parte crucial del análisis de datos, por lo que es de extrañar que en Pandas existan herramientas para ello. Uno de los problemas que nos podemos encontrar a la hora de preparar los datos es cómo seleccionar elementos entre dos fechas. En esta entrada se mostrarán los pasos para conseguirlo, utilizando para ello un conjunto de datos de ejemplo.
Creación de un conjunto de datos de ejemplo
En primer lugar, se creará un conjunto de datos de ejemplo que contenga una columna con fechas y otra con valores aleatorios. Para lo que, en el siguiente código, se usará la función date_range()
.
import pandas as pd import numpy as np # Fijar la semilla para reproducibilidad np.random.seed(42) # Crear un rango de fechas fechas = pd.date_range('2024-01-01', '2024-01-10', freq='D') # Crear un DataFrame de ejemplo con fechas y valores aleatorios data = {'Fecha': fechas, 'Valor': np.random.randint(0, 100, size=len(fechas))} df = pd.DataFrame(data) # Mostrar el DataFrame print(df)
Fecha Valor 0 2024-01-01 51 1 2024-01-02 92 2 2024-01-03 14 3 2024-01-04 71 4 2024-01-05 60 5 2024-01-06 20 6 2024-01-07 82 7 2024-01-08 86 8 2024-01-09 74 9 2024-01-10 74
Obteniendo como resultado un DataFrame con diez registros con fechas entre el uno de enero de 2024 y el diez de enero de 2024.
Seleccionar elementos entre dos fechas con Pandas
Ahora que se dispone de un conjunto de datos se puede este para comprender cómo se puede realizar la selección. Supongamos que se desea seleccionar los registros que son posteriores a una fecha dada, por ejemplo, el tres de enero de 2024. Para lo que se puede crear una máscara booleana como se muestra en el siguiente ejemplo
# Seleccionar elementos posterior a una fecha dada fecha_inicio = '2024-01-03' seleccion = df[(df['Fecha'] >= fecha_inicio)] # Mostrar el DataFrame print(seleccion)
Fecha Valor 2 2024-01-03 14 3 2024-01-04 71 4 2024-01-05 60 5 2024-01-06 20 6 2024-01-07 82 7 2024-01-08 86 8 2024-01-09 74 9 2024-01-10 74
Con lo que resulta en un nuevo DataFrame con los valores que cumple la condición deseada. Si se desea filtrar también en base a la fecha de finalización, se puede crear una máscara más compleja en la que se combinen los casos que son posteriores a la fecha inicial y anteriores a la final. Esto en lo que se muestra en el siguiente ejemplo donde se selecciona los registros entre tres de enero y el siete de enero.
# Seleccionar elementos entre dos fechas dadas fecha_inicio = '2024-01-03' fecha_fin = '2024-01-07' seleccion = df[(df['Fecha'] >= fecha_inicio) & (df['Fecha'] <= fecha_fin)] # Mostrar el DataFrame print(seleccion)
Fecha Valor 2 2024-01-03 14 3 2024-01-04 71 4 2024-01-05 60 5 2024-01-06 20 6 2024-01-07 82
La máscara se puede hacer tan compleja como sea necesario, pudiendo combinar con otros criterios como un valor mínimo o máximo de cualquier registro.
Conclusiones
En esta entrada se ha explicado los pasos para seleccionar elementos en un DataFrame de Pandas entre dos fechas. Para lo que básicamente se crea una máscara booleana que posteriormente se usa para seleccionar los datos.
Deja una respuesta