HOWTO · Python

Crear una lista de rango de fechas en Python

Este tutorial demuestra cómo crear y generar una lista de un rango de fechas en python dada la fecha de inicio y K días después de la fecha dada o dada la fecha de inicio y la fecha de finalización.

En esta página

Presentaremos algunos métodos para generar una lista de un rango de fechas. Una forma de hacerlo es utilizar la biblioteca pandas. Pandas tiene apoyo directo para lograr la tarea. La otra forma es diseñar tu propia lógica manualmente usando for loop para generar las fechas.

Veremos algunos ejemplos, como crear la lista de un rango de fechas ingresando la fecha de inicio y k días después de eso o podemos ingresar la fecha de inicio y la fecha de finalización.

Usando pandas para crear una lista de rango de fechas en Python

Usaremos la función date_range() de pandas en la que pasaremos la fecha de inicio y el número de días posteriores (conocidos como periodos). Aquí también hemos utilizado la biblioteca datetime para formatear la fecha de modo que podamos generar la fecha en este formato DD-MM-YY. También podemos definir una marca de tiempo junto con la fecha.

Códigos de ejemplo:

En este ejemplo, estamos pasando la fecha de inicio en el formato de DD-MM-YY y puntos. Entonces, en la salida, podemos ver la lista de un rango de días a partir de la fecha de inicio y la cantidad de periods después de eso.

# python 3.x
import datetime
import pandas as pd

start = datetime.datetime.strptime("01-12-2021", "%d-%m-%Y")
date_generated = pd.date_range(start, periods=5)
print(date_generated.strftime("%d-%m-%Y"))

Producción :

Index(['01-12-2021', '02-12-2021', '03-12-2021', '04-12-2021', '05-12-2021'], dtype='object')

Ahora veremos otro ejemplo en el que pasaremos la fecha de inicio y la fecha de finalización. El programa generará el rango de fechas entre estas dos fechas.

# python 3.x
import datetime
import pandas as pd

start = datetime.datetime.strptime("01-12-2021", "%d-%m-%Y")
end = datetime.datetime.strptime("07-12-2021", "%d-%m-%Y")
date_generated = pd.date_range(start, end)
print(date_generated.strftime("%d-%m-%Y"))

Producción :

Index(['01-12-2021', '02-12-2021', '03-12-2021', '04-12-2021', '05-12-2021',
       '06-12-2021', '07-12-2021'],
      dtype='object')

Crear la lista de rango de fechas manualmente en Python

Con la ayuda del bucle for y timedelta(), podemos generar la lista manualmente. timedelta() es una función definida en la biblioteca datetime. Aquí delta significa diferencia. Con su ayuda, podemos sumar o restar delta con una fecha para obtener la fecha siguiente o anterior, respectivamente. Digamos que tenemos una fecha 01-12-2021. Ahora, si le sumamos 1, nuestra fecha sería 12-02-2021. Usaremos esa lógica en el bucle for. Se itera el bucle for, y agregaremos la variable con la fecha de inicio para obtener la siguiente fecha, y luego agregaremos la fecha generada actualmente a nuestra lista hasta que obtengamos nuestro rango de fechas completo.

Código de ejemplo:

# python 3.x
import datetime

start = datetime.date(2021, 12, 10)
periods = 5
daterange = []
for day in range(periods):
    date = (start + datetime.timedelta(days=day)).isoformat()
    daterange.append(date)
print(daterange)

Producción :

['2021-12-10', '2021-12-11', '2021-12-12', '2021-12-13', '2021-12-14']