turicas / covid19-br

Dados diários mais recentes do coronavírus por município brasileiro
https://brasil.io/dataset/covid19
GNU Lesser General Public License v3.0
531 stars 128 forks source link

DF #11

Open turicas opened 4 years ago

turicas commented 4 years ago

http://www.saude.df.gov.br/informativos-do-centro-de-operacoes-de-emergencia-coe/

brunovilar commented 4 years ago

https://github.com/turicas/covid19-br/pull/28

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.

bjverde commented 4 years ago

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

bjverde commented 4 years ago

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.

augusto-herrmann commented 4 years ago

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.

bjverde commented 4 years ago

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 ??

augusto-herrmann commented 4 years ago

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.

augusto-herrmann commented 4 years ago

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

bjverde commented 4 years ago

@augusto-herrmann desculpe a demora !! Vou atualizar o scraper que já fiz !!

augusto-herrmann commented 4 years ago

Opa! Também fiz um scraper para o boletim em PDF:

https://github.com/turicas/covid19-br/compare/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.

augusto-herrmann commented 4 years ago

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>
augusto-herrmann commented 4 years ago

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.

endersonmaia commented 4 years ago

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

augusto-herrmann commented 4 years ago

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.