El objeto DateOffset de Pandas es una herramienta utilizada para realizar desplazamientos de tiempo al trabajar con datos de fecha y hora.

A continuación se presentan algunas características y usos clave de DateOffset:

Conceptos básicos

El objeto DateOffset es similar a Timedelta, pero sigue las reglas del calendario para fechas y horas, en lugar de realizar cálculos aritméticos de tiempo directamente. Esto significa que DateOffset tiene en cuenta los días de calendario reales; por ejemplo, al manejar fechas que cruzan meses o años, calcula correctamente la diferencia de días, mientras que Timedelta simplemente suma los días especificados sin considerar los cambios de mes y año.

Métodos de uso

DateOffset puede realizar operaciones de desplazamiento de fechas mediante operadores aritméticos (como +) o el método apply.

Por ejemplo, puedes usar DateOffset de la siguiente manera para agregar meses u horas:

Ejemplo

ts = pd.Timestamp('2017-01-01 09:10:11')
ts + DateOffset(months=3)  # Agregar tres meses
ts + DateOffset(hours=2)   # Agregar dos horas

Si no se especifica ningún parámetro, DateOffset() por defecto agrega un día calendario:

ts + DateOffset()  # 默认增加一天

Parámetros admitidos

DateOffset admite varios parámetros, que pueden especificar unidades de tiempo para agregar o reemplazar, como años, meses, semanas, días, horas, minutos, segundos, etc. Estos parámetros pueden ser aditivos al desplazamiento (como years, months, weeks, days, hours, minutes, seconds, etc.) o pueden reemplazar el desplazamiento (como year, month, day, weekday, hour, minute, second, etc.).

Métodos especiales

DateOffset también proporciona los métodos rollforward() y rollback() para desplazar la fecha hacia adelante o hacia atrás hasta la fecha válida más cercana. Por ejemplo, si usas el desplazamiento de días hábiles (BDay), omitirá los fines de semana y se desplazará directamente al siguiente día hábil.

Ejemplo

friday = pd.Timestamp('2022-01-05')
two_business_days = 2 * pd.offsets.BDay()
friday + two_business_days  # Agregar dos días hábiles, omitiendo los fines de semana

Cadenas de frecuencia

DateOffset admite cadenas de frecuencia o alias de desplazamiento, que se pueden pasar como parámetro freq. Estas cadenas de frecuencia representan objetos DateOffset y sus subclases, y definen la frecuencia de los índices de fecha y hora.

DateOffset es una herramienta muy útil para procesar datos de series temporales en Pandas, ya que hace que las operaciones de desplazamiento de fechas y horas se ajusten mejor a las reglas reales del calendario.


Funciones comunes

Constructor de DateOffset

Clase/Método Descripción
pd.DateOffset(**kwargs) Crea un objeto DateOffset, admite desplazamientos de tiempo personalizados.

Subclases comunes de DateOffset

Clase Descripción
pd.offsets.Day() Representa el desplazamiento en días.
pd.offsets.BDay() Representa el desplazamiento en días hábiles (excluyendo fines de semana).
pd.offsets.Hour() Representa el desplazamiento en horas.
pd.offsets.Minute() Representa el desplazamiento en minutos.
pd.offsets.Second() Representa el desplazamiento en segundos.
pd.offsets.Milli() Representa el desplazamiento en milisegundos.
pd.offsets.Micro() Representa el desplazamiento en microsegundos.
pd.offsets.MonthEnd() Representa el desplazamiento al final del mes.
pd.offsets.MonthBegin() Representa el desplazamiento al inicio del mes.
pd.offsets.YearEnd() Representa el desplazamiento al final del año.
pd.offsets.YearBegin() Representa el desplazamiento al inicio del año.
pd.offsets.QuarterEnd() Representa el desplazamiento al final del trimestre.
pd.offsets.QuarterBegin() Representa el desplazamiento al inicio del trimestre.
pd.offsets.Week() Representa el desplazamiento en semanas.
pd.offsets.WeekOfMonth() Representa el desplazamiento correspondiente a la semana del mes.

Propiedades de DateOffset

Propiedad Descripción
DateOffset.name Devuelve el nombre de DateOffset.
DateOffset.n Devuelve o establece la cantidad del desplazamiento.
DateOffset.normalize Devuelve o establece si se normaliza el tiempo a la medianoche.

Métodos de DateOffset

Método Descripción
DateOffset.apply(other) Aplica el desplazamiento a otro objeto de fecha y hora.
DateOffset.rollforward(other) Desplaza la fecha hacia adelante hasta el siguiente desplazamiento.
DateOffset.rollback(other) Desplaza la fecha hacia atrás hasta el desplazamiento anterior.
DateOffset.is_anchored() Comprueba si el desplazamiento está anclado (es decir, si tiene una frecuencia fija).
DateOffset.onOffset(date) Comprueba si la fecha está alineada con el desplazamiento.

Ejemplo

Ejemplo

import pandas as pd
from pandas.tseries.offsets import Day, BDay, MonthEnd

# Crear un DateOffset
offset = Day(3)
print(offset)  # Salida <3 * Days>

# Aplicar DateOffset
date = pd.Timestamp('2023-01-01')
new_date = date + offset
print(new_date)  # Salida 2023-01-04

# Usar subclases comunes
bday_offset = BDay(2)
new_bdate = date + bday_offset
print(new_bdate)  # Salida 2023-01-05 (omitiendo el fin de semana)

# Desplazamiento de fin de mes
month_end_offset = MonthEnd()
new_month_end = date + month_end_offset
print(new_month_end)  # Salida 2023-01-31

Explicación detallada de parámetros

pd.DateOffset()

Parámetro Descripción
years Desplazamiento en número de años.
months Desplazamiento en número de meses.
weeks Desplazamiento en número de semanas.
days Desplazamiento en número de días.
hours Desplazamiento en número de horas.
minutes Desplazamiento en número de minutos.
seconds Desplazamiento en número de segundos.
milliseconds Desplazamiento en número de milisegundos.
microseconds Desplazamiento en número de microsegundos.
nanoseconds Desplazamiento en número de nanosegundos.

pd.offsets.BDay()

Parámetro Descripción
n La cantidad del desplazamiento, por defecto es 1.
normalize Si se normaliza el tiempo a la medianoche, por defecto esFalse。

pd.offsets.MonthEnd()

Parámetro Descripción
n La cantidad del desplazamiento, por defecto es 1.
normalize Si se normaliza el tiempo a la medianoche, por defecto esFalse。

Si necesitas información más detallada, puedes consultarDocumentación oficial de Pandas。

Otras extensiones