Comments (13)
Baseado na implementação do PR, criei um código para o DF. Como os boletins incluem apenas informações sobre a unidade da federação e não sobre os municípios ou regiões administrativas, o arquivo de saída é mais conciso em número de linhas, mas mantém as colunas padrão.
Há pelo menos 3 estilos diferentes de formação dos boletins. No último, até a data de referência tem o formato alterado.
from covid19-br.
Uso o trabalho do @brunovilar como base melhorei e voltou a buscar as informações do DF.
Estou corrindingo o buraco entre o dia 19/03 a 02/02
from covid19-br.
Já ia esquecendo os boletins mais novos traz os casos por Região Administrativa do DF. Elas não existem na tabela de codigo do IBGE. Contudo acredito que seria interessante ter essa dado individulizado tambem.
from covid19-br.
Bem vindo, @bjverde !
O DF, conforme a Constituição de 1988, não pode ser dividido em municípios. Por isso, é considerado como um só, Brasília. Embora o boletim tenha os números individualizados por Região Administrativa, elas não têm código IBGE por esse motivo.
O Brasil.io pode optar entre incluir ou não os dados individualizados por RA, já que eles estão no boletim. Mas, caso opte por incluir, não vai poder usar o código IBGE para isso.
Já que você está mexendo no scraper, é bom saber de uma coisa também. A cada boletim que sai, não vem apenas a informação do número de casos e óbitos do dia, mas também são revisados os números dos dias anteriores. Vide #86.
Entretanto, no caso do boletim do DF, essa informação não está disponível em texto nem em tabela. Ela está no gráfico, que é uma imagem dentro do PDF. À medida em que o tempo vai passando, os pontos no gráfico vão ficando mais apertados, e os números têm que ficar cada vez com uma fonte menor. Então é inviável eles continuarem a disponibilizar os dados desse jeito, a não ser que passem a cortar o começo da curva.
Estou em contato com pessoas da equipe que elabora o boletim e já informei sobre o problema. Quero sugerir um formato de planilha também para que passem a usar, mas ainda não chegamos em um consenso sobre o formato da planilha que devemos sugerir. Vide #89.
from covid19-br.
Obrigado @augusto-herrmann !
Sim estou mexendo nos scraper. Realmente não reparei nos gráficos, estava olhando apenas as tabelas e texto #86.
Você recomenda que parar o trabalho do scraper e aguarde a conclusão do #89 ??
from covid19-br.
Sim. Sugiro também que você entre no chat do Brasil.io, canal #covid10-centro-oeste. Lá estamos discutindo como tratar esses números. Tem também a questão da separação entre os casos de residentes no DF e os casos importados/indefinidos.
from covid19-br.
@bjverde, a SES/DF está divulgando os boletins agora em um novo formato. Ainda é PDF, mas estão mais organizados. Todos os dados necessários estão na primeira página do documento.
Acho que agora já é bastante viável implementar o scraper, se quiser continuar.
from covid19-br.
@augusto-herrmann desculpe a demora !! Vou atualizar o scraper que já fiz !!
from covid19-br.
Opa! Também fiz um scraper para o boletim em PDF:
master...augusto-herrmann:df-spider
O problema é que a biblioteca rows não está lendo a tabela na primeira página com os campos sempre na mesma ordem. A ordem dos campos, visualmente no PDF, é sempre a mesma, mas a ordem lida pela rows é diferente e varia a cada boletim.
Já enfrentou esse tipo de problema, @turicas ?
Talvez a solução seja ler a partir dos microdados mesmo, que já estão em CSV.
from covid19-br.
Consegui resolver colocando uma expressão regular no parâmetro ends_before
.
Agora o scraper já funciona perfeitamente para o boletim do dia 28/5, mas não para o do dia 3/6. Neste último, a tabela está sendo lida como se tivesse só uma única linha, com os valores todos juntos na mesma célula e separados por saltos de linha.
In [20]: table = rows.import_from_pdf(
...: './Boletim-COVID_DF_93-03_06_2020.pdf',
...: page_numbers=[1],
...: starts_after=re.compile(r'Óbitos'),
...: ends_before=re.compile(r'^Fonte'),
...: force_types={'n': rows.fields.TextField}
...: )
In [21]: table
Out[21]: <rows.Table (from pdf) 5 fields, 1 rows>
from covid19-br.
Outra coisa a se fazer é ler os microdados de casos de Covid-19, que estão disponíveis em CSV, a partir do Painel de Covid-19 no DF.
Imagino que daria um pouco mais de trabalho fazer esse tipo de análise usando apenas o Python puro e a rows, já que aqui tem a diretiva de não adicionar dependências como Pandas ou Numpy.
Mas seria importante comparar se os números dos microdados estão coerentes com os do boletim.
from covid19-br.
Outra coisa a se fazer é ler os microdados de casos de Covid-19, que estão disponíveis em CSV, a partir do Painel de Covid-19 no DF.
Imagino que daria um pouco mais de trabalho fazer esse tipo de análise usando apenas o Python puro e a rows, já que aqui tem a diretiva de não adicionar dependências como Pandas ou Numpy.
Mas seria importante comparar se os números dos microdados estão coerentes com os do boletim.
se os dados estão em CSV, vai direto lá , não ?
ou sua ideia é no próprio scraper fazer o download dos dois e efetuar algum tipo de validação ?
eu estou com este dilema para AL, pois já tem uma PR pronta buscando dos microdados, mas como ainda não bate com o boletim em PDF (e não tenho scraper pro PDF), ainda estou buscando os dados manualmente pelo PDF
from covid19-br.
Sim, pensei em fazer uma validação. Gerar um warning e/ou preencher um campo de observação se os números estiverem diferentes, ou algo assim. Dar prioridade para um em detrimento do outro (discutir com o grupo qual seria mais confiável, se o PDF ou o CSV).
Poderia ser assim também para AL.
from covid19-br.
Related Issues (20)
- Ajustar documentação da API HOT 1
- Divergência de dados CE HOT 1
- Metadata Update HOT 2
- Corrigir script de captura de óbitos registrados em cartório HOT 7
- Adicionar outras causes de óbitos registrados em cartório
- Coletar dados do Registro Civil por município
- Corrigir/atualizar esquema da tabela obitos_cartorio HOT 12
- Covid19-br
- Dados incorretos de causas de óbitos (cartórios) para MG
- Arquivo CSV com problema de acentuação
- A quantidade de óbitos no caso_full representa o número ocorrido ou notificado?
- Valores zerados no Mato Grosso
- Inconsistência entre valores totais dos Estados HOT 2
- Filtros pararam de funcionar HOT 1
- Tutorial/material sobre replicação da infra de API
- Dados desatualizados
- Dados atrasados desde 27 de fevereiro - Mato Grosso do Sul
- Esse repo contém informações do tipo sanguineo, essas coisas? HOT 1
- Dados faltantes para o MT da SE202034 - SE202046
- Migrar a validação de dados do GoodTables para o Frictionless Repository
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from covid19-br.