• Stars
    star
    147
  • Rank 251,347 (Top 5 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created about 6 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Scripts para capturar dados do Repositório de Dados Eleitorais do TSE, limpá-los, normalizá-los e agrupá-los

Eleições Brasil

Esse repositório de código contém programas que baixam dados do Tribunal Superior Eleitoral, normalizam, agrupam e limpam. Atualmente as bases de dados disponíveis são:

  • Candidaturas (1996 a 2020)
  • Bens declarados (2006 a 2020)
  • Votação por zona eleitoral (1996 a 2020)
  • Prestação de contas (2002 a 2020)

Metodologia

A fonte primária é o Repositório de Dados Eleitorais do TSE. O processo é o seguinte:

  • Baixar arquivos ZIP
  • Para cada ZIP, extrair (em memória) os arquivos internos
  • Para cada arquivo interno, processá-lo (identificar cabeçalho, limpar)
  • Juntar todos os resultados em um arquivo

Normalização

Algumas etapas de normalização são necessárias para facilitar análises e conversões dos dados, como:

  • Retirar todos os acentos: alguns nomes aparecem com acentos em um ano e sem em outros, dificultando muito os agrupamentos;
  • Retirar strings inúteis: valores como #NULO#, #NULO, #NE e #NE# são retirados, deixando as células em branco;
  • Normalização dos códigos de cargo: os códigos de cargo variam para alguns anos, tornando difícil o agrupamento entre anos e, para facilitar as análises, normalizamos todos os anos;
  • Renomear colunas: nem todas as colunas possuem nomes intuitivos e foram nomeadas (exemplo: COD_SIT_TOT_TURNO foi renomeado para codigo_totalizacao_turno). Para saber mais detalhes sobre as colunas que foram renomeadas, olhe os arquivos no diretório headers/ (caso você altere algum desses arquivos, gere novamente os cabeçalhos finais com python tse.py headers).

Nota: nem todos os códigos/descrição foram normalizados (alguns apresentam inconsistências ainda não resolvidas e serão feitos em breve).

Privacidade

Para garantir a privacidade e evitar SPAM, o script limpa algumas colunas com informações sensíveis. Essa é a forma padrão de funcionamento para não facilitar a exposição desses dados. Os dados censurados são:

  • Na tabela candidatura:
    • A coluna email terá seu conteúdo totalmente limpo
    • A coluna cpf terá os 3 primerios dígitos trocados por *

Caso queira rodar o script sem o modo censura, altere o script run.sh e adicione a opção --no-censorship para o script tse.py.

Instalando

Os programas requerem Python 3.7+. Instale as dependências executando:

pip install -r requirements.txt

Rodando

O script tse.py baixa, trata e extrai os dados. Basta rodá-lo, passando que tipo de dado quer baixar/tratar/extrair:

python tse.py candidatura
python tse.py bem_declarado
python tse.py votacao_zona
python tse.py receita
python tse.py despesa

Os dados ficarão disponíveis em:

  • data/download/: arquivos originais baixados, por ano
  • data/output/: arquivos extraídos (agrupados por tipo)

Caso queira converter os arquivos .csv.gz gerados em um banco de dados SQLite (facilita as análises), execute:

./csv2sqlite.sh

Esse script irá rodar o comando rows csv-to-sqlite em todos os arquivos gerados em data/output e criará o arquivo data/eleicoes-brasil.sqlite.

Opções

As opções listadas abaixo podem ser utilizadas em conjunto.

Anos

Você pode especificar para quais anos deseja a extração (separados por vírgulas), como em:

python tse.py candidatura --years=2014,2018

Alterar fonte dos dados

Como os servidores do TSE podem estar lentos em épocas de eleição, você pode baixar os dados de algum servidor mais rápido que hospede uma cópia deles (chamamos de mirror). No Brasil.IO mantemos um mirror de alguns arquivos do Repositório de Dados Eleitorais do TSE, porém note que ainda não temos uma política de atualização frequente desses dados e, por isso, eles podem estar desatualizados (estamos trabalhando para que sejam atualizados com mais frequência e que a data de cópia dos dados fique explícita em uma página).

Para que o script colete os daos usando nosso mirror, execute-o com a opção --use-mirror:

python tse.py candidatura --use-mirror

Você pode especificar também a URL base do mirror, que por padrão é do Brasil.IO:

python tse.py candidatura --use-mirror --mirror-url=https://data.brasil.io/mirror/eleicoes-brasil/

Apenas baixar

Caso queira apenas baixar os arquivos, utilize a opção --download-only.

Forçar download

Por padrão, caso os arquivos necessários para uma extração já existam em data/download/, eles não serão baixados novamente. Você pode utilizar a opção --force-redownload para que eles sejam deletados e baixados novamente.

Arquivo de saída

Você pode especificar o arquivo de saída (que será sempre um CSV, mas pode estar compactado):

python tse.py candidatura --output=candidatura.csv.gz

Observações

Em alguns casos o TSE libera arquivos compactados no formato RAR (mesmo com a extensão ".zip"). Para extrair os dados desses arquivos você precisa instalar em seu sistema o bsdtar ou unrar (em sistemas Debian e derivados): apt install libarchive-tools ou apt install unrar - o último não é software livre).

Desenvolvendo/contribuindo

Instale as dependências de desenvolvimento:

pip install -r dev-requirements.txt

Rode os testes:

pytest tests.py

Ao alterar os arquivos, rode o comando black . para normalizá-los com relação à PEP-0008.

More Repositories

1

brasil.io

Backend do Brasil.IO (para código dos scripts de coleta de dados, veja o link na página de cada dataset)
Python
915
star
2

rows

A common, beautiful interface to tabular data, no matter the format
Python
865
star
3

socios-brasil

Captura os dados de sócios das empresas brasileiras na Receita Federal e exporta para um formato legível por humanos
Python
560
star
4

covid19-br

Dados diários mais recentes do coronavírus por município brasileiro
Python
530
star
5

salarios-magistrados

Baixa as planilhas de salários de magistrados, extrai os contracheques, limpa e exporta pra CSV
Python
250
star
6

sbc

SBC - Use SSH Like a Boss!
Shell
81
star
7

Ethernet_ENC28J60

[NOT MAINTAINED, NOT COMPLETED] Implementation of an Arduino-compatible socket layer library that uses Microchip ENC28J60 Ethernet controller.
C
76
star
8

crau

Easy-to-use Web archiver
Python
56
star
9

transparencia-gov-br

Scraper do Portal da Transparência do Governo Federal, em Python 3
Python
51
star
10

nubank-to-csv

Script para converter a fatura do NuBank (em PDF) para um CSV lindão
Python
50
star
11

genero-nomes

Classifica nomes por gênero de acordo com API do IBGE
Python
49
star
12

braindump

braindump: low-tech dump of my neurons
45
star
13

capturando-dados-sem-dor-de-cabeca

Material do tutorial "Capturando dados sem dor de cabeça"
Python
42
star
14

mongodict

MongoDB-backed Python dict-like interface
Python
39
star
15

outputty

NOT MAINTAINED ANYMORE. SEE "rows"
Python
37
star
16

cursos-prouni

Baixa dados relativos aos cursos que possuem bolsas integrais e parciais no PROUNI
Python
33
star
17

templater

Extract, parse and populate templates from strings
Python
27
star
18

gastos-deputados

Script que baixa, extrai e limpa dados de gastos da cota parlamentar
Python
26
star
19

censo-ibge

Scripts de captura para dados do Censo IBGE
Python
22
star
20

mandados-de-prisao

NÃO FUNCIONA MAIS POR CONTA DA NOVA VERSÃO DO BNMP. Scripts que coletam mandados da Base Nacional de Mandados de Prisão
Python
20
star
21

arduinoMakefile

[OUTDATED/NOT MAINTAINED] Simple Makefile (that works) for compile and upload Arduino sketches
Java
20
star
22

processos-stf

Script que baixa todos os processos do STF baseado na listagem disponível nas atas de distribuição
Python
15
star
23

droiduino

Control your house via Internet using your Android phone with Python and Arduino!
Python
14
star
24

pastebin-cli

Command-line interface to paste code/text to pastebin.com
Python
14
star
25

brasil

Python library to access Brazilian data through Brasil.IO API
Python
12
star
26

plotter

Plot data from CSV using Python, matplotlib and outputty
Python
11
star
27

DS1307

Arduino library for reading and setting date and time for the DS1307 Real-Time Clock IC
Java
11
star
28

luminaria-rgb

Luminária RGB controlada por Arduino e Android, via Ethernet
Java
10
star
29

pybitcask

A pure-Python implementation of Basho's bitcask key-value store.
Python
10
star
30

no-silence

Automatically detect and delete silince parts in videos
Python
10
star
31

pycopy

API wrapper to Copy.com compatible with Dropbox API
Python
9
star
32

dados-parana

Scrapers que capturam dados sobre o estado do Paraná e seus municípios
Python
9
star
33

autuacoes-ambientais-ibama

Extrator de PDFs de Autuações Ambientais do IBAMA
Python
8
star
34

shapefiles-brasil

Coleta shapefiles do IBGE, converte para GeoJSON e gera versões simplificadas
Python
8
star
35

festival-de-curitiba

Scraper que baixa os eventos que acontecerão no Festival de Curitiba (2019)
Python
7
star
36

slides

Slides of my talks
HTML
7
star
37

vortaroj

A Python dict that speaks many languages
Python
7
star
38

learning-sockets

Python
7
star
39

data-worker

Conjunto de scripts que roda scripts de coleta, extração e limpeza de dados do Brasil.IO
Shell
7
star
40

dotfiles

Some of my dotfiles
Shell
6
star
41

tweetlamp

Activate/deactivate any AC device by tweets using Arduino
Python
6
star
42

easygpg

Easy-to-use command-line interface to GnuPG
Python
5
star
43

turicas.github.io

Personal web page
HTML
5
star
44

tabula-docker

Script to build docker images for Tabula releases using Eclipse Temurin
Shell
5
star
45

simulado-detran-rj

Crawler das questões do simulado do DETRAN-RJ
Python
4
star
46

tomada-bluetooth

Tomada controlada por Bluetooth pelo Android
Java
4
star
47

curso-python-verao-2012

Resposta de alguns exercícios do curso de Python (EMAp/FGV, verão 2012)
Python
4
star
48

lista-anistiados

Script que extrai a lista de anistiados em PDF (2015 e 2018) e gera CSV
Python
4
star
49

async_process_executor

Python class to asynchronously execute tasks in processes
Python
3
star
50

websitetopdf

Simple app to demonstrate the usage of simplefractal/heroku-buildpack-wkhtmltopdf
Python
3
star
51

ddwrtdb

Simple CLI to search on DD-WRT router database and retrieve router information
Python
3
star
52

curriculum-vitae

My curriculum, in LaTex :)
TeX
3
star
53

fabric-recipes

Some useful fabric recipes
Python
3
star
54

SNES

Arduino library to get state of the buttons of a SNES controller.
C++
3
star
55

countdown-traffic-light

Python+Arduino-based countdown for 5min lightning talks that acts as a traffic-light
Python
3
star
56

nlplaying

My playings in Natural Language Processing, in Python.
Python
3
star
57

pytches

Play old-style musics using Python and beep (Unix)
Python
2
star
58

agensgraph-docker

Agensgraph Docker image based on official PostgreSQL image
Shell
2
star
59

cursodearduino.com.br

Site do Curso de Arduino
HTML
2
star
60

row

Reference implementation of a new tabular data format created by dataprotocols
Python
2
star
61

strobo

Python
2
star
62

carmomaq

Utilities to collect data and control Carmomaq coffee roasters
Python
2
star
63

old-pypelinin-text

Pipelines to process text in Python
Python
1
star
64

google-developer-day-2011

Minha implementação para resolver a provinha para entrar no Google Developer Day 2011 Brasil/São Paulo - e eu passei! \o/
Python
1
star
65

git_inspect

Tools to inspect git repositories
Python
1
star
66

site-teste

Python
1
star
67

Genuino

Jogo da memória para Arduino
Java
1
star
68

slides-ssh-avancado-e-sbc

Slides of my talks
JavaScript
1
star
69

ptwp_tagger

Tagging Portuguese Wikipedia with PyPLN and Palavras
Python
1
star
70

jsock

Key-value-based, HMAC-signed, non-blocking sockets for Python
Python
1
star
71

site-render

Python
1
star