¿Qué es esta idea de remuestreo? Esto está relacionado con los datos de series temporales y lo que haremos es cambiar la frecuencia con la que se informan esos datos. Por ejemplo, cambiar el valor anual a mensual o semanal, o cambiar los datos por horas a diarios. En resumen, estamos cambiando el nivel en la jerarquía.
Esto se puede usar por varias razones, como obtener tendencias más confiables , tamaños de muestra y estacionalidad . En algunos informes, tendrá más sentido si usamos algún nivel de la jerarquía frente a otro.
Además, el remuestreo puede ayudar si tiene diferentes fuentes de datos y necesita realizar la combinación de datos de series temporales. Esto también ayudará cuando se trate de un desajuste en la jerarquía .
Para desglosar esto aún más, tenemos muestreo descendente y muestreo ascendente.
La reducción de muestreo consiste en disminuir la frecuencia de los informes . Puede ser cosas como convertir de un segundo a una hora para tener menos valores o reducir la muestra de mes a trimestre.
Por otro lado, el muestreo ascendente es para aumentar la frecuencia de los informes desde el nivel del mes hasta el nivel del día . Tendremos más ejemplos de esto más adelante.
Cómo volver a muestrear datos de series temporales usando Pandas
¿Cómo vamos a hacer esto en Pandas?
En primer lugar, cambiaremos el índice a nuestra columna de datos de series temporales . Luego, podemos aumentar la muestra usando la interpolación, que completará los valores, y podemos reducir la muestra para acumular agregando los valores.
Vayamos a Jupyter Notebook Python y veamos esto con Pandas.
Para empezar, usaremos Pandas escribiendo import pandas as pd , seguido de import seaborn as sns para visualizarlo e import matplotlib.pyplot as plt para personalizar la visualización de Seaborn .
Lo siguiente que debe hacer es obtener los datos de los datos de importación de vega_datasets . Es un buen lugar para obtener fuentes de muestra. Además, obtendremos la biblioteca sp = data.sp500 ( ) y sp.head ( ) .
Aquí están nuestros datos hasta ahora. Tenemos las devoluciones diarias y el precio de cada día.
Para establecer la columna de índice a fecha, escriba sp.set_index(['date'], inplace=True) y luego llame a sp.head nuevamente.
Uso de sobremuestreo para obtener valores
Entonces, para tener más valores, usemos upsampling. Como tenemos los datos de todos los días, podemos bajar a la hora usando la función más simple que es sp [['price']]. resample ('H').ffill ( ) , luego ejecútelo. H representa la hora, M el mes, D el día, etc. Puede obtener más información sobre esto en la documentación de Pandas .
Como podemos ver, el 1 de enero a la medianoche, el precio es de 1394,46, al igual que las horas siguientes desde la 1:00 AM hasta las 4:00 AM. Otro ejemplo es el 2 de enero, donde el precio de cierre es 1366,42.
Hay otras formas de hacer esto incluso si el valor no está disponible a nivel de hora. Además, hay formas más sofisticadas que solo hacer un relleno hacia adelante . Para nuestro ejemplo, lo que hicimos es la forma básica de realizar una interpolación de muestreo ascendente.
A continuación, vayamos a la reducción de muestreo escribiendo avg_month = sp [['price]].resample ('M').mean ( ) , luego avg_month.head ( ) y ejecútelo para verificar.
Como se ilustra, podemos ver el último día de cada mes y el precio promedio. Podemos disminuir las muestras para que tengan menos valores, o lo que llamamos reducción de tamaño.
Para visualizar esto, escribamos re-plot las dimensiones que se dibujan. Luego, seguido de sns.lineplot . El diagrama de líneas funciona mejor con un eje X más largo, mientras que el valor Y es el precio mensual promedio.
Para ver el precio promedio del mes trazado, ejecutemos esto.
Nuevamente, hay muchas maneras diferentes en que podemos hacer esto. Por ejemplo, si queremos saber el precio más bajo por trimestre, todo lo que tenemos que hacer es escribir quarter_low , luego quarter_low.head para ejecutarlo.
Entonces, ahora podemos ver el valor trimestral más bajo encontrado en cada trimestre. Así es como se hace un remuestreo.
Para colmo, Pandas está realmente diseñado para remuestreo y datos de series temporales . Si está trabajando con datos de series temporales y tiene diferentes granularidades, el remuestreo puede ser muy útil.
Además, asegúrese de leer la documentación de Pandas sobre el método de remuestreo para aprender muchas formas diferentes de hacerlo. Analizamos los básicos, pero puede hacer cosas como cada dos semanas, el último día hábil del mes y más opciones para volver a muestrear.