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 + 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
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
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