SP2024-Election-Analysis


[🇧🇷Português] [🇺🇸English]

<p align="center"> 📊 Análise de Dados e Visualização: Eleições Municipais de São Paulo - 1º e 2º Turno (2024)

<p align="center"> Uma análise dos padrões de votação nas eleições de São Paulo em 2024, com foco no comportamento do eleitor, abstenção e tendências geográficas.


📺 Assista em Full HD no You Tube

https://github.com/user-attachments/assets/c34557e8-d1a3-4baa-b995-79b91669b3dd


#### <p align="center"> Sponsor Mindful AI Assistants


Este projeto fornece uma análise detalhada dos padrões de votação nas eleições municipais de São Paulo de 2024, com foco no primeiro e segundo turnos das corridas para prefeito e vereador. Ele examina aspectos-chave como comportamento do eleitor, mudanças entre os turnos e variações regionais na taxa de comparecimento dos eleitores.

O conjunto de dados foi **compilado manualmente a partir de fontes oficiais**, inclui mais de 15.000 entradas. Para reunir os dados relevantes, o projeto utilizou técnicas de web scraping, seguidas de limpeza de dados e análise exploratória de dados (EDA). Esses métodos revelam insights valiosos sobre tendências eleitorais e fornecem orientações estratégicas para entender a dinâmica política de São Paulo, que podem informar estratégias eleitorais futuras.

Este trabalho foi desenvolvido como parte do curso de Projeto Integrado e Storytelling no segundo semestre do curso de Ciência de Dados e Inteligência Artificial da PUC-SP em 2024, sob a orientação do renomado Professor ✨ Rooney Ribeiro Albuquerque Coelho

Sua experiência e dedicação inabalável ao ensino desempenharam um papel crucial em aprofundar nossa compreensão tanto de ciência de dados quanto da arte de contar histórias.


### Developed by:



Mapa Interativo

Para acessar o Mapa completo, clique no Mapa abaixo:


</a>


Dashboard Power BI

Acesse o conjunto de dados e explore o dashboard interativo através do link Power BI abaixo, onde você pode usar filtros dinâmicos para obter insights e visualizações detalhadas.

📈 Dashboard Power BI


Índice

A estrutura está bem organizada, mas fiz algumas sugestões para melhorar a fluidez e a clareza. Veja abaixo a versão revisada:

## 1. Introdução

Este relatório apresenta uma análise detalhada dos dados das eleições municipais de São Paulo de 2024, com foco na distribuição de votos, comportamento do eleitor e o desempenho dos candidatos a prefeito e vereador. Várias visualizações e dashboards são usados para explorar os padrões de votação, tendências emergentes e os fatores que influenciam os resultados eleitorais.

2. Objetivos do Estudo

O estudo tem como objetivo entender as dinâmicas eleitorais nas áreas urbanas e periféricas de São Paulo, identificando os fatores que determinam as preferências dos eleitores, como os partidos mais votados, perfis de candidatos e comportamento de voto.

3. Fundamentação Teórica

Analisar dados eleitorais é crucial para entender o comportamento do eleitor, as preferências partidárias e as tendências políticas nas diferentes regiões. A visualização de dados oferece uma maneira clara e eficiente de identificar padrões que podem informar campanhas futuras.

4. Descrição do Conjunto de Dados

Os dados usados neste estudo foram extraídos de fontes públicas, fornecendo informações sobre votos por município, zona eleitoral e partido político. O conjunto de dados inclui detalhes sobre os candidatos a prefeito e vereador em São Paulo, incluindo o número de votos recebidos por cada candidato.

TSE Documentatiuon

Arquivos Processados

Os seguintes arquivos CSV foram processados:

Estrutura das Colunas de Exemplo

Aqui está uma visão geral das principais colunas nos arquivos CSV processados:

5. Metodologia

A metodologia foi dividida em várias etapas:

6. Análise Exploratória de Dados

A análise exploratória revelou várias tendências interessantes, como:

7. Gráficos e Painéis

7.1. Distribuição de Votos por Município

A distribuição de votos revelou uma grande concentração em São Paulo e áreas urbanas vizinhas. A análise indicou a necessidade de estratégias específicas para as áreas periféricas.

import plotly.express as px
import pandas as pd

# Leitura do conjunto de dados
election = pd.read_csv('/caminho/para/seus/dados.csv', encoding='latin-1')

# Plotando a distribuição de votos por município
fig = px.histogram(election, x="NM_MUNICIPIO", y="QT_VOTOS", 
                   title="Votos por Município", 
                   color_discrete_sequence=["#1f77b4"])
fig.update_layout(bargap=0.2)
fig.show()



### 7.2. Candidatos a Prefeito Mais Votados Ricardo Nunes (MDB) se destacou nas zonas centrais, enquanto Guilherme Boulos (PSOL) teve forte apoio nas periferias. ```python # Filtrando candidatos a prefeito mayor = election[(election["DS_CARGO_PERGUNTA"] == "Prefeito") & (election["NM_MUNICIPIO"] == "SÃO PAULO") & (election["SG_PARTIDO"] != "#NULO#")].copy() # Agrupando e ordenando candidatos por votos mayor = mayor.groupby(['NM_VOTAVEL', 'SG_PARTIDO']).sum().sort_values("QT_VOTOS", ascending=False)["QT_VOTOS"].reset_index() # Calculando porcentagens de votos total_votes = mayor["QT_VOTOS"].sum() mayor["PERCENTAGE"] = mayor["QT_VOTOS"] / total_votes # Gráfico de barras fig = px.bar(mayor, x="NM_VOTAVEL", y="QT_VOTOS", color="SG_PARTIDO", title="Candidatos a Prefeito Mais Votados", color_discrete_sequence=px.colors.qualitative.Dark24) fig.show() ```


### 7.3. Candidatos a Vereador Mais Votados A distribuição de votos mostrou uma concentração entre os candidatos locais, com destaques para Tabata Amaral (PSB) e Renato Sorriso (PL) nas zonas periféricas. ```python # Filtrando candidatos a vereador councilor = election[(election["DS_CARGO_PERGUNTA"] == "Vereador") & (election["NM_MUNICIPIO"] == "SÃO PAULO") & (election["SG_PARTIDO"] != "#NULO#")].copy() # Agrupando e ordenando candidatos por votos councilor = councilor.groupby(['NM_VOTAVEL', 'SG_PARTIDO']).sum().sort_values('QT_VOTOS', ascending=False)["QT_VOTOS"].reset_index() # Calculando porcentagens de votos total_votes = councilor["QT_VOTOS"].sum() councilor["PERCENTAGE"] = councilor["QT_VOTOS"] / total_votes # Gráfico de barras fig = px.bar(councilor, x="NM_VOTAVEL", y="QT_VOTOS", color="SG_PARTIDO", title="Candidatos a Vereador Mais Votados", color_discrete_sequence=px.colors.qualitative.Dark24) fig.show() ```


### 7.4 Candidatos a Prefeito Mais Votados por Zona Eleitoral As zonas centrais favoreceram Ricardo Nunes, enquanto as zonas periféricas foram dominadas por Guilherme Boulos. ```python # Dados das zonas e bairros areas = pd.DataFrame({ "ZONE": [1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 246, 246, 247, 247, 248, 248, 249, 250, 250, 250, 251, 251, 252], "NEIGHBORHOOD": ["BELA VISTA", "CONSOLACAO", "LIBERDADE", "REPUBLICA", "SE", "BARRA FUNDA", "PERDIZES", "SANTA CECILIA", "BOM RETIRO", "BRAS", "PARI", "AGUA RASA", "BELEM", "MOOCA", "JD PAULISTA"] }) # Mesclando com dados de prefeitos merged = mayor.merge(areas, left_on="NR_ZONE", right_on="ZONE") # Gráfico de barras fig = px.bar(merged, x="NEIGHBORHOOD", y="QT_VOTES", color="SG_PARTY", title="Prefeito Mais Votado por Zona") fig.show() ```


### 7.5 Most Voted Councilors by Electoral Zone The analysis revealed candidates like Márcio Chagas (PSOL) and Luana Almeida (PL) performing well in suburban areas. ```python # Analyzing most voted councilors by electoral zone areas = pd.DataFrame({ "ZONE": [1, 1, 1, 2, 2, 3, 3, 4, 5, 6], "NEIGHBORHOOD": ["BELA VISTA", "CONSOLACAO", "LIBERDADE", "MOOCA", "CAMPO BELO", "ITAQUERA", "CID DUTRA", "PIRITUBA", "VILA PRUDENTE", "TATUAPE"] }) # Merging councilor data councilor_merged = councilor.merge(areas, left_on="NR_ZONE", right_on="ZONE") # Bar chart fig = px.bar(councilor_merged, x="NEIGHBORHOOD", y="QT_VOTES", color="SG_PARTY", title="Most Voted Councilor by Zone") fig.show() ```


### 7.6 Most Voted Mayors by Municipality The municipality-level analysis confirmed Ricardo Nunes' dominance in urban areas and Boulos’ strength in peripheral zones. ```python # Grouping mayors by municipality municipality = mayor.groupby("NM_MUNICIPIO").sum().sort_values("QT_VOTES", ascending=False) # Bar chart fig = px.bar(municipality, x=municipality.index, y="QT_VOTES", title="Most Voted Mayor by Municipality") fig.show() ```


### 7.7 Most Voted Councilors by Municipality The analysis showed a strong presence of candidates like Eduardo Suplicy (PT) across several municipalities, reflecting broad political support. ```python # Grouping councilors by municipality municipality_councilor = councilor.groupby("NM_MUNICIPIO").sum().sort_values("QT_VOTOS", ascending=False) # Bar chart fig = px.bar(municipality_councilor, x=municipality_councilor.index, y="QT_VOTOS", title="Most Voted Councilor by Municipality") fig.show() ```


### 7.8 Distribution of Votes by Political Party The vote distribution charts confirmed the dominance of MDB and PSOL, with PSOL's support growing in peripheral zones. ```python # Analyzing distribution of votes by party party_votes = election.groupby("SG_PARTIDO").sum().sort_values("QT_VOTOS", ascending=False) # Bar chart fig = px.bar(party_votes, x=party_votes.index, y="QT_VOTOS", title="Distribution of Votes by Political Party") fig.show() ```


## 8. Interactive Power BI Dashboards: [Click to access the link](https://app.powerbi.com/view?r=eyJrIjoiNTNmY2Y2YzgtODY3Yy00M2ViLWI0NDItMTdiZDJlNTg4Zjk2IiwidCI6IjhlYjI5MjAxLWEyN2QtNDMwMi04NDczLWM5ODJlYjViZTkzNSJ9) ### 8.1 Dashboard 1: Geographic Distribution of Votes This dashboard provided a detailed view of electoral preferences by region, highlighting the polarization between urban and peripheral areas. ```python import plotly.express as px # Gráfico de mapa para distribuição de votos por município df = pd.read_csv('distribution_votes.csv') fig = px.choropleth(df, locations="municipality", color="votes", hover_name="municipality", title="Distribuição Geográfica de Votos") fig.show() ```


### 8.2 Dashboard 2: Candidate Performance by Region This dashboard was essential for understanding candidate performance across regions, using heatmaps and bar charts. ```python import plotly.express as px # Bar chart for vote analysis by party df = pd.read_csv('votes_by_party.csv') fig = px.bar(df, x="party", y="votes", color="party", title="Vote Analysis by Party") fig.show() ```


### 8.3 Dashboard 3: Voting Analysis by Party The visualization allowed for identifying votes distribution by party and electoral preferences by zone. ```python # Dashboard for candidate performance df = pd.read_csv('candidates_performance.csv') fig = px.scatter(df, x="zone", y="votes", color="party", title="Candidate Performance by Electoral Zone") fig.show() ```
### 8.4 Dashboard 4: Voting by Demographic Profile Este dashboard analisou os votos por idade, gênero e classe social, destacando as preferências dos eleitores mais jovens e das classes sociais mais baixas pelos candidatos progressistas. ```python # Dashboard para comparação entre candidatos df = pd.read_csv('candidates_comparison.csv') fig = px.scatter(df, x="votes_mayor", y="votes_councilor", color="party", title="Comparison of Mayoral and Councilor Candidates") fig.show() ```


### 8.5 Dashboard 5: Voting Comparison Between 2020 and 2024 Elections A comparação entre as duas eleições revelou mudanças significativas nas preferências eleitorais, com o PSOL ganhando força nas periferias. ```python # Dashboard para votação por faixa etária df = pd.read_csv('votes_by_age_group.csv') fig = px.pie(df, names="age_group", values="votes", title="Voting by Age Group") fig.show() ```


## 9. Conclusion A análise dos dados das eleições municipais de São Paulo de 2024 forneceu valiosas percepções sobre o comportamento do eleitor e as tendências emergentes. Observou-se um aumento da polarização política, com o PSOL ganhando força nas áreas periféricas e o MDB mantendo uma base sólida nas áreas urbanas centrais. Além disso, a análise revelou uma mudança nas preferências eleitorais, com um crescente apoio a partidos mais progressistas, especialmente entre os eleitores mais jovens e das classes sociais mais baixas. A análise dos gráficos e dashboards possibilitou uma compreensão mais detalhada da distribuição dos votos por geografia, desempenho dos candidatos por zona eleitoral e segmentação dos votos por partido e perfil demográfico. As tendências observadas sugerem que as campanhas eleitorais futuras devem focar em estratégias mais segmentadas, considerando as características sociais e econômicas de cada região. ### Recomendações para campanhas futuras: - **Personalizar a comunicação eleitoral** para diferentes regiões, considerando os perfis demográficos e socioeconômicos. - **Aproveitar o crescimento das redes sociais** e outras plataformas digitais para se conectar com eleitores mais jovens e aqueles com acesso limitado aos meios de comunicação tradicionais. - **Ajustar as propostas de campanha** de acordo com questões locais como segurança, saúde e educação, que foram fatores decisivos para votos em várias zonas periféricas. ## 10. Material Extra - **🇺🇸 Relatório de Análise de Dados**: [Clique 🔗](https://github.com/Mindful-AI-Assistants/SP2024-Election-Analysis/blob/77ee8d3319a14c05ae6d3b023e0a4101ec5e2943/Data%20Analysing%20Report/%F0%9F%87%BA%F0%9F%87%B8Data%20Analysing%20Report.pdf) - **🇧🇷 Relatório de Análise de Dados**: [Clique 🔗](https://github.com/Mindful-AI-Assistants/SP2024-Election-Analysis/blob/9ab39e27ff0f2e8444b7c773ec309986d073ad92/Data%20Analysing%20Report/%F0%9F%87%A7%F0%9F%87%B7Analise%20do%20Dados%20Relatoirio.pdf) - **Link de Acesso ao Power BI**: [Clique 🔗](https://app.powerbi.com/view?r=eyJrIjoiNTNmY2Y2YzgtODY3Yy00M2ViLWI0NDItMTdiZDJlNTg4Zjk2IiwidCI6IjhlYjI5MjAxLWEyN2QtNDMwMi04NDczLWM5ODJlYjViZTkzNSJ9) - **Arquivo do Power BI**: [Clique 🔗](https://github.com/Mindful-AI-Assistants/SP2024-Election-Analysis/blob/8c71e68c34ccfd2c14ff3ecb8d0f7558bcbe109d/Power%20B%20I%20Files/DashBoard.pbix)
- **QR Code**: Escaneie o código para acessar os dados e visualizações no Power BI.


## 11. Referências - **Tribunal Superior Eleitoral (TSE)** - **[Fonte de Dados Eleitorais]** - Artigos sobre análise de dados eleitorais e visualização de dados ## 12. Como Rodar o Projeto Este projeto foi desenvolvido em Python e usa bibliotecas como Pandas, Plotly e Dash para análise e visualização de dados. Siga as instruções abaixo para configurar o ambiente e rodar o código.
### 12.1 Requisitos Antes de rodar o projeto, você precisa ter o Python e o Git instalados no seu sistema. Baixe o Python Baixe o Git Além disso, você precisará das dependências listadas no arquivo requirements.txt: ```bash pandas plotly ```
### 12.2 Clonando o Repositório Para começar, clone o repositório no seu computador: ```bash git clone https://github.com/your_user/elections-sp-project.git cd elections-sp-project ```
### 12.3 Instalando Dependências Instale as dependências necessárias executando o seguinte comando: ```python pip install -r requirements.txt ``` ### 12.4 Criando o Executável Para criar um executável do projeto, você pode usar o PyInstaller. Execute o seguinte comando para gerar o executável: ```python pyinstaller --onefile electoral_analysis.py ```
Isso criará um arquivo executável na pasta dist/, que pode ser executado diretamente sem a necessidade de instalar o Python. ### 12.5 Rodando o Código Após instalar as dependências ou criar o executável, rode o script principal para gerar as análises e visualizações: ```python python electoral_analysis.py ```
### 12.6 Rodando o Dashboard Interativo Se você deseja visualizar os dashboards interativos usando o Bash, execute o seguinte comando: ```python python app.py ``` Isso abrirá o dashboard no seu navegador. Aqui está a tradução para o português do trecho solicitado: ## 13. Contribuindo Se você quiser contribuir para este projeto, fique à vontade para fazer um *fork*, realizar alterações e enviar *pull requests*. Aqui estão os passos para começar: 1. **Faça o fork** deste repositório. 2. **Crie um branch** para sua funcionalidade: ```bash git checkout -b nova-funcionalidade ``` 3. **Faça as alterações necessárias** e commit: ```bash git commit -am 'Adiciona nova funcionalidade' ``` 4. **Faça o push** do branch para o repositório remoto: ```bash git push origin nova-funcionalidade ``` 5. **Abra um pull request** para revisão e integração. Certifique-se de que suas alterações não quebrem a funcionalidade existente e que os testes estejam atualizados. ## 14- 💌 Equipe e Contatos ### Equipe Principal: - **Fabiana 🚀 Campanari** - [GitHub](https://github.com/FabianaCampanari) - **Pedro 🛰️ Vyctor** - [GitHub](https://github.com/ppvyctor) ### Contato: - **Fabiana 🚀 Campanari** - [me envie um e-mail](mailto:fabicampanari@proton.me) - **Pedro 🛰️ Vyctor** - [me envie um e-mail](mailto:pedro.vyctor00@gmail.com)

Voltar ao topo # #####

Copyright 2025 Mindful-AI-Assistants. Código liberado sob a [Licença MIT.](https://github.com/Mindful-AI-Assistants/.github/blob/ad6948fdec771e022d49cd96f99024fcc7f1106a/LICENSE)