sure @adamschroeder, thanks for your response here follow the hole code:
import dash
from dash import dcc, html
from dash.dependencies import Input,Output
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px
import dash_bootstrap_components as dbc
from dash_bootstrap_templates import load_figure_template
import gunicorn
def le_excel(x,y):
df_dic = pd.read_excel(x,y)
return df_dic
btg = le_excel('Controle de Contratos - Atualizado 09.2023.xlsx',1)
guide = le_excel('Controle de Contratos - Atualizado 09.2023.xlsx',2)
genial = le_excel('Controle de Contratos - Atualizado 09.2023.xlsx',3)
agora = le_excel('Controle de Contratos - Atualizado 09.2023.xlsx',4)
orama = le_excel('Controle de Contratos - Atualizado 09.2023.xlsx',5)
novas = le_excel('Controle de Contratos - Atualizado 09.2023.xlsx',6)
arquivo_final = pd.concat([btg,guide,genial,agora,orama]).reset_index()
arquivo_final.drop(columns=['index'],inplace=True)
arquivo_final.drop(988,inplace=True)
linhas_para_retirar =[588,593,983,984,985,986,987,1019,1020,1021,1022,1023,1036,1037,1038,1039,1040,1041,1044,1045,1046,1047,1048]
arquivo_final.drop(linhas_para_retirar,inplace=True)
arquivo_final.drop(1018,inplace=True)
arquivo_final = arquivo_final[[
'Corretora', 'Nome_cliente', 'Conta', 'Escritorio', 'UF', 'Assessor',
'Mesa de Operação', 'Status', 'Exeção', 'Inicio da gestão',
'Data do distrato', 'Carteira', 'Taxa de gestão',
'Benchmark','Taxa de performance','Janeiro/2020', 'fereiro/2020', 'Março/2020',
'Abril/2020', 'Maio/2020', 'junho/2020', 'julho/2020', 'Agosto/2020',
'Setembro/2020', 'Outubro/2020', 'Novembro/2020', 'Dezembro/2020',
'Janeiro/2021', 'fereiro/2021', 'Março/2021', 'Abril/2021', 'Maio/2021',
'junho/2021', 'julho/2021', 'Agosto/2021', 'Setembro/2021',
'Outubro/2021', 'Dezembro/2021', 'Novembro/2021', 'fereiro/2022',
'Março/2022', 'Abril/2022', 'Maio/2022', 'junho/2022', 'julho/2022',
'Agosto/2022', 'Setembro/2022', 'Outubro/2022', 'Novembro/2022',
'Dezembro/2022', 'Janeiro/2023', 'fereiro/2023',
'Março/2023', 'Abril/2023', 'Maio/2023',
'junho/2023', 'julho/2023', 'Agosto/2023', 'Setembro/2023',
'Outubro/2023'
]]
col_fill_na = ['Janeiro/2020', 'fereiro/2020', 'Março/2020',
'Abril/2020', 'Maio/2020', 'junho/2020', 'julho/2020', 'Agosto/2020',
'Setembro/2020', 'Outubro/2020', 'Novembro/2020', 'Dezembro/2020',
'Janeiro/2021', 'fereiro/2021', 'Março/2021', 'Abril/2021', 'Maio/2021',
'junho/2021', 'julho/2021', 'Agosto/2021', 'Setembro/2021',
'Outubro/2021', 'Dezembro/2021', 'Novembro/2021', 'fereiro/2022',
'Março/2022', 'Abril/2022', 'Maio/2022', 'junho/2022', 'julho/2022',
'Agosto/2022', 'Setembro/2022', 'Outubro/2022', 'Novembro/2022',
'Dezembro/2022', 'Janeiro/2023', 'fereiro/2023',
'Março/2023', 'Abril/2023', 'Maio/2023',
'junho/2023', 'julho/2023', 'Agosto/2023', 'Setembro/2023',
'Outubro/2023'
]
for col in col_fill_na:
arquivo_final[col] = arquivo_final[col].fillna(0)
arquivo_final['Inicio da gestão'] = pd.to_datetime(arquivo_final['Inicio da gestão'],errors='coerce')
arquivo_final['Inicio da gestão'] = arquivo_final['Inicio da gestão'].dt.strftime('%d/%m/%Y')
arquivo_final['Data do distrato'] = pd.to_datetime(arquivo_final['Data do distrato'],errors='coerce')
arquivo_final['Data do distrato'] = arquivo_final['Data do distrato'].dt.strftime('%d/%m/%Y')
slider_options = ['Janeiro/2020', 'fereiro/2020', 'Março/2020',
'Abril/2020', 'Maio/2020', 'junho/2020', 'julho/2020', 'Agosto/2020',
'Setembro/2020', 'Outubro/2020', 'Novembro/2020', 'Dezembro/2020',
'Janeiro/2021', 'fereiro/2021', 'Março/2021', 'Abril/2021', 'Maio/2021',
'junho/2021', 'julho/2021', 'Agosto/2021', 'Setembro/2021',
'Outubro/2021', 'Dezembro/2021', 'Novembro/2021', 'fereiro/2022',
'Março/2022', 'Abril/2022', 'Maio/2022', 'junho/2022', 'julho/2022',
'Agosto/2022', 'Setembro/2022', 'Outubro/2022', 'Novembro/2022',
'Dezembro/2022', 'Janeiro/2023', 'fereiro/2023', 'Março/2023',
'Abril/2023', 'Maio/2023', 'junho/2023', 'julho/2023', 'Agosto/2023',
'Setembro/2023', 'Outubro/2023']
marks = {i: option for i, option in enumerate(slider_options)}
app = dash.Dash(external_stylesheets = [dbc.themes.SOLAR],suppress_callback_exceptions=True)
app.layout =html.Div( children=[
dbc.Row([
dbc.Col([dbc.Card([
html.H3('Selecione o período'),
dcc.Dropdown(options=marks
,id='slider',
),
html.H3('Seleione a corretora'),
dcc.Checklist(arquivo_final['Corretora'].value_counts().index,id='corretora'),
html.H3('Seleione o estado'),
dcc.Checklist(arquivo_final['UF'].value_counts().index,id='estado'),
html.H3('Seleione o escritorio'),
dcc.Checklist(arquivo_final['Escritorio'].value_counts().index,id='Escritorio')
],style={'height':'98vh',
'padding':'5px',
'margin':'5px',
'font-size':'20px'})],style = {'height':'92vh','margin':'3px'},sm=2),
dbc.Col([
dbc.Card([
html.H4('Dashboard Interativo'),
dbc.Row([
dbc.Col([
dcc.Graph(id='pl_total_barra',config={"displayModeBar":False,"showTips":False}),
],style={'margin':'5px','padding':'5px'},sm=3),
dbc.Col([
dcc.Graph(id='pl_total_outro',style={'margin-top':'15px'}),
],sm=8)
]),
dbc.Row([
dbc.Col([
dcc.DatePickerRange(id='selecao_de_data',style={'margin-bottom':'20px'}),
dbc.Row([
dcc.Graph(id='entrada_clientes')
]),],style={'margin':'5px','padding':'5px'},sm=5),
dbc.Col([
dcc.Graph(id='sainda_clientes',style={'margin-top':'65px'})
],style={'margin':'5px','padding':'5px'},sm=5),
dbc.Row([
dbc.Col([
dcc.Graph(id='entrada_ecri',style={'margin-top':'5px'}),
],style={'margin':'5px','padding':'5px'},sm=5),
dbc.Col([
dcc.Graph(id='saida_escri',style={'margin-top':'20px'})
],style={'margin':'5px','padding':'5px'},sm=5),
dbc.Row([
dbc.Col([
dcc.Graph(id='pl_corretora')
],style={'margin':'5px','padding':'5px'},sm=5),
dbc.Col([
dcc.Graph(id='contas_por corretora')
],style={'margin':'5px','padding':'5px'},sm=5),
dbc.Row([
dbc.Col([
dcc.Graph(id='top_assessores')
],style={'margin':'5px','padding':'5px'},sm=11),
dbc.Row([
dbc.Col([
dcc.Graph(id='aportes')
],style={'margin':'5px','padding':'5px'},sm=4),
dbc.Col([
dcc.Graph(id='resgates')
],style={'margin':'5px','padding':'5px'},sm=4),
dbc.Col([
dcc.Graph(id ='apo_res_dif')
],style={'margin':'5px','padding':'5px'},sm=3),
dbc.Row([
dbc.Col([
dcc.Graph(id='top_10_clientes')
],style={'margin':'5px','padding':'5px'},sm=5),
dbc.Col([
dcc.Graph(id='pl_por_perfil')
],style={'margin':'5px','padding':'5px'},sm=5)
])
])
])
])
])
])
])
],style={'height':'98vh',
'padding':'5px',
'margin':'5px',
'font-size':'20px'})
]),
])
@app.callback(
Output('pl_total_barra','figure'),
[Input('corretora','value'),
Input('estado','value'),
Input('Escritorio','value'),
Input('slider','value')]
)
def update_fig(broker,city,office,selected_option):
if not broker or not city or not office or not selected_option:
return go.Figure()
filtro_corretora = arquivo_final[arquivo_final['Corretora'].isin(broker)]
filtro_estado = filtro_corretora[filtro_corretora['UF'].isin(city)]
filtro_office = filtro_estado[filtro_estado['Escritorio'].isin(office)]
cols_to_sum = ['Janeiro/2020', 'fereiro/2020', 'Março/2020',
'Abril/2020', 'Maio/2020', 'junho/2020', 'julho/2020', 'Agosto/2020',
'Setembro/2020', 'Outubro/2020', 'Novembro/2020', 'Dezembro/2020',
'Janeiro/2021', 'fereiro/2021', 'Março/2021', 'Abril/2021', 'Maio/2021',
'junho/2021', 'julho/2021', 'Agosto/2021', 'Setembro/2021',
'Outubro/2021', 'Dezembro/2021', 'Novembro/2021', 'fereiro/2022',
'Março/2022', 'Abril/2022', 'Maio/2022', 'junho/2022', 'julho/2022',
'Agosto/2022', 'Setembro/2022', 'Outubro/2022', 'Novembro/2022',
'Dezembro/2022', 'Janeiro/2023', 'fereiro/2023',
'Março/2023', 'Abril/2023', 'Maio/2023',
'junho/2023', 'julho/2023', 'Agosto/2023', 'Setembro/2023',
'Outubro/2023']
for col in cols_to_sum:
arquivo_final[col] = pd.to_numeric(arquivo_final[col],errors='coerce')
#value_to_show = filtro_office['Outubro/2023'].sum()
if selected_option in marks:
selected_colum = marks[selected_option]
if selected_colum in filtro_office.columns:
value_to_show = filtro_office[selected_colum].sum()
print(arquivo_final.info())
fig_pl_total = go.Figure()
fig_pl_total.add_trace(go.Indicator(
value=value_to_show
))
return fig_pl_total
if __name__ == '__main__':
app.run_server(debug=True)