From 71e617465285df9cf2880238c7a3abae863b13a4 Mon Sep 17 00:00:00 2001 From: Pedro Machado Gomes Caixeta <53542574+pcaixeto@users.noreply.github.com> Date: Tue, 25 Feb 2025 01:13:06 +0000 Subject: [PATCH 1/4] primeiro commit oli --- ubs_dashboard.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ubs_dashboard.py b/ubs_dashboard.py index 8419b78..51fe8db 100644 --- a/ubs_dashboard.py +++ b/ubs_dashboard.py @@ -25,3 +25,5 @@ if estados: df_filtrado = df[df['Nome_UF'].isin(estados)] st.write(df_filtrado) + +// comentario teste \ No newline at end of file From ad68ebe98b426c8f3452b6a951c49a92ad8d842b Mon Sep 17 00:00:00 2001 From: olivermccormack <94262835+olivermccormack@users.noreply.github.com> Date: Wed, 26 Feb 2025 03:18:46 +0000 Subject: [PATCH 2/4] exercicio 1 pronto --- ubs_dashboard.py | 52 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/ubs_dashboard.py b/ubs_dashboard.py index 51fe8db..5a4882d 100644 --- a/ubs_dashboard.py +++ b/ubs_dashboard.py @@ -5,25 +5,43 @@ # Carregar o arquivo atualizado df = pd.read_csv("ubs_atualizado.csv", sep=";") -# Contar a frequência de UBS por estado -df_freq = df['Nome_UF'].value_counts().reset_index() -df_freq.columns = ['Estado', 'Frequência'] +# Converter latitude e longitude para float +df['LATITUDE'] = pd.to_numeric(df['LATITUDE'].str.replace(',', '.'), errors='coerce') +df['LONGITUDE'] = pd.to_numeric(df['LONGITUDE'].str.replace(',', '.'), errors='coerce') -# Criar o dashboard -st.title("Dashboard de Unidades Básicas de Saúde (UBS)") +# Remover linhas com valores inválidos após a conversão +df = df.dropna(subset=['LATITUDE', 'LONGITUDE']) -# Gráfico de barras -grafico = px.bar(df_freq, x='Estado', y='Frequência', - title='Frequência de UBS por Estado', - labels={'Estado': 'Estado', 'Frequência': 'Número de UBS'}, - text_auto=True) -st.plotly_chart(grafico) +# Verifica se as colunas de latitude e longitude existem +if 'LATITUDE' in df.columns and 'LONGITUDE' in df.columns: + # Criar o dashboard + st.title("Dashboard de Unidades Básicas de Saúde (UBS)") -# Filtro para estados específicos -estados = st.multiselect("Selecione os estados", df_freq['Estado'].unique()) -if estados: - df_filtrado = df[df['Nome_UF'].isin(estados)] - st.write(df_filtrado) + # Contar a frequência de UBS por estado + df_freq = df['Nome_UF'].value_counts().reset_index() + df_freq.columns = ['Estado', 'Frequência'] -// comentario teste \ No newline at end of file + # Gráfico de barras + grafico = px.bar(df_freq, x='Estado', y='Frequência', + title='Frequência de UBS por Estado', + labels={'Estado': 'Estado', 'Frequência': 'Número de UBS'}, + text_auto=True) + st.plotly_chart(grafico) + + # Filtro para estados específicos + estados = st.multiselect("Selecione os estados", df_freq['Estado'].unique()) + + if estados: + df_filtrado = df[df['Nome_UF'].isin(estados)] + st.write(df_filtrado) + + # Criar um mapa com os pontos das UBS filtradas + df_mapa = df_filtrado[['LATITUDE', 'LONGITUDE']] + st.map(df_mapa) + else: + # Se nenhum estado for selecionado, mostrar todas as UBS no mapa + df_mapa = df[['LATITUDE', 'LONGITUDE']] + st.map(df_mapa) +else: + st.error("As colunas 'latitude' e 'longitude' não foram encontradas no dataset.") From 1c6a733ab1bb1785756d7db0b81a92b926073a02 Mon Sep 17 00:00:00 2001 From: Pedro Caixeta Date: Wed, 26 Feb 2025 14:05:00 -0300 Subject: [PATCH 3/4] trabalho finalizado --- ubs_dashboard.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/ubs_dashboard.py b/ubs_dashboard.py index 5a4882d..2eaa1fa 100644 --- a/ubs_dashboard.py +++ b/ubs_dashboard.py @@ -5,7 +5,7 @@ # Carregar o arquivo atualizado df = pd.read_csv("ubs_atualizado.csv", sep=";") -# Converter latitude e longitude para float +# Exercicio 1: Mapa Interativo das UBS por Estado df['LATITUDE'] = pd.to_numeric(df['LATITUDE'].str.replace(',', '.'), errors='coerce') df['LONGITUDE'] = pd.to_numeric(df['LONGITUDE'].str.replace(',', '.'), errors='coerce') @@ -45,3 +45,29 @@ st.map(df_mapa) else: st.error("As colunas 'latitude' e 'longitude' não foram encontradas no dataset.") + +#Exercicio 2: Gráfico de Pizza da Distribuição de UBS por Estado +grafico = px.pie(df_freq, names='Estado', values='Frequência', title='UBS por Estado') +st.plotly_chart(grafico) + +#Exercicio 3: Histograma da Quantidade de UBS por Município +# Contar a quantidade de UBS por município +df_municipios = df['Nome_Município'].value_counts().reset_index() +df_municipios.columns = ['Município', 'Quantidade_UBS'] + +# Controle deslizante para filtrar municípios com um número mínimo de UBS +min_ubs = st.slider("Selecione o número mínimo de UBS por município", + min_value=int(df_municipios['Quantidade_UBS'].min()), + max_value=int(df_municipios['Quantidade_UBS'].max()), + value=int(df_municipios['Quantidade_UBS'].min())) + +# Filtrar os municípios +df_filtrado = df_municipios[df_municipios['Quantidade_UBS'] >= min_ubs] + +# Criar gráfico de barras para visualizar os municípios com o filtro aplicado +grafico_barras = px.bar(df_filtrado, x='Município', y='Quantidade_UBS', + title="Número de UBS por Município", + labels={'Município': 'Município', 'Quantidade_UBS': 'Número de UBS'}, + text_auto=True) + +st.plotly_chart(grafico_barras) \ No newline at end of file From 77212454c222818db665643fbf54e1af44445070 Mon Sep 17 00:00:00 2001 From: Pedro Machado Gomes Caixeta <53542574+pcaixeto@users.noreply.github.com> Date: Wed, 26 Feb 2025 14:10:19 -0300 Subject: [PATCH 4/4] Update README.md --- README.md | 88 ++++++------------------------------------------------- 1 file changed, 9 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index b54bd9d..4c3ffa7 100644 --- a/README.md +++ b/README.md @@ -1,82 +1,12 @@ -# Dashboard de Unidades Básicas de Saúde (UBS) +## Integrantes do Grupo +Eric Akio Uchiyamada +RA: 10395287 -Este projeto é um **dashboard interativo** desenvolvido com **Streamlit** para visualizar a frequência das **Unidades Básicas de Saúde (UBS)** por estado no Brasil. +Oliver Kieran Galvão McCormack +RA: 10395672 -## 🏗️ Funcionalidades -- **Gráfico de barras** interativo mostrando a frequência de UBS por estado. -- **Filtro** para visualizar dados de estados específicos. -- **Visualização de dados** filtrados diretamente na interface. +Pedro Machado Gomes Caixeta +RA: 10314309 -## 📂 Estrutura do Projeto -``` -├── ubs_dashboard.py # Código do dashboard em Streamlit -├── ubs_atualizado.csv # Arquivo de dados atualizado -├── requirements.txt # Dependências necessárias -└── README.md # Documentação do projeto -``` - -## 🚀 Como Executar -### 1️⃣ Clonar o repositório -```bash -git clone https://github.com/seu-usuario/ubs-dashboard.git -cd ubs-dashboard -``` - -### 2️⃣ Criar um ambiente virtual (opcional, mas recomendado) -```bash -python -m venv env -source env/bin/activate # Para Linux/Mac -env\Scripts\activate # Para Windows -``` - -### 3️⃣ Instalar as dependências -```bash -pip install -r requirements.txt -``` - -### 4️⃣ Executar a aplicação -```bash -streamlit run ubs_dashboard.py -``` - -## 📦 Dependências -As principais bibliotecas utilizadas no projeto são: -- `streamlit` → Interface do dashboard -- `pandas` → Manipulação de dados -- `plotly` → Visualização de gráficos interativos - - - -# 📌 Exercício de Refatoração do BI - Dashboard de UBS - -## 🎯 Objetivo -Refatorar e aprimorar o **Dashboard de Unidades Básicas de Saúde (UBS)**, implementando **três novas visualizações** e garantindo que a entrega seja feita corretamente no **GitHub**. - ---- - -## 🚀 Tarefas - -### 1️⃣ Mapa Interativo das UBS por Estado -- Criar um **mapa de dispersão** usando `latitude` e `longitude` para plotar a localização das UBS. -- Adicionar um **filtro por estado** para exibir apenas UBS da região desejada. - -### 2️⃣ Gráfico de Pizza da Distribuição de UBS por Estado -- Criar um **gráfico de pizza** mostrando opercentual de UBS por estado. -- Utilizar `plotly.express.pie()` para exibir os dados. - -### 3️⃣ Histograma da Quantidade de UBS por Município -- Criar um **histograma** que exiba a **quantidade de UBS por município**. -- Utilizar `plotly.express.histogram()` agrupando os municípios por contagem de UBS. -- Adicionar um controle deslizante (`st.slider()`) para filtrar municípios com um número mínimo de UBS. - ---- - -## 📦 Entrega -- A implementação deve ser realizada em um **repositório GitHub do grupo**. -- O repositório deve conter: - - Código-fonte do dashboard (`.py`). - - Arquivo de dados atualizado (`.csv`). - - Arquivo `README.md` contendo: - - Descrições adicionais - - **Nome dos integrantes do grupo**. - - Dependências do projeto (adicionar no requirements.txt). +## Observações Adicionais +Foi necessário tirar a versão específica do numpy pra conseguir rodar localmente na minha máquina, entao deixei pra pegar qualquer versão no requirements.txt