Análisis de series de tiempo de las acciones de Netflix con Pandas
Time series analysis of Netflix stocks using Pandas.
Introducción
El análisis de series temporales de datos no es solo una colección de números, en este caso las acciones de Netflix. Es una cautivadora tela que teje la historia intrincada de nuestro mundo con Pandas. Como un hilo místico, captura el flujo y reflujo de eventos, el auge y la caída de las tendencias y la aparición de patrones. Revela las conexiones y correlaciones ocultas que dan forma a nuestra realidad, pintando una imagen vívida del pasado y ofreciendo vislumbres del futuro.
El análisis de series temporales es más que una simple herramienta. Es una puerta de entrada a un reino de conocimiento y previsión. Podrás desbloquear los secretos ocultos dentro del tejido temporal de los datos, transformando la información en valiosos conocimientos. También te guía en la toma de decisiones informadas, mitigando riesgos y aprovechando oportunidades emergentes.
¡Embárcate en esta emocionante aventura juntos y descubre cómo el tiempo realmente tiene la clave para entender nuestro mundo! ¿Estás listo? ¡Sumérgete en el cautivador reino del análisis de series temporales!
- ¿Qué hace exactamente un Científico de Datos?
- PatchTST Un avance en la predicción de series temporales.
- Ciencia de Datos Retro Probando las Primeras Versiones de YOLO
Objetivos de aprendizaje
- Nuestro objetivo es introducir el concepto de análisis de series temporales y resaltar su importancia en varios campos, presentando ejemplos del mundo real que muestren las aplicaciones prácticas del análisis de series temporales.
- Proporcionaremos una demostración práctica mostrando cómo importar datos de acciones de Netflix usando Python y la biblioteca yfinance. De esta manera, los lectores aprenderán los pasos necesarios para adquirir datos de series temporales y prepararlos para el análisis.
- Finalmente, nos centraremos en las importantes funciones de pandas utilizadas en el análisis de series temporales, como el cambio, el rolling y el resampling, que permiten manipular y analizar los datos de series temporales de manera efectiva.
Este artículo fue publicado como parte del Blogatón de Ciencia de Datos.
¿Qué es el análisis de series temporales?
Una serie temporal es una secuencia de puntos de datos recopilados o registrados en intervalos de tiempo sucesivos y equidistantes.
- El análisis de series temporales es una técnica estadística para analizar puntos de datos recopilados a lo largo del tiempo.
- Implica el estudio de patrones, tendencias y dependencias en datos secuenciales para extraer conocimientos y hacer predicciones.
- Implica técnicas como la visualización de datos, la modelización estadística y los métodos de pronóstico para analizar e interpretar los datos de series temporales de manera efectiva.
Ejemplos de datos de series temporales
- Datos del mercado de valores: análisis de los precios históricos de las acciones para identificar tendencias y pronosticar los precios futuros.
- Datos meteorológicos: estudio de la temperatura, precipitación y otras variables a lo largo del tiempo para comprender los patrones climáticos.
- Indicadores económicos: análisis del PIB, las tasas de inflación y las tasas de desempleo para evaluar el rendimiento económico.
- Datos de ventas: examen de las cifras de ventas a lo largo del tiempo para identificar patrones y pronosticar las ventas futuras.
- T tráfico de sitios web: análisis de las métricas de tráfico web para comprender el comportamiento del usuario y optimizar el rendimiento del sitio web.
Componentes de la serie temporal
Hay 4 componentes de la serie temporal. Son:
- Componente de tendencia: la tendencia representa un patrón a largo plazo en los datos que se mueve de manera relativamente predecible hacia arriba o hacia abajo.
- Componente de estacionalidad: la estacionalidad es un patrón regular y periódico que se repite en un período específico, como diario, semanal, mensual o estacionalmente.
- Componente cíclico: el componente cíclico corresponde a patrones que siguen ciclos comerciales o económicos, caracterizados por períodos alternos de crecimiento y declive.
- Componente aleatorio: el componente aleatorio representa fluctuaciones impredecibles y residuales en los datos que no se ajustan a los patrones de tendencia, estacionalidad o ciclos.
Aquí hay una interpretación visual de los diversos componentes de la serie temporal.
Trabajando con yfinance en Python
Ahora veamos un uso práctico de yfinance. Primero, descargaremos la biblioteca yfinance usando el siguiente comando.
Instalación
!pip install yfinance
Tenga en cuenta que si encuentra algún error al ejecutar este código en su máquina local, como en Jupyter Notebook, tiene dos opciones: actualizar su entorno de Python o considerar utilizar cuadernos basados en la nube como Google Colab como solución alternativa.
Importar bibliotecas
import pandas as pd
import matplotlib.pyplot as plt
import yfinance as yf
from datetime import datetime
Descargar el conjunto de datos financieros de Netflix utilizando Yahoo Finance
En esta demostración, usaremos datos de acciones de Netflix (NFLX)
![NETFLIX](https://av-eks-lekhak.s3.amazonaws.com/media/__sized__/article_images/image_ZKIv7W0-thumbnail_webp-600x300.webp)
df = yf.download(tickers = "NFLX")
df
Examinemos las columnas en detalle para un análisis más profundo:
- Las columnas “Open” y “Close” muestran los precios de apertura y cierre de las acciones en un día específico.
- Las columnas “High” y “Low” indican los precios más altos y más bajos alcanzados por las acciones en un día en particular, respectivamente.
- La columna “Volume” proporciona información sobre el volumen total de acciones negociadas en un día específico.
- La columna “Adj_Close” representa el precio de cierre ajustado, que refleja el precio de cierre de las acciones en cualquier día de negociación dado, considerando factores como dividendos, divisiones de acciones u otras acciones corporativas.
Acerca de los datos
# imprimir los metadatos del conjunto de datos
df.info()
# descripción de datos
df.describe()
Visualización de los datos de series de tiempo
df['Open'].plot(figsize=(12,6),c='g')
plt.title("Precios de las acciones de Netlix")
plt.show()
Ha habido un aumento constante en los precios de las acciones de Netflix desde 2002 hasta 2021. Usaremos Pandas para investigarlo más en las próximas secciones.
Pandas para análisis de series de tiempo
Debido a sus raíces en la modelización financiera, Pandas proporciona una amplia variedad de herramientas para manejar fechas, horas y datos indexados en el tiempo. Ahora, exploremos las principales estructuras de datos de Pandas diseñadas específicamente para la manipulación efectiva de datos de series de tiempo.
1. Desplazamiento de tiempo
El desplazamiento de tiempo, también conocido como retraso o cambio de tiempo en el análisis de series de tiempo, se refiere al proceso de mover los valores de una serie temporal hacia adelante o hacia atrás en el tiempo. Involucra desplazar toda la serie por un número específico de períodos.
A continuación se presenta el conjunto de datos sin alterar antes de cualquier ajuste o desplazamiento temporal:
![Conjunto de datos original](https://av-eks-lekhak.s3.amazonaws.com/media/__sized__/article_images/image_Wop4oDq-thumbnail_webp-600x300.webp)
Hay dos tipos comunes de desplazamiento de tiempo:
1.1 Desplazamiento hacia adelante (Lag positivo)
Para desplazar nuestros datos hacia adelante, el número de períodos (o incrementos) debe ser positivo.
df.shift(1)
![Después del desplazamiento hacia adelante](https://av-eks-lekhak.s3.amazonaws.com/media/__sized__/article_images/image_SCfrs3k-thumbnail_webp-600x300.webp)
Nota: La primera fila en los datos desplazados contiene un valor NaN ya que no hay un valor anterior para desplazarlo.
1.2 Desplazamiento hacia atrás (Lag negativo)
Para desplazar nuestros datos hacia atrás, el número de períodos (o incrementos) debe ser negativo.
df.shift(-1)
![Después del desplazamiento hacia atrás](https://av-eks-lekhak.s3.amazonaws.com/media/__sized__/article_images/image_qgl1aIJ-thumbnail_webp-600x300.webp)
Nota: La última fila en los datos desplazados contiene un valor NaN ya que no hay un valor posterior para desplazarlo.
2. Ventanas de desplazamiento
El desplazamiento es un método de transformación poderoso utilizado para suavizar los datos y reducir el ruido. Opera dividiendo los datos en ventanas y aplicando una función de agregación, como
mean(), median(), sum(), etc. a los valores dentro de cada ventana.
df['Open:10 días de desplazamiento'] = df['Open'].rolling(10).mean()
df[['Open','Open:10 días de desplazamiento']].head(20)
df[['Open','Open:10 días de desplazamiento']].plot(figsize=(15,5))
plt.show()
![Ventana de desplazamiento para 10 días](https://av-eks-lekhak.s3.amazonaws.com/media/__sized__/article_images/image_thowzrJ-thumbnail_webp-600x300.webp)
Nota: Los primeros nueve valores se han vuelto en blanco ya que no había suficientes datos para llenarlos cuando se usó una ventana de diez días.
![Ventana de desplazamiento de 10 días](https://av-eks-lekhak.s3.amazonaws.com/media/__sized__/article_images/image_2unVHC7-thumbnail_webp-600x300.webp)
df['Open:20'] = df['Open'].rolling(window=20,min_periods=1).mean()
df['Open:50'] = df['Open'].rolling(window=50,min_periods=1).mean()
df['Open:100'] = df['Open'].rolling(window=100,min_periods=1).mean()
#visualización
df[['Open','Open:10','Open:20','Open:50','Open:100']].plot(xlim=['2015-01-01','2024-01-01'])
plt.show()
![Ventana de desplazamiento de 10,20,50 y 100 días](https://av-eks-lekhak.s3.amazonaws.com/media/__sized__/article_images/image_YRbm6kO-thumbnail_webp-600x300.webp)
Se utilizan comúnmente para suavizar gráficos en el análisis de series temporales. El ruido inherente y las fluctuaciones a corto plazo en los datos se pueden reducir, lo que permite una visualización más clara de las tendencias y patrones subyacentes.
3. Re-muestreo temporal
El re-muestreo temporal implica la agregación de datos en intervalos de tiempo predeterminados, como mensuales, trimestrales o anuales, para proporcionar una vista resumida de las tendencias subyacentes. En lugar de examinar los datos diariamente, el re-muestreo condensa la información en unidades de tiempo más grandes, lo que permite a los analistas centrarse en patrones y tendencias más amplios en lugar de verse atrapados en fluctuaciones diarias.
#frecuencia de fin de año
df.resample(rule='A').max()
![Datos re-muestreados](https://av-eks-lekhak.s3.amazonaws.com/media/__sized__/article_images/image_hJCfQcO-thumbnail_webp-600x300.webp)
Esto re-muestrea el DataFrame original df basado en la frecuencia de fin de año, y luego calcula el valor máximo para cada año. Esto puede ser útil para analizar el precio de las acciones más alto del año o identificar los valores máximos en otros datos de series de tiempo.
df['Adj Close'].resample(rule='3Y').mean().plot(kind='bar',figsize=(10,4))
plt.title('Precio promedio de cierre ajustado de 3 años para Netflix')
plt.show()
![Gráfico de datos remuestreados](https://av-eks-lekhak.s3.amazonaws.com/media/__sized__/article_images/image_K7HDE04-thumbnail_webp-600x300.webp)
Este gráfico de barras muestra el valor promedio de Adj_Close del precio de las acciones de Netflix para cada 3 años desde 2002 hasta 2023.
A continuación se muestra una lista completa de los valores de desplazamiento. La lista también se puede encontrar en la documentación de pandas.
Conclusión
La biblioteca pandas de Python es una herramienta robusta y versátil que ofrece una gran cantidad de funciones incorporadas para analizar eficazmente datos de series temporales. En este artículo, exploramos las inmensas capacidades de pandas para manejar y visualizar datos de series temporales.
A lo largo del artículo, nos adentramos en tareas esenciales como el muestreo temporal, el desplazamiento temporal y el análisis rodante utilizando datos de acciones de Netflix. Estas operaciones fundamentales sirven como pasos iniciales cruciales en cualquier flujo de trabajo de análisis de series temporales. Al dominar estas técnicas, los analistas pueden obtener información valiosa y extraer información significativa de sus datos. Otra forma en que podríamos utilizar estos datos sería para predecir los precios de las acciones de Netflix para los próximos días mediante el empleo de técnicas de aprendizaje automático. Esto sería especialmente valioso para los accionistas que buscan información y análisis.
El código y la implementación se cargan en Github en Análisis de Series Temporales de Netflix.
Espero que hayas encontrado útil este artículo. Conéctate conmigo en LinkedIn.
Preguntas Frecuentes
Los medios mostrados en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.
We will continue to update Zepes; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Cómo acceder a futuras versiones de Python como la 3.12 antes que las masas.
- Para aprender realmente un nuevo tema, tómate tu tiempo.
- Utilizando Gráficos de Superficie 3D de Plotly para Visualizar Superficies Geológicas.
- ¿Se aprueba la visa H1B en función de los análisis de datos?
- ¿Cómo luce la descripción de trabajo de un analista de datos?
- El Aprendizaje Automático Desbloquea Información Sobre Detección de Estrés.
- LangChain Mejorando el rendimiento con la capacidad de memoria