generated from streamlit/basic-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5b48e91
commit af9648e
Showing
1 changed file
with
58 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,60 @@ | ||
import altair as alt | ||
import numpy as np | ||
import pandas as pd | ||
import streamlit as st | ||
import pandas as pd | ||
|
||
""" | ||
# Welcome to Streamlit! | ||
Edit `/streamlit_app.py` to customize this app to your heart's desire :heart:. | ||
If you have any questions, checkout our [documentation](https://docs.streamlit.io) and [community | ||
forums](https://discuss.streamlit.io). | ||
In the meantime, below is an example of what you can do with just a few lines of code: | ||
""" | ||
|
||
num_points = st.slider("Number of points in spiral", 1, 10000, 1100) | ||
num_turns = st.slider("Number of turns in spiral", 1, 300, 31) | ||
|
||
indices = np.linspace(0, 1, num_points) | ||
theta = 2 * np.pi * num_turns * indices | ||
radius = indices | ||
|
||
x = radius * np.cos(theta) | ||
y = radius * np.sin(theta) | ||
|
||
df = pd.DataFrame({ | ||
"x": x, | ||
"y": y, | ||
"idx": indices, | ||
"rand": np.random.randn(num_points), | ||
}) | ||
|
||
st.altair_chart(alt.Chart(df, height=700, width=700) | ||
.mark_point(filled=True) | ||
.encode( | ||
x=alt.X("x", axis=None), | ||
y=alt.Y("y", axis=None), | ||
color=alt.Color("idx", legend=None, scale=alt.Scale()), | ||
size=alt.Size("rand", legend=None, scale=alt.Scale(range=[1, 150])), | ||
)) | ||
# Título da aplicação | ||
st.title('Minha Carteira de Ações') | ||
|
||
# DataFrame inicial vazio para armazenar as ações | ||
carteira = pd.DataFrame(columns=['Símbolo', 'Quantidade', 'Preço de Compra']) | ||
|
||
# Função para adicionar ação à carteira | ||
def adicionar_acao(symbol, quantity, purchase_price): | ||
global carteira | ||
carteira = carteira.append({ | ||
'Símbolo': symbol, | ||
'Quantidade': quantity, | ||
'Preço de Compra': purchase_price | ||
}, ignore_index=True) | ||
|
||
# Função para calcular o preço médio da carteira | ||
def calcular_preco_medio(): | ||
global carteira | ||
if not carteira.empty: | ||
preco_medio = (carteira['Quantidade'] * carteira['Preço de Compra']).sum() / carteira['Quantidade'].sum() | ||
return preco_medio | ||
else: | ||
return None | ||
|
||
# Função para exibir a carteira completa | ||
def exibir_carteira(): | ||
st.subheader('Carteira Atualizada') | ||
st.write(carteira) | ||
|
||
# Barra de navegação | ||
menu = ['Minha Carteira', 'Adicionar Ações', 'Calcular Preço Médio'] | ||
choice = st.sidebar.selectbox('Menu', menu) | ||
|
||
# Lógica para as opções do menu | ||
if choice == 'Minha Carteira': | ||
exibir_carteira() | ||
elif choice == 'Adicionar Ações': | ||
st.subheader('Adicionar Ações à Carteira') | ||
symbol = st.text_input('Digite o símbolo da ação (ex: AAPL para Apple)') | ||
quantity = st.number_input('Digite a quantidade de ações', min_value=1) | ||
purchase_price = st.number_input('Digite o preço de compra por ação', min_value=0.01) | ||
|
||
if st.button('Adicionar à Carteira'): | ||
adicionar_acao(symbol, quantity, purchase_price) | ||
st.success('Ação adicionada com sucesso!') | ||
exibir_carteira() | ||
|
||
elif choice == 'Calcular Preço Médio': | ||
st.subheader('Calcular Preço Médio da Carteira') | ||
preco_medio = calcular_preco_medio() | ||
if preco_medio is not None: | ||
st.write(f'O preço médio da carteira é: R$ {preco_medio:.2f}') | ||
else: | ||
st.warning('A carteira está vazia. Adicione ações primeiro.') | ||
|
||
# Rodapé | ||
st.info('Desenvolvido por Tiago F. Holanda') |