O intuito desse projeto é a criação de um dashboard em python utilizando a biblioteca dash. Eu sei que o mercado tem exigido bastante sobre Tableau, Power BI entre outras ferramentas. Abaixo deixarei algumas vantagens em construir dashboards com a biblioteca Dash.
-
Totalmente Personalizável: Dash permite um controle total sobre a aparência e o funcionamento do seu dashboard. Você pode personalizar cada aspecto para se adequar às necessidades específicas do seu projeto.
-
Linguagem Python: Se você já está familiarizado com Python, Dash oferece uma vantagem significativa. Você pode usar suas habilidades de programação para criar dashboards interativos sem precisar aprender uma nova linguagem.
-
Integração com Bibliotecas Python: Dash é altamente compatível com outras bibliotecas Python, como Pandas, Plotly e NumPy, o que facilita a manipulação e visualização de dados.
-
Open Source: Dash é de código aberto, o que significa que você não precisa pagar licenças caras. É uma opção econômica para empresas e projetos menores.
-
Flexibilidade: Você pode hospedar seu aplicativo Dash em um servidor da sua escolha, permitindo maior flexibilidade na implantação.
-
Controle Local: Dash permite a criação de dashboards locais, o que é útil para manter o controle de seus dados e análises.
-
Escalabilidade: Com a crescente popularidade do Python, Dash tem uma comunidade ativa que continua aprimorando e expandindo suas funcionalidades.
-
Segurança: Dash oferece recursos para garantir que seus dados e dashboards sejam seguros, permitindo o controle do acesso aos usuários autorizados.
-
Suporte e Documentação: Dash possui uma comunidade sólida e uma abundância de recursos de aprendizado e documentação online.
Embora Power BI e Tableau também tenham suas vantagens, Dash se destaca em termos de personalização, controle e uso da linguagem Python. A escolha entre essas ferramentas depende das necessidades específicas do projeto e da experiência da equipe.
- dash==2.7.0
- dash-bootstrap-components==1.5.0
- dash-bootstrap-templates==1.1.1
- dash-core-components==2.0.0
- dash-html-components==2.0.0
- dash-table==5.0.0
- gunicorn==20.1.0
- numpy==1.20.0
- pandas==1.3.0
- plotly==5.5.0
Descrição Simples:
Este é o coração do nosso projeto! Aqui, criamos o nosso aplicativo mágico usando a biblioteca Dash. Além disso, preparamos nossos dados de vendas de supermercado para uma análise incrível. 🛒✨
-
O que Este Código Faz:
-
Inicializa o aplicativo Dash com um estilo visual encantador.
-
Prepara nosso servidor para a mágica acontecer.
-
Em seguida, importamos os dados de vendas de um arquivo CSV chamado "supermarket_sales.csv" e realizamos algumas ações mágicas:
-
Verificamos informações sobre os dados.
-
Descobrimos quais cidades estão em nossos dados.
-
Transformamos a coluna de data em um formato de data.
-
A partir daqui, nossa jornada mágica de análise de vendas começa! ✨📊
- app = dash.Dash(external_stylesheets=[dbc.themes.MINTY])
- server = app.server
- data = pd.read_csv("supermarket_sales.csv")
- data.info()
- data["City"].value_counts().index
- data["Date"] = pd.to_datetime(data["Date"])
Aqui, nós moldamos a aparência do nosso aplicativo mágico! Utilizando o Dash e Dash Bootstrap Components, criamos um layout incrível para a nossa análise de vendas. 📈✨
-
O que Este Código Faz:
-
Configura um painel com várias seções, organizadas de forma encantadora.
-
Apresenta informações-chave sobre nossos dados de vendas de supermercado.
-
Oferece opções interativas para explorar as cidades e variáveis de análise.
-
Exibe gráficos mágicos que revelam insights sobre nossos dados.
-
Nosso aplicativo é agora uma janela para o mundo das análises de vendas! 🪄😊
app.layout = html.Div(children=[ dbc.Row([ dbc.Col([ dbc.Card([ html.H2("RBlack", style={"font-family": "Voltaire", "font-size": "60px"}), html.Hr(), html.H5("Cities:"), dcc.Checklist(data["City"].value_counts().index, data["City"].value_counts().index, id="check_city", inputStyle={"margin-right": "5px", "margin-left": "20px"}), html.Hr(), html.H5("Analysis Variable"), dcc.RadioItems(["gross income", "Rating"], "gross income", id="main_variable", inputStyle={"margin-right": "5px", "margin-left": "20px"}), ], style={"height":"90vh", "margin":"20px", "padding":"20px"}) ], sm=2), dbc.Col([ dbc.Row([ dbc.Col([dcc.Graph(id="city_fig"),],sm=4), dbc.Col([dcc.Graph(id="gender_fig"),],sm=4), dbc.Col([dcc.Graph(id="pay_fig"),],sm=4) ]), dbc.Row([dcc.Graph(id="income_per_date_fig")]), dbc.Row([dcc.Graph(id="income_per_product_fig")]) ], sm=10) ]) ] )
Aqui estão os feitiços que tornam nosso aplicativo verdadeiramente mágico! Esses callbacks, criados com o Dash, reagem às escolhas do usuário e geram gráficos incríveis. 🪄📊
O que Este Código Faz:
-
Recebe escolhas do usuário, como cidades e variáveis principais.
-
Filtra os dados com base nas escolhas.
-
Calcula estatísticas mágicas, como soma ou média, dependendo da variável principal.
-
Cria gráficos mágicos que revelam insights com base nas escolhas do usuário.
-
Os gráficos gerados são uma janela para a compreensão de nossos dados e revelam segredos sobre nossas vendas de supermercado. 🌟😊
@app.callback([ Output("city_fig", "figure"), Output("gender_fig", "figure"), Output("pay_fig", "figure"), Output("income_per_date_fig", "figure"), Output("income_per_product_fig", "figure") ], [ Input("check_city", "value"), Input("main_variable", "value") ]) def render_graph(cities, main_variable): operation = np.sum if main_variable == "gross income" else np.mean data_filtered = data[data["City"].isin(cities)] data_city = data_filtered.groupby("City")[main_variable].apply(operation).to_frame().reset_index() data_gender = data_filtered.groupby(["Gender", "City"])[main_variable].apply(operation).to_frame().reset_index() data_payment = data_filtered.groupby("Payment")[main_variable].apply(operation).to_frame().reset_index() data_product_time = data_filtered.groupby("Date")[main_variable].apply(operation).to_frame().reset_index() data_product_income = data_filtered.groupby(["Product line", "City"])[main_variable].apply(operation).to_frame().reset_index() fig_city = px.bar(data_city, x="City", y=main_variable) fig_payment = px.bar(data_payment, y="Payment", x=main_variable, orientation="h") fig_gender = px.bar(data_gender, y=main_variable,x="Gender", color="City",barmode="group") fig_product_income = px.bar(data_product_income, x= main_variable, y="Product line", color="City", orientation="h", barmode="group") fig_product_date = px.bar(data_product_time, y= main_variable, x="Date") for fig in [fig_city,fig_payment,fig_gender,fig_product_date]: fig.update_layout(margin=dict(l=0,r=0,t=20,b=20),height=200, template="minty") fig_product_income.update_layout(margin=dict(l=0,r=0,t=20,b=20),height=500) return fig_city, fig_gender, fig_payment, fig_product_date, fig_product_income
Aqui está o toque final de magia! Ao executar esta parte do código, nosso aplicativo ganha vida e fica pronto para encantar. 🚀✨
O que Este Código Faz:
-
Verifica se estamos executando o aplicativo como o principal ponto de entrada.
-
Inicializa o servidor para o nosso aplicativo mágico.
-
Prepara o aplicativo para ser acessado, sem mostrar detalhes mágicos durante o processo.
-
Com esse feitiço, nosso aplicativo estará pronto para ser lançado no mundo e compartilhado com todos. A magia está prestes a acontecer! 🪄😊
if __name__ == "__main__": app.run_server(debug=False)