[🇧🇷Português] [🇺🇸English]
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.
1-video-portugues.mp4
Important
-
Projects and deliverables will be made publicly available only when appropriate and authorized.
-
The course emphasizes hands-on learning through the use of real data in professional consulting contexts.
-
All activities and materials will fully comply with the academic and ethical guidelines of PUC-SP.
-
Any confidential information related to this repository will remain strictly private and stored in private repositories, in full compliance with confidentiality requirements.
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.
Para acessar o Mapa completo, clique no Mapa abaixo:
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.
A estrutura está bem organizada, mas fiz algumas sugestões para melhorar a fluidez e a clareza. Veja abaixo a versão revisada:
- Introdução
- Objetivos do Estudo
- Fundamentação Teórica
- Descrição do Conjunto de Dados
- Metodologia
- Análise Exploratória de Dados
- Gráficos e Dashboards
- 7.1. Distribuição de Votos por Município
- 7.2. Candidatos a Prefeito Mais Votados
- 7.3. Candidatos a Vereador Mais Votados
- 7.4. Prefeitos Mais Votados por Zona Eleitoral
- 7.5. Vereadores Mais Votados por Zona Eleitoral
- 7.6. Prefeitos Mais Votados por Município
- 7.7. Vereadores Mais Votados por Município
- 7.8. Distribuição de Votos por Partido Político
- Dashboards Interativos
- Conclusão
- Material Extra
- 🇺🇸 Data Analysing Report : Go for it 💥
- 🇧🇷 Data Analysing Report : Get in on it ⚡
- Power BI Access Link : Let’s roll 🛸
- Power BI File : Hop in 🏄
- Referências
- Como Executar o Projeto
- Contribuindo
- Nossa Equipe
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.
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.
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.
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.
Os seguintes arquivos CSV foram processados:
address_Mayor.csvMayor_by_city.csvMayor_by_city_round_2.csvMayor.csvaddress_Councilor.csvCouncilor_by_city.csvcouncilor.csv
Aqui está uma visão geral das principais colunas nos arquivos CSV processados:
NM_MUNICIPIO: Nome do municípioNR_ZONA: Número da zona eleitoralDS_CARGO_PERGUNTA: Cargo eleitoral (Prefeito ou Vereador)NM_VOTAVEL: Nome do candidatoSG_PARTIDO: Sigla do partidoQT_VOTOS: Número de votos recebidos
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.
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.
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()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()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()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()A análise revelou que candidatos como Márcio Chagas (PSOL) e Luana Almeida (PL) estão se saindo bem em áreas suburbanas.
# 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()A análise em nível municipal confirmou a dominância de Ricardo Nunes em áreas urbanas e a força de Boulos em áreas periféricas.
# 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()A análise mostrou uma forte presença de candidatos como Eduardo Suplicy (PT) em vários municípios, refletindo amplo apoio político.
# 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()Os gráficos de distribuição de votos confirmaram a dominância do MDB e do PSOL, com o apoio do PSOL crescendo nas zonas periféricas.
# 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. Painéis Interativos do Power BI: Click to access the link
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()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()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()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()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()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.
- 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.
-
🇺🇸 Relatório de Análise de Dados: Clique 🔗
-
🇧🇷 Relatório de Análise de Dados: Clique 🔗
-
Link de Acesso ao Power BI: Clique 🔗
-
Arquivo do Power BI: Clique 🔗
- QR Code:
Escaneie o código para acessar os dados e visualizações no Power BI.
- Tribunal Superior Eleitoral (TSE)
- [Fonte de Dados Eleitorais]
- Artigos sobre análise de dados eleitorais e visualização de dados
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.
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
plotlyPara começar, clone o repositório no seu computador:
git clone https://github.com/your_user/elections-sp-project.git
cd elections-sp-projectInstale as dependências necessárias executando o seguinte comando:
pip install -r requirements.txtPara criar um executável do projeto, você pode usar o PyInstaller. Execute o seguinte comando para gerar o executável:
pyinstaller --onefile electoral_analysis.pyIsso criará um arquivo executável na pasta dist/, que pode ser executado diretamente sem a necessidade de instalar o Python.
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.pySe você deseja visualizar os dashboards interativos usando o Bash, execute o seguinte comando:
python app.pyIsso abrirá o dashboard no seu navegador.
Aqui está a tradução para o português do trecho solicitado:
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:
- Faça o fork deste repositório.
- Crie um branch para sua funcionalidade:
git checkout -b nova-funcionalidade
- Faça as alterações necessárias e commit:
git commit -am 'Adiciona nova funcionalidade' - Faça o push do branch para o repositório remoto:
git push origin nova-funcionalidade
- 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.
-
Fabiana 🚀 Campanari - Shoot me an email
-
Pedro 🛰️ Vyctor - Hit me up by email
🛸๋ My Contacts Hub
────────────── ⊹🔭๋ ──────────────
➣➢➤ Back to Top
Copyright 2025 Mindful-AI-Assistants. Código liberado sob a Licença MIT.












