Usando Altair en Python para visualizar el rendimiento de las acciones de Tesla

En publicaciones anteriores ya he introducido seaborn y matplotlib.pyplot para visualización en Python. En este post quiero presentarles el módulo altair. Este es un módulo alternativo que admite la visualización en Python.

El módulo altair se puede instalar con pip install en el símbolo del sistema.

A continuación, importo el módulo altair junto con pandas y pandas_datareader. Usaré pandas_datareader para leer los datos del precio de las acciones de Tesla. Visualizaré la evolución del precio de las acciones con un gráfico creado en altair. Pero primero consulto los datos de Yahoo Finance y muestro el encabezado del marco de datos recuperado:

# importar módulos relevantes
import pandas as pd
import altair as alt
import pandas_datareader.data as web
import datetime
# leer en los datos de precios de las acciones de tesla durante los últimos 5 años
start = datetime.datetime(2015,10,11)
end = datetime.datetime(2020,10,11)
df = web.DataReader("TSLA","yahoo",start,end)
# mostrar el encabezado del marco de datos del precio de las acciones
df.head()
HighLowOpenCloseVolumeAdj Close
Date
2015-10-1244.59999843.05400144.59800043.11600119181500.043.116001
2015-10-1344.50400242.22600242.65599843.84999825857500.043.849998
2015-10-1444.18999943.08599944.13399943.37599915522000.043.375999
2015-10-1544.34600142.74000243.28599944.26200114221000.044.262001
2015-10-1646.09600144.57400144.60800245.40200021672500.045.402000

Actualmente, las fechas son índices de fila del marco de datos. Para trabajar con altair, es mejor agregarlos como una columna separada con un encabezado de columna específico:

df["Dates"] = df.index

Ahora que tengo mis datos, puedo crear un gráfico de precios de acciones con el módulo altair en Python:

# crear gráfico con altair
chart = alt.Chart(df).mark_area().encode(
    x="Dates",
    y="Close"
)
# mostrar gráfico de altair
chart

Ese fue un gráfico muy básico. A continuación creo otro gráfico de áreas, con un degradado de color:

# crear gráfico de altair
chart = alt.Chart(df).mark_area(line={'color':'darkgreen'},color=alt.Gradient(
        gradient='linear',
        stops=[alt.GradientStop(color='white', offset=0),
               alt.GradientStop(color='darkgreen', offset=1)])).encode(x="Dates",y="Close")
# mostrar gráfico de altair
chart

Quiero agregar un título al gráfico. También quiero cambiar los títulos de los ejes X e Y. Lo hago en el siguiente código:

# agregar título de gráfico
chart.title = "Daily TSLA stock closing prices [USD]"
# ajustar las etiquetas de los ejes xey
chart.encoding.x.title = "Time"
chart.encoding.y.title = "Daily closing price [USD]"
# mostrar gráfico modificado
chart

Ahora intentemos hacer un diagrama de velas. Una explicación del análisis de existencias con diagramas de velas puede, por ejemplo, se puede encontrar aquí: https://diagrammm.com/candlestick_chart

# crear condiciones de color
color_conditions = alt.condition("datum.Open <= datum.Close",
                                 alt.value("green"),
                                 alt.value("red"))# build chart
chart = alt.Chart(df).encode(x = "Dates")
# establecer el título del gráfico
chart.title = "Candle-stick diagram of TSLA stock prices"
# establecer la etiqueta del eje x para el gráfico
chart.encoding.x.title = "Time"
# construir una marca de regla usando el método mark_rule ()
rules = chart.mark_rule().encode(
    y = "Low",
    y2 = "High")
# ajustar la etiqueta del eje y para las reglas
rules.encoding.y.title = "Price"
# construir barras
bars = chart.mark_bar().encode(
    y="Open",
    y2="Close",
    color = color_conditions)
# mostrar reglas y barras (ambas basadas en el mismo gráfico básico
rules + bars

En el diagrama de velas de arriba, las barras de altair se han colocado como una segunda capa sobre las reglas de altair.

Creemos algunos ejemplos de trazado más, utilizando los datos del precio de las acciones de Tesla. En el siguiente código, creo un gráfico de línea de precio de acciones para los precios de cierre diarios de las acciones de Tesla:

# crear diagrama de línea
chart = alt.Chart(df).mark_line().encode(x="Dates",y="Close")
# establecer etiquetas de título y eje
chart.title = "Daily TSLA stock closing prices"
chart.encoding.x.title = "Time"
chart.encoding.y.title = "Price [USD]"
# mostrar gráfico de líneas
chart

Al crear un gráfico, también puedo especificar algunas propiedades adicionales como, por ejemplo, el ancho del gráfico:

Al crear un gráfico, también puedo especificar algunas propiedades adicionales como, por ejemplo, el ancho del gráfico:

# definir las condiciones de coloración
color_conditions = alt.condition("datum.Open <= datum.Close",                                  alt.value("green"),                                  alt.value("red"))
# construir gráfico
chart = alt.Chart(df).encode(x = "Dates").properties(width=800) 
# establecer el título del gráfico
chart.title = "Candle-stick diagram of TSLA stock prices" 
# establecer la etiqueta del eje x para el gráfico
chart.encoding.x.title = "Time" 
# construir una marca de regla usando el método mark_rule ()
rules = chart.mark_rule().encode(     y = "Low",     y2 = "High") 
# adjust y axis label for rules rules.encoding.y.title = "Price" 
# construir barras
bars = chart.mark_bar().encode(     y="Open",     y2="Close",     color = color_conditions) 
# mostrar reglas y barras (ambas basadas en el mismo gráfico básico
rules + bars 

Esto completa mi introducción básica al módulo altair en Python. Para obtener más información, p. Ej. recomiendo consultar la documentación: https://altair-viz.github.io/

También puede consultar mis otras publicaciones sobre visualización en Python y R, que cubren, por ejemplo, visualización de datos espaciales con Leaflet en R, geocodificación y mapas de calor con Folium y Leaflet en Python y mapas de calor 3D con deckgl en R. También escribí varios tutoriales sobre visualización de datos con Seaborn y Matplotlib.pyplot en Python. Yo, por ejemplo utilizó Matplotlib para visualizar la frontera eficiente de las existencias de camiones aplicando la teoría de la cartera de Markowitz en combinación con simulaciones de montecarlo.

Leave a Reply

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Close

Meta