fschwartzer's picture
Update app.py
c318f99
raw
history blame
No virus
2.69 kB
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import locale
# Set the locale to Brazilian Portuguese
locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')
df = pd.read_csv('last_results.csv')
image1 = 'images/rs_pmpa.PNG'
title_html = """
<style>
@font-face {
font-family: 'Quicksand';
src: url('font/Quicksand-VariableFont_wght.ttf') format('truetype');
}
body {
font-family: 'Quicksand', sans-serif;
}
.custom-title {
color: darkgreen;
font-size: 30px;
font-weight: bold;
}
</style>
<span class='custom-title'>PREVISÕES DE RECEITAS</span>
"""
# Set a fixed width for the sidebar
st.markdown(
"""
<style>
.sidebar .sidebar-content {
width: 300px;
}
</style>
""",
unsafe_allow_html=True
)
with st.sidebar:
st.image(image1, use_column_width=True)
st.markdown(title_html, unsafe_allow_html=True)
selected_instituicao = st.selectbox('Seleciona Instituição', df['Instituição'].unique())
selected_conta = st.selectbox('Seleciona Conta', df['Conta'].unique())
# Generate some example data
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
# Plot the lines using Matplotlib
fig, ax = plt.subplots()
ax.plot(x, y1, label='Green Line', color='green')
ax.plot(x, y2, label='Red Line', color='red')
ax.plot(x, y3, label='Yellow Line', color='yellow')
# Set plot properties
ax.legend()
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
# Display the Matplotlib plot in the Streamlit sidebar
st.sidebar.pyplot(fig)
# Filter the DataFrame based on selected values
filtered_df = df[(df['Instituição'] == selected_instituicao) & (df['Conta'] == selected_conta)]
# Display the filtered DataFrame
st.write('Filtered DataFrame:')
st.write(filtered_df)
# Display the Forecasts values
if not filtered_df.empty:
forecasts_values = filtered_df['Forecasts'].values
data_string = forecasts_values
# Split the string into lines
lines = data_string.split('\n')
# Iterate through the lines and extract the values
for line in lines[:-2]: # Exclude the last two elements (empty and the 'Name: Valor, dtype: float64' line)
period, value = line.split()
num_float = float(value)
# Format as monetary value with dots and comma
monetary_value = locale.currency(num_float, grouping=True)
st.write(f"Período {period}: {monetary_value}")
else:
st.warning('No data available for the selected filters.')