Facebook vs Apple:
Índice de la página:
Descripción.
Código.
-------------------------------------------------------------------------------
DESCRIPCIÓN:Toda la explicación de este Notebook está en los videos del 25 al 29 del curso de MatPlotLib, se encuentran en la carpeta E:\CURSOS\Trading Inteligente\PYTHON\Visualización de Datos en Python-Matplotlib\VIDEOS\.
El Notebook está: C:\Users\USER\Dropbox\PYTHON\CURSOS\MatPlotLib\Facebook vs Apple.ipynb
Cada separación con almohadillas y guiones es una celda del Notebook, si no existe esta separación es una línea en blanco del propio código.
-------------------------------------------------------------------------------------
CÓDIGO:
Los datos que utilizaremos en este notebook corresponden a los precios diarios que tuvieron Facebook y Apple en la bolsa de valores durante casi un año y medio.
# --------------------------------------------------------------- #
import pandas as pd
acciones = pd.read_csv('fbaapl.csv', sep = ";") # Importando los datos del csv
acciones.head()
# --------------------------------------------------------------- #
acciones.dtypes # que tipos de datos tenemos por columnas
# --------------------------------------------------------------- #
# La columna Date es un objeto, hay que pasarla a fechas, y le hemos dado el formato dia-mes-año
acciones['Date'] = pd.to_datetime(acciones['Date'], format = "%d/%m/%Y") #cambiamos el tipo de dato que hay en la columna
acciones.shape
# --------------------------------------------------------------- #
acciones.head()
# --------------------------------------------------------------- #
acciones.dtypes #vemos que si hubo un cambio
# --------------------------------------------------------------- #
acciones.set_index('Date', inplace = True) # y finalmente cambiamos el índice a Date en este dataframe
acciones.head()
# --------------------------------------------------------------- #
acciones.describe()
# --------------------------------------------------------------- #
Facebook vs Apple:
import matplotlib.pyplot as plt
import matplotlib.patheffects as pa # para crear la sombra de las líneas del gráfico
plt.style.use("ggplot") #utilizaremos este estilo de gráfica
# definimos 2 objetos y le ponemos el tamaño en pulgadas a la figura.
fig, ax = plt.subplots(figsize = (15,8))
# Definimos las propiedades y estilas de las líneas del gráfico.
# linestyle (estilo de la línea)
# path_effects (crea la sombra en las líneas del gráfico)
ax.plot(acciones['facebook'], label = "Facebook", lw = 2, color = "#EC4D37",
path_effects = [pa.SimpleLineShadow(),pa.Normal()]) #primera gráfica correspondiente a Faceboook
ax.plot(acciones['apple'], label = "Apple", lw = 2, color = "#1D1B1B", linestyle = "-.",
path_effects = [pa.SimpleLineShadow(),pa.Normal()]) #segunda gráfica en el mismo objeto ax correspondiente a Apple
#leyenda
# shadow (levanta el marco de la leyenda creando una especie de sombra)
# prop (son las propiedades del texto)
ax.legend(shadow = True, prop = {"family":"Serif", "size":15})
#etiquetas
# fontname (el nombre de la fuente)
ax.set_title("Facebook vs Apple", fontname = "Serif", fontsize = 20)
ax.set_ylabel("Precio en USD", fontname = "Serif", fontsize = 15)
ax.set_xlabel("Tiempo", fontname = "Serif", fontsize = 15)
## LÍNEAS HORIZONTALES EN EL MÁXIMO Y MÍNIMO PRECIO Y EN TODO EL PERIODO DEL GRÁFICO.
# hlines (líneas horizontales) (acciones.index son las fechas 0 la primera fecha, -1 la última fecha)
ax.hlines(acciones['apple'].max(), acciones.index[0], acciones.index[-1], linestyle = ":", color = "#1D1B1B") #primera linea horizontal
ax.hlines(acciones['apple'].min(), acciones.index[0], acciones.index[-1], linestyle = ":", color = "#1D1B1B") #segunda linea
ax.hlines(acciones['facebook'].max(), acciones.index[0], acciones.index[-1], linestyle = ":", color = "#EC4D37") #creo la primera linea horizontal
ax.hlines(acciones['facebook'].min(), acciones.index[0], acciones.index[-1], linestyle = ":", color = "#EC4D37") #segunda linea
## RANGO ENTRE EL MÁXIMO PRECIO Y EL MÍNIMO PRECIO
'''
fontname (es el tipo de fuente)
idxmax() como el índice es la fecha, nos devuelve la fecha en que el precio era el máximo de todo el df.
Ponemos el texto Amplitud, y el número con 2 decimales.
El cálculo numérico de la amplitud es: Precio máximo menos Precio mínimo.
Y lo situamos verticalmente en la fecha del máximo precio con '(acciones['apple'].idxmax()'
y horizontalmente en: Precio mínimo más la mitad de la amplitud con (acciones["apple"].max()-acciones["apple"].min())/2)
Una vez que ya tenemos la situación lo centramos horizontal y verticalmente con ha = "center", va = "center"
'''
ax.annotate("Amplitud %.2f"%(acciones['apple'].max() - acciones['apple'].min()),
xy = (acciones['apple'].idxmax(), acciones['apple'].min() + (acciones["apple"].max()-acciones["apple"].min())/2),
ha = "center", va = "center", fontname = "Serif", fontsize = 14)
## PONEMOS LA FLECHA QUE APUNTA HACIA ARRIBA.
# "width":1 (grueso de la línea de la flecha)
# "headwidth":7 (grueso de la punta de la flecha)
# "connectionstyle":"arc3" (tipo de la conexión de la flecha)
ax.annotate("", xy = (acciones['apple'].idxmax(),acciones['apple'].max()),
xytext = (acciones['apple'].idxmax(), acciones['apple'].min() + (acciones["apple"].max()-acciones["apple"].min())/1.9),
arrowprops = {"width":1,"headwidth":7, "connectionstyle":"arc3", "color":"black" })
## PONEMOS LA FLECHA QUE APUNTA HACIA ABAJO.
ax.annotate("", xy = (acciones['apple'].idxmax(), acciones['apple'].min()),
xytext = (acciones['apple'].idxmax(),acciones['apple'].min()+(acciones['apple'].max()-acciones['apple'].min())/2.1),
arrowprops = {"width":1, "headwidth":7, "connectionstyle":"arc3", "color":"black"})
## LO REPETIMOS TODO PARA FACEBOOK
ax.annotate("Amplitud %.2f"%(acciones['facebook'].max() - acciones['facebook'].min()),
xy = (acciones['facebook'].idxmax(), acciones['facebook'].min() + (acciones["facebook"].max()-acciones["facebook"].min())/2),
ha = "center", va = "center", fontname = "Serif", fontsize = 14, color="#EC4D37" )
ax.annotate("", xy = (acciones['facebook'].idxmax(),acciones['facebook'].max()),
xytext = (acciones['facebook'].idxmax(), acciones['facebook'].min() + (acciones["facebook"].max()-acciones["facebook"].min())/1.9),
arrowprops = {"width":1,"headwidth":7, "connectionstyle":"arc3", "color":"#EC4D37"})
ax.annotate("", xy = (acciones['facebook'].idxmax(), acciones['facebook'].min()),
xytext = (acciones['facebook'].idxmax(),acciones['facebook'].min()+(acciones['facebook'].max()-acciones['facebook'].min())/2.1),
arrowprops = {"width":1, "headwidth":7, "connectionstyle":"arc3", "color":"#EC4D37"})
#plt.savefig('C:/Users/USER/Dropbox/PYTHON/Imagenes/Facebook vs Apple.jpg') # Guardar gráfico en imagen .jpg
#Simulación de línea vertical (no está completo)
#ax.vlines(acciones.index[120], acciones['facebook'].min(), acciones['facebook'].max(), linestyle = ":", color = "#EC4D37")
plt.show()
![]() |
C:\Users\USER\Dropbox\BLOGGER\Imagenes\Python\003_Facebook vs Apple.jpg |