Altair em Python: Visualizar ações da Tesla

Nas postagens anteriores já apresentei seaborn e matplotlib .pyplot para visualização em Python. Neste post quero apresentar o módulo altair. Este é um módulo alternativo que suporta visualização em Python.

O módulo altair pode ser instalado com pip install por meio do prompt de comando.

Abaixo eu importo o módulo altair junto com pandas e pandas_datareader . Usarei o pandas_datareader para ler os dados de preço das ações da Tesla. Vou visualizar a evolução do preço das ações com um gráfico criado no altair. Mas primeiro eu consulto os dados do Yahoo Finance e mostro o cabeçalho do dataframe recuperado:

# importa módulos relevantes 
import pandas as pd 
import altair as alt 
import pandas_datareader .data as web 
import datetime 
# lê dados de preços de ações para tesla nos últimos 5 anos 
start = datetime.datetime(2015,10,11) 
end = datetime.datetime (2020,10,11) 
df = web.DataReader("TSLA","yahoo",start,end) 
# exibe o cabeçalho do quadro de dados de preços de ações 
df.head()
AltoBaixoAbrirPertoVolumeAjuste Fechar
Encontro
2015-10-1244.59999843.05400144,59800043.11600119181500.043.116001
13/10/201544.50400242.22600242.65599843.84999825857500.043.849998
2015-10-1444.18999943.08599944.13399943.37599915522000.043.375999
15/10/201544.34600142.74000243.28599944.26200114221000.044.262001
16/10/201546.09600144.57400144.60800245.40200021672500.045.402000

Atualmente, as datas são índices de linha do quadro de dados. Para trabalhar com altair, é melhor adicioná-los como uma coluna separada com um cabeçalho de coluna especificado:

df["Datas"] = df.index

Agora que tenho meus dados, posso criar um gráfico de preços de ações com o módulo altair em Python:

# cria gráfico com gráfico altair 
= alt.Chart(df).mark_area().encode( 
    x="Datas", 
    y="Fechar" 
) # exibe gráfico 
gráfico 
altair

Esse foi um gráfico muito básico. Abaixo crio outro gráfico de área, com um gradiente de cores:

# criar 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="Datas",y="Fechar") # exibe gráfico 
gráfico 
de altair

Quero adicionar um título ao gráfico. Também quero alterar os títulos dos eixos x e y. Eu faço isso no código abaixo:

# adicione o título do gráfico 
chart.title = "Preços de fechamento diários da TSLA [USD]" 
# ajuste os rótulos dos eixos x e y 
chart.encoding.x.title = "Hora" 
chart.encoding.y.title = "Preço de fechamento diário [USD ]" # exibir gráfico 
gráfico 
modificado

Agora vamos tentar fazer um diagrama de velas. Uma explicação da análise de ações com diagramas de velas pode ser encontrada, por exemplo, aqui: https://diagrammm.com/candlestick_chart

# cria condições de cores 
color_conditions = alt.condition("datum.Open <= datum.Close", 
                                 alt.value("green"), 
                                 alt.value("red"))# build chart 
chart = alt.Chart(df) .encode(x = "Datas") 
# define o título do gráfico 
chart.title = "Diagrama de velas dos preços das ações da TSLA" 
# define o rótulo do eixo x para o gráfico 
chart.encoding.x.title = "Tempo" 
# constrói uma regra marque usando o método mark_rule() 
rules = chart.mark_rule().encode( 
    y = "Low", 
    y2 = "High") 
# ajuste o rótulo do eixo y para regras 
rules.encoding.y.title = "Preço"
# construir barras 
bars = chart.mark_bar().encode(
    y="Open",
    color = color_conditions) 
# exibe regras e barras (ambas baseadas nas mesmas 
regras básicas do gráfico + barras

No diagrama do castiçal acima, as barras do altar foram colocadas como uma segunda camada sobre as réguas do altar.

Vamos criar mais alguns exemplos de plotagem, usando os dados de preços de ações da Tesla. No código abaixo, crio um gráfico de linhas de preços de ações para os preços de fechamento diário das ações da Tesla:

# cria plotagem de linhas 
chart = alt.Chart(df).mark_line().encode(x="Datas",y="Fechar") 
# define o título e os rótulos dos eixos 
chart.title = Gráfico "Preços diários de fechamento das ações TSLA" 
. encoding.x.title = "Tempo" 
chart.encoding.y.title = "Preço [USD]" 
# exibir 
gráfico de plotagem de linhas

Ao criar um gráfico, também posso especificar algumas propriedades adicionais, como por exemplo, a largura do gráfico:

# cria condições de cores 
color_conditions = alt.condition("datum.Open <= datum.Close", 
                                 alt.value("green"), 
                                 alt.value("red"))# build chart 
chart = alt.Chart(df) .encode(x = "Datas").properties(width=800) 
# define o título do gráfico 
chart.title = "Diagrama de velas dos preços das ações da TSLA" 
# define o rótulo do eixo x para o gráfico 
chart.encoding.x.title = "Time" 
# constrói uma marca de regra usando o método mark_rule() 
rules = chart.mark_rule().encode( 
    y = "Low", 
    y2 = "High") 
# ajusta o rótulo do eixo y para regras 
rules.encoding.y.title = "Preço"
# construir barras 
    y="Abrir",
    y2="Close", 
    color = color_conditions) 
# exibe regras e barras (ambas baseadas nas mesmas 
regras básicas do gráfico + barras

Isso conclui minha introdução básica ao módulo altair em Python. Para mais informações, por exemplo, recomendo verificar a documentação: https://altair-viz.github.io/

Você também pode conferir meus outros posts sobre visualização em Python e R, cobrindo, por exemplo, visualização de dados espaciais com Leaflet em R, geocodificação e mapeamento de calor com Folium e Leaflet em Python e mapeamento de calor 3D com deckgl em R. Também escrevi vários tutoriais sobre visualização de dados com Seaborn e Matplotlib .pyplot em Python. Por exemplo, usei Matplotlib para visualizar a fronteira eficiente de estoques de caminhões aplicando a teoria de portfólio de Markowitz em combinação com simulações de monte-carlo.

You May Also Like

Leave a Reply

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.