Skip to content

Latest commit

 

History

History
628 lines (405 loc) · 23.7 KB

README.pt_BR.md

File metadata and controls

628 lines (405 loc) · 23.7 KB

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

📊 Análise de Dados e Visualização: Eleições Municipais de São Paulo - 1º e 2º Turno (2024)

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

1-video-portugues.mp4

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:



Para acessar o Mapa completo, clique no Mapa abaixo:



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:

  • address_Mayor.csv
  • Mayor_by_city.csv
  • Mayor_by_city_round_2.csv
  • Mayor.csv
  • address_Councilor.csv
  • Councilor_by_city.csv
  • councilor.csv

Estrutura das Colunas de Exemplo

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

  • NM_MUNICIPIO: Nome do município
  • NR_ZONA: Número da zona eleitoral
  • DS_CARGO_PERGUNTA: Cargo eleitoral (Prefeito ou Vereador)
  • NM_VOTAVEL: Nome do candidato
  • SG_PARTIDO: Sigla do partido
  • QT_VOTOS: Número de votos recebidos

5. Metodologia

A metodologia foi dividida em várias etapas:

  • Pré-processamento de Dados: Leitura e concatenação de conjuntos de dados, limpeza de registros inválidos.
  • Análise Exploratória de Dados (EDA): Identificação de padrões e tendências de votação usando gráficos e tabelas.
  • Visualização de Dados: Criação de gráficos interativos com a biblioteca Plotly para exploração dinâmica dos resultados.

6. Análise Exploratória de Dados

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

  • A dominância de votos para partidos como MDB e PSOL.
  • A distribuição geográfica dos votos mostrando uma alta concentração no centro de São Paulo e maior apoio a partidos progressistas nas áreas periféricas.

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.

# 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.

# 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.

# 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.

# 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.

# 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.

# 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.

# 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

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.

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.

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.

# 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.

# 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.

# 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


  • 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:

pandas
plotly

12.2 Clonando o Repositório

Para começar, clone o repositório no seu computador:

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:

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:

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 electoral_analysis.py

12.6 Rodando o Dashboard Interativo

Se você deseja visualizar os dashboards interativos usando o Bash, execute o seguinte comando:

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:
    git checkout -b nova-funcionalidade
  3. Faça as alterações necessárias e commit:
    git commit -am 'Adiciona nova funcionalidade'
  4. Faça o push do branch para o repositório remoto:
    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
  • Pedro 🛰️ Vyctor - GitHub

Contato:



Voltar ao topo

Copyright 2024 Mindful-AI-Assistants. Código liberado sob a Licença MIT.