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.
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.
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.
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.
Hace poco publiqué una entrada en la que trataba de un sesgo bien documentado: aferrarse…
En un entrada previa explicamos qué son el WOE y el IV y por qué…
Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…
“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…
Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…
Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…
This website uses cookies.