O mundo dos algoritmos de inteligência artificial (IA) é acelerado. Para tornar nossos algoritmos acessíveis aos usuários, ter interfaces fáceis de usar é inestimável. Streamlit é uma ferramenta que pode fazer mágica ao converter programas complexos de machine learning, redes neurais e outros algoritmos de IA em aplicativos da web simples de usar.
Nesta postagem, exploraremos como o Streamlit pode ser usado para criar implementações de aplicativos web com Python de forma fácil e descomplicada.
Streamlit para a criação de aplicativos web com Python
Streamlit é uma biblioteca que simplifica o processo de transformar códigos de Python, incluindo algoritmos de inteligência artificial, em aplicativos web compartilháveis.
Diferentemente de frameworks como Django e Flask, Streamlit possibilita a criação de aplicativos web com Python sem precisar de códigos adicionais HTML/CSS ou JavaScript. Tudo é feito diretamente em códigos Python de forma simples, clara e, obviamente, pythônica.
Com algumas linhas de código, é possível criar aplicativos web com Python com interfaces interativas e visualmente atraentes, tornando dados e modelos complexos de IA acessíveis a um público mais amplo.
Neste post, faremos uma breve demonstração da implementação de elementos básicos de uma página web com Streamlit. Depois, criaremos um pequeno aplicativo para demonstrar como Streamlit é facilmente integrado com outras bibliotecas Python.
Instalação
Streamlit deve ser instalado preferencialmente através do Anaconda:
conda install -c conda-forge streamlit
Alternativamente, para instalação com pip o comando é:
pip install streamlit
Streamlit para a criação de elementos HTML
Elementos HTML são facilmente criados com Streamlit. É possível criar vários elementos usando o comando write() em conjunto com a notação Markdown. Markdown é uma sintaxe para conversão de texto em HTML. Por exemplo, elementos H1, H2 e H3 podem ser criados com Streamlit usando a notação #, ## e ###, respectivamente.
Crie um arquivo Python chamado tutorial_streamlit.py para testar a criação de alguns elementos de HTML. Copie o código abaixo e salve o arquivo.
import streamlit as st
st.write("""
# exemplo de H1
## exemplo de H2
### exemplo de H3
#### exemplo de H4
##### exemplo de H5
###### exemplo de H6
""")
Para executar o código, é preciso digitar no terminal: streamlit run tutorial_streamlit.py.
A execução do código abre uma página da web usando o localhost. No alto da página, no canto direito, clique na opção Always rerun. Ela atualizará automaticamente qualquer mudança que for feita no código após seu salvamento.
Abaixo, mostramos os elementos criados com o código definido anteriormente.
A implementação de outros elementos usando Streamlit também é fácil. Basta definir o tipo de elemento e especificar seu conteúdo. No código abaixo, criamos um título, depois um exemplo de texto, de área de texto, de botão e de caption (elemento usado para criar legendas e notas). Veja que a inserção de emojis e a alteração de cores do texto também é simples (linha 5).
st.title("exemplo de H1.")
st.text('Exemplo de texto.')
text = st.text_area("Escreva seu texto aqui")
st.button("Clique aqui")
st.caption('Um escrito em _italico_ :blue[e em azul] e emojis :sunglasses:')
Esse é o resultado da execução do código anterior.
Evidentemente, é super fácil inserir imagens numa página da web com Streamlit. Para esse exemplo, use qualquer imagem que tiver. Ela precisa ser aberta com Pillow. Nossa imagem se chama “coruja.jpg”. Atualize no código o nome correto da sua imagem.
from PIL import Image
image = Image.open('coruja.jpg')
st.image(image, caption='Coruja na floresta')
Esse é o resultado da inserção da imagem em nossa página.
Streamlit também pode ser usado para mostrar um trecho de código com a função st.code() ou para escrever equações e fórmulas matemáticas com st.latex(). Digite o exemplo abaixo no seu arquivo.
code = '''def oi():
print("Oi, Streamlit!")'''
st.code(code, language='python')
eq = r'''
a + ar + a r^2 + a r^3 + \cdots + a r^{n-1} =
\sum_{k=0}^{n-1} ar^k =
a \left(\frac{1-r^{n}}{1-r}\right)
'''
st.latex(eq)
O resultado do código acima é esse:
Aplicativo web com Python, yfinance e pandas
Nessa sessão, criaremos um pequeno aplicativo para exemplificar o uso do Streamlit em combinação com outras bibliotecas Python. Nosso aplicativo mostrará as cotações de algumas ações em tempo real mediante uma seleção feita por um usuário. Para isso, usaremos as bibliotecas yfinance e pandas. Para instalá-las com pip, o comando é:
pip install pandas yfinance
Num arquivo Python, importe as bibliotecas necessárias. O arquivo pode se chamar app.py. Depois, no mesmo arquivo, crie um título para a página e uma sidebar como mostrado abaixo. A sidebar será usada para definir algumas opções para um usuário selecionar.
import streamlit as st
import pandas as pd
import yfinance as yf
st.title('Dados do Mercado em Tempo Real')
st.sidebar.title('Selecione Ticker')
Execute o código com o comando streamlit run app.py.
Os elementos aparecerão assim na sua página após a execução do código.
Em seguida, criaremos algumas opções para um usuário selecionar. Nosso aplicativo mostrará cotações de ações. Essas cotações podem ser da Google, Amazon ou Apple. Evidentemente, esse é um aplicativo simples feito apenas para demonstrar como usar Streamlit. Para implementar as opções mencionadas, usaremos checkboxes como mostrado abaixo. Copie os comandos no seu código e salve o arquivo para atualizar a página. Não se esqueça de selecionar a opção Always reruns na página para ela ser atualizada automaticamente a cada salvamento.
st.sidebar.text('Marque o Ticker Selecionado')
google = st.sidebar.checkbox('Google')
apple = st.sidebar.checkbox('Apple')
amazon = st.sidebar.checkbox('Amazon')
Esse é o resultado da nossa página com as opções na sidebar.
Em seguida, definimos uma função para plotar em gráficos os dados de fechamento e volume de transações das ações selecionadas. Selecionamos 1mo como o intervalo que será mostrado. Isso mostrará os dados dos últimos 30 dias.
def display_data(ticker, nome):
tickerData = yf.Ticker(ticker)
tickerDf = tickerData.history(period='1mo')
st.write(f'### Dados de Fechamento e Volume para {nome}')
st.line_chart(tickerDf.Close)
st.line_chart(tickerDf.Volume)
Depois é preciso definir os argumentos da função a partir dos elementos selecionados nas checkboxes da sidebar para cada ação selecionada.
if google:
st.sidebar.write('Google selecionado!')
ticker = 'GOOGL'
display_data(ticker, 'Google')
if apple:
st.sidebar.write('Apple selecionado!')
ticker = 'AAPL'
display_data(ticker, 'Apple')
if amazon:
st.sidebar.write('Amazon selecionado!')
ticker = 'AMZN'
display_data(ticker, 'Amazon')
Salve tudo e execute o código. Abaixo mostramos um exemplo da nossa página com as ações da Google selecionadas.
Conclusão
Neste post, fizemos uma introdução ao Streamlit, uma biblioteca Python para criação de aplicativos web. Streamlit é intuitivo de usar, leve e pode ser facilmente integrado com outras bibliotecas Python. Portanto, se você tem um algoritmo e quer transformá-lo em um aplicativo, Streamlit é uma boa opção. Mas não se esqueça, para fazer a implantação do seu aplicativo online, selecione um servidor com backend Python.