Dados abertos, Python eDados abertos, Python e
PostgreSQL: a combinaçãoPostgreSQL: a combinação
perfeitaperfeita
TuricasTuricas akaaka Álvaro JustenÁlvaro Justen
PGConf.Brasil 2019PGConf.Brasil 2019
02 de agosto de 201902 de agosto de 2019
$ whoami$ whoami
TuricasTuricas, prazer! =), prazer! =)
Sigam-me os bons:Sigam-me os bons:
{{ ,,
,,
,,
,,
}}
//turicasturicas
twittertwitter
githubgithub
youtubeyoutube
slideshareslideshare
instagraminstagram
turicas@brasil.ioturicas@brasil.io
AgendaAgenda
Dados abertos
O que são
Aplicações
Problemas
Python
Ferramentas para trabalhar com dados
Live coding
Brasil.IO
O que é
Como usamos o PostgreSQL
Futuro: melhorias, grafos etc.
Software Livre & PythonSoftware Livre & Python
(desde 2004/2005)(desde 2004/2005)
       
Instagram @turicas
Data PipelineData Pipeline
schoolofdata.org/methodology
-- (definição de )
Dados AbertosDados Abertos
“ Dados abertos são dados que podem
ser livremente usados, reutilizados e
redistribuídos por qualquer pessoa -
sujeitos, no máximo, à exigência de
atribuição da fonte e
compartilhamento pelas mesmas
regras. ”
OpenData Handbook Open Definition
Mais detalhes:
Lei de Acesso à Informação: 12.527/2011
kit.dados.gov.br
escoladedados.org
--
“ De acordo com o governo brasileiro, o
controle social é a participação da
sociedade civil nos processos de
planejamento, acompanhamento,
monitoramento e avaliação das ações
da gestão pública e na execução das
políticas e programas públicos. ”
Wikipedia
Operação Serenata de AmorOperação Serenata de Amor
#civictech#civictech
serenata.ai
R$ 191 em um restaurante cujos pratos não custam R$ 40,
deputado?
Rosie, a robôRosie, a robô
twitter.com/tOa_D/status/1058495655184871425
(em conjunto com Juan Torres, para )correio24horas.com.br
Acesse a matéria
(em conjunto com Giulliana Biaconi, para )generonumero.media
Leia a matéria
(em conjunto com Adriano Belisário, para )apublica.org
Acesse a matéria
(em conjunto com Voltdatalab, para )
Aplicações ÚteisAplicações Úteis
EleiçõesEleições
poder360.com.br
Maior parte do tempo dos projetos deMaior parte do tempo dos projetos de
análise de dados:análise de dados:
Qualidade dos DadosQualidade dos Dados
5stardata.info
Trabalho com dados públicosTrabalho com dados públicos
Causos daCausos da
TransparênciaTransparência
BrasileiraBrasileira
Migram-se os ministérios, sem dadosMigram-se os ministérios, sem dados
Estrelando:Estrelando: Ministério da JustiçaMinistério da Justiça
twitter.com/turicas/status/1112491956314259457
Dados dispersos e sem índiceDados dispersos e sem índice
Estrelando:Estrelando: IBGEIBGE
Dado pago! (???)Dado pago! (???)
Estrelando:Estrelando: Receita FederalReceita Federal
https://twitter.com/turicas/status/1019272233095745537
Lentidão ao baixar (ETA: 4d)Lentidão ao baixar (ETA: 4d)
Estrelando:Estrelando: Receita FederalReceita Federal
twitter.com/turicas/status/1114185311372873729
Formato ProprietárioFormato Proprietário
Estrelando:Estrelando: Receita FederalReceita Federal
Dado disperso e não padronizadoDado disperso e não padronizado
Estrelando:Estrelando: ConselhoConselho Nacional de JustiçaNacional de Justiça
Formato não estruturadoFormato não estruturado
Estrelando:Estrelando: INEMA/BAINEMA/BA
Problemas de Usabilidade deProblemas de Usabilidade de
DadosDados
Formato (qualidade técnica)
Exemplo: Boletim de balneabilidade em PDF (INEMA/BA)
Dispersão
Exemplo: Filiações partidárias em 945 ZIPs com CSVs (TSE)
Quantidade de dados
Exemplo: 18 milhões de sócios (RFB)
Domínio da área
Exemplo: o que é unidade eleitoral? (TSE)
SoluçõesSoluções
Educação tecnológica
Do-it-yourself
Interdisciplinaridade
Libertação de dados
Dados menos dispersos
Formato aberto
Melhorar ferramentas
Software livre
Pressão por dados melhores
Dar visibilidade aos problemas
Usar a LAI
Educação TecnológicaEducação Tecnológica
Curso Gratuito (3.000+ alunos)Curso Gratuito (3.000+ alunos)
Python!Python!
Acesse a matéria
xkcd.com/353
Melhorar ferramentasMelhorar ferramentas
(código ao vivo)
rows convert arquivo.pdf arquivo.csv
github.com/turicas/balneabilidade-brasil
Outros exemplosOutros exemplos
rows print ...
rows schema brasil.csv
rows query ...
rows pgimport ...
rows pgexport ...
UsablidadeUsablidade
Libertação de dados resolve:
[x] Formato
[x] Dispersão
[ ] Quantidade de dados
[ ] Domínio da área
Brasil.IOBrasil.IO
O Brasil em dados libertos
DemonstraçãoDemonstração
Dataset salarios-magistrados
Dataset eleicoes-brasil
Dossiê Odebrecht
Tecnologias utilizadasTecnologias utilizadas
Captura, normalização e limpeza:
Backend:
(em breve AgensGraph)
Servidores: OVH Canadá
PaaS: dokku
Python3
scrapy
rows
Python3
Django
PostgreSQL
Neo4J
git push dokku mastergit push dokku master
Visitar site
postgresql.confpostgresql.conf
Ver configuração
pgheropghero
Visitar site
Importando dadosImportando dados
Deleta tabela se já existir
Cria tabela com base nos metadados
Cria triggers (FTS)
django.contrib.postgres.search.SearchVectorField
Executa rows pgimport
Executa VACUUM ANALYZE na tabela
Cria índices para filtros
Preenche "choices"
CREATE TRIGGERCREATE TRIGGER
Ver código
CREATE INDEXCREATE INDEX
Ver código
O que podeO que pode
melhorar?melhorar?
Funcionalidades (rows)Funcionalidades (rows)
Ver issue
Configurações (PostgreSQL)Configurações (PostgreSQL)
Interface para grafosInterface para grafos
PostgreSQL + Grafos =PostgreSQL + Grafos =
bitnine.net
Interface para grafos (2)Interface para grafos (2)
Interface para grafos (3)Interface para grafos (3)
Contribua com o Brasil.IO!Contribua com o Brasil.IO!
brasil.io/colaborebrasil.io/colabore
Sugerindo otimizações no banco
Melhorando os scripts de coleta
Coletando novos datasets
Publicando tutoriais no
Doando no
blog.brasil.io
apoia.se/brasilio
23 a 28 de outubro, Ribeirão Preto/SP
PythonBrasil 2019PythonBrasil 2019
pythonbrasil.com.br
23 e 24 de novembro, São Paulo/SP
CODA.BR 2019CODA.BR 2019
coda.escoladedados.org
--
Dúvidas?Dúvidas?
“ Restringir acesso a dados públicos é
elitizar a democracia. ”
Manifesto Brasil.IO
{{ ,,
,,
,,
,,
}}
//turicasturicas
twittertwitter
githubgithub
youtubeyoutube
slideshareslideshare
instagraminstagram
turicas@brasil.ioturicas@brasil.io

Dados abertos, Python e PostgreSQL: a combinação perfeita