20 puntos clave de conocimiento del procesamiento de datos de series de tiempo de Pandas

Hay muchas definiciones de datos de series de tiempo y tienen el mismo significado de diferentes maneras. Una definición simple es que los datos de series de tiempo incluyen puntos de datos añadidos a puntos de tiempo secuenciales.

La fuente de datos de series de tiempo es la medición u observación periódica. Los datos de series de tiempo existen en muchas industrias. Para dar algunos ejemplos:

  • Precio de las acciones durante un período de tiempo
  • Ventas diarias, semanales y mensuales
  • Medición periódica en el proceso
  • Tasa de consumo de electricidad o gas natural durante un período de tiempo

En este artículo, enumeraré 20 puntos para ayudarlo a comprender completamente cómo procesar datos de series de tiempo con Pandas.

1. Diferentes formas de datos de series temporales

Los datos de series de tiempo pueden tener la forma de una fecha específica, duración o intervalo personalizado fijo.

La marca de tiempo puede ser un día o un segundo de la fecha dada, dependiendo de la precisión. Por ejemplo, '2020-01-01 14:59:30' es una marca de tiempo basada en segundos.

2. Estructura de datos de series de tiempo

Pandas proporciona estructuras de datos flexibles y eficientes para procesar varios datos de series de tiempo.

Además de estas tres estructuras, Pandas también admite el concepto de desplazamiento de fecha, que es una duración de tiempo relativa relacionada con el algoritmo de calendario.

3. Cree una marca de tiempo

La estructura de datos de series de tiempo más básica es una marca de tiempo, que se puede crear usando la función to_datetime o Timestamp

import pandas as pdpd.to_datetime('2020-9-13')
Timestamp('2020-09-13 00:00:00')pd.Timestamp('2020-9-13')
Timestamp('2020-09-13 00:00:00')

4. Accede a la información guardada por la marca de tiempo.

Podemos obtener información sobre el día, mes y año almacenados en la marca de tiempo.

a = pd.Timestamp('2020-9-13')a.day_name()
'Sunday'
a.month_name()
'September'
a.day
13
a.month
9
a.year
2020

5. Acceso a información oculta

El objeto de marca de tiempo también guarda información sobre el algoritmo de fecha. Por ejemplo, podemos preguntar si este año es bisiesto. Aquí hay información más específica que podemos obtener:

b = pd.Timestamp('2020-9-30')b.is_month_end
Trueb.is_leap_year
Trueb.is_quarter_start
Falseb.weekofyear
40

6. Dátiles al estilo europeo

Podemos usar la función to_datetime para manejar fechas de estilo europeo (es decir, la fecha primero). El parámetro dayfirst se establece en True.

pd.to_datetime('10-9-2020', dayfirst=True)
Timestamp('2020-09-10 00:00:00')pd.to_datetime('10-9-2020')
Timestamp('2020-10-09 00:00:00')

Nota: Si el primer elemento es mayor de 12, Pandas sabrá que no puede ser un mes.

pd.to_datetime('13-9-2020')
Timestamp('2020-09-13 00:00:00')

7. Convierta el formato de datos a datos de series temporales.

La función to_datetime puede convertir nombres de datos con columnas apropiadas en series de tiempo. Considere el siguiente formato de datos:

pd.to_datetime(df)0   2020-04-13 
1   2020-05-16 
2   2019-04-11 
dtype: datetime64[ns]

7. Indicación de hora distinta de la marca de tiempo

En la vida real, casi siempre usamos datos de series de tiempo continuas en lugar de fechas individuales. Además, Pandas es muy sencillo para procesar datos de series de tiempo secuenciales.

Podemos pasar una lista de fechas a la función to_datetime.

pd.to_datetime(['2020-09-13', '2020-08-12', '2020-08-04', '2020-09-05'])
DatetimeIndex(['2020-09-13', '2020-08-12', '2020-08-04', '2020-09-05'], dtype='datetime64[ns]', freq=None)

El objeto devuelto es un DatetimeIndex.

Hay algunas formas más prácticas de crear una serie de datos de tiempo.

9. Cree series de tiempo con to_datetime y to_timedelta

Puede crear DatetimeIndex agregando TimedeltaIndex a la marca de tiempo.

pd.to_datetime('10-9-2020') + pd.to_timedelta(np.arange(5), 'D')

"D" se usa para significar "día", pero hay muchas otras opciones.

10. función date_range

Proporciona una forma más flexible de crear DatetimeIndex.

pd.date_range(start='2020-01-10', periods=10, freq='M')

La función del parámetro es especificar el número de elementos en el índice. freq es la frecuencia y "M" representa el último día del mes.

En términos de parámetros de frecuencia, date_range es muy flexible.

pd.date_range(start='2020-01-10', periods=10, freq='6D')

Creamos un dato con una frecuencia de 6 días.

11. función period_range

Devuelve un PeriodIndex. La sintaxis es similar a la función date_range.

pd.period_range('2018', periods=10, freq='M')

12. función timedelta_range

Devuelve un TimedeltaIndex.

pd.timedelta_range(start='0', periods=24, freq='H')

13. Zona horaria

De forma predeterminada, el objeto de serie temporal de Panda no tiene una zona horaria específica.

dates = pd.date_range('2019-01-01','2019-01-10')
dates.tz is None
True

Podemos usar el método tz_localize para asignar zonas horarias para estos objetos.

dates_lcz = dates.tz_localize('Europe/Berlin')
dates_lcz.tz
<DstTzInfo 'Europe/Berlin' LMT+0:53:00 STD>

14. Cree una serie temporal con una zona horaria específica

También podemos usar el parámetro de palabra clave tz para crear un objeto de serie temporal con una zona horaria.

pd.date_range('2020-01-01', periods = 5, freq = 'D', tz='US/Eastern')

15. Desplazamiento

Supongamos que tenemos un índice de series de tiempo y queremos compensar todas las fechas por un tiempo específico.

A = pd.date_range('2020-01-01', periods=10, freq='D')
A

Agreguemos una semana de compensación a estos datos.

A + pd.offsets.Week()

16. Movimiento de datos de series de tiempo

El análisis de datos de series de tiempo puede necesitar mover puntos de datos para compararlos. La función de cambio puede cambiar datos.

A.shift(10, freq='M')

17. Shift vs tshift

  • Móvil: datos móviles
  • tshift: índice de tiempo de movimiento

Vamos a crear un marco de datos con un índice de serie de tiempo y trazarlo para ver la diferencia entre shift y tshift.

dates = pd.date_range('2020-03-01', periods=30, freq='D')
values = np.random.randint(10, size=30)
df = pd.DataFrame({
    
    'values':values}, index=dates)df.head()

Dibujemos juntos la serie temporal original y la serie temporal desplazada.

import matplotlib.pyplot as pltfig, axs = plt.subplots(nrows=3, figsize=(10,6), sharey=True)
plt.tight_layout(pad=4)
df.plot(ax=axs[0], legend=None)
df.shift(10).plot(ax=axs[1], legend=None)
df.tshift(10).plot(ax=axs[2], legend=None)

18. Remuestrear con función de muestreo

Otra operación común de los datos de series de tiempo es el remuestreo. Dependiendo de la tarea, es posible que necesitemos volver a muestrear los datos con una frecuencia mayor o menor.

Remuestrear crea un grupo interno especificado (o contenedor) y le permite fusionar los grupos.

Creemos una serie Panda con 30 valores y un índice de serie temporal.

A = pd.date_range('2020-01-01', periods=30, freq='D')
values = np.random.randint(10, size=30)
S = pd.Series(values, index=A)

Lo siguiente devolverá el promedio durante un período de 3 días.

S.resample('3D').mean()

En algunos casos, puede que nos interese el valor de una frecuencia en particular. La función devuelve el valor al final del intervalo especificado. Por ejemplo, en la serie creada en el paso anterior, es posible que solo necesitemos un valor cada 3 días (en lugar de un promedio de 3 días).

S.asfreq('3D')

20. Desplazarse

El desplazamiento es una operación muy útil para datos de series de tiempo. Desplazarse significa crear una ventana de desplazamiento con un tamaño específico y realizar cálculos sobre los datos de la ventana. Por supuesto, la ventana desplazará los datos. La siguiente figura explica el concepto de desplazamiento.

Vale la pena señalar que toda la ventana está en los datos cuando comienza el cálculo. En otras palabras, si el tamaño de la ventana es 3, la primera combinación se realizará en la tercera fila.

Apliquemos una ventana móvil de 3 días a nuestros datos.

S.rolling(3).mean()[:10]

En conclusión

Hemos introducido completamente el análisis de series de tiempo con Pandas. Vale la pena señalar que Pandas proporciona más análisis de series de tiempo.

Gracias por leer Si tiene algún comentario, hágamelo saber.

作者 : Soner Yildirim

grupo de traducción de deephub: Meng Xiangjie

Supongo que te gusta

Origin blog.csdn.net/m0_46510245/article/details/108672969
Recomendado
Clasificación