Coletando e armazenando os números de casos do Coronavírus no Brasil

Raphael Fontes
MindStorm
Published in
4 min readMar 12, 2020

O que é o coronavírus?

Texto retirado do site https://brasilescola.uol.com.br/

Coronavírus são uma família de vírus, conhecida há muito tempo, responsável por desencadear desde resfriados comuns a síndromes respiratórias graves, como é o caso da Síndrome Respiratória Aguda Grave (Sars) e a Síndrome Respiratória do Oriente Médio (Mers). A transmissão desses vírus pode ocorrer de uma pessoa para outra por meio do contato próximo com o doente. Recentemente, um novo tipo de coronavírus foi descoberto, o 2019-nCoV, o qual tem causado mortes e também bastante preocupação.

Vale salientar que os coronavírus são vírus zoonóticos, ou seja, podem ser transmitidos entre o ser humano e outros animais. Porém, isso não ocorre com todos os coronavírus, sendo conhecidos alguns tipos que circulam apenas entre os animais.

Em 26/02/2020 o Brasil teve seu primeiro caso confirmado do Coronavírus.

Onde posso encontrar os casos do vírus?

A Plataforma IVIS apresenta os dados epidemiológicos produzidos pela Secretaria de Vigilância em Saúde do Ministério da Saúde (SVS-MS). Tem por objetivo auxiliar gestores e trabalhadores de saúde na tomada de decisões para a proteção e promoção da saúde da população, prevenção e controle de riscos, agravos e doenças, bem como ser um mecanismo de controle social para a população geral.

Em consulta a plataforma IVIS, foi possível identificar que ela carrega um arquivo JavaScript (JS) onde os dados estão armazenados. Este conteúdo é consumido pela plataforma IVIS na forma de uma variável chamada de database.

Parte do conteúdo existente no arquivo JavaScript

O dicionário possuí uma key (chave) nominada de brazil, é com ela que iremos trabalhar para coletar as informações referente ao nosso país.

Na chave brazil temos um array com as date (datas) e o time (horário) que informa quando os dados foram inseridos. Vale ressaltar que os dados são incrementais, ou seja, se no dia X haviam 2 casos, e no dia seguinte foram confirmados mais dois, quando houver a atualização do arquivo haverão 4 casos confirmados para o último dia.

Na key values (valores) estão armazenadas as informações sobre o estado (uid) e a categoria do caso, podendo ser suspects (suspeitos), refuses (descartados) e cases (confirmados) com o seu quantitativo.

Por exemplo: no primeiro index do array temos uma atualização que houve no dia 30/01/2020 (date) às 16:00h (time) do uid: 31, que se refere ao estado de Minas Gerais com 1 caso suspeito (suspects).

Para facilitar a consulta do uid de cada estado com o seu respectivo nome pelo algoritmo, extraí a informação de acordo com o mapa svg da plataforma IVIS e construí o seguinte dicionário:

Dicionário com os uid dos Estados Brasileiros

Com essas informações já podemos escrever as primeiras linhas do script em Python 💙 com os imports necessários para o nosso script funcionar.

A partir disso, criamos um DataFrame vazio com as colunas de: data, hora, estado, quantidade de casos suspeitos, descartados e confirmados. Efetuamos um request a url que contém os dados e armazenamos em uma variável chamada de request.

Usaremos o atributo content para trabalhar com o conteúdo retornado pela requisição.

Transformando os dados retornados pela requisição

Como a consulta da URL retorna uma string, decodificamos ela para o charset utf8 e removemos o início de sua estrutura pois, como vimos anteriormente, declara uma variável em JS. Depois disto carregamos o conteúdo para o método loads do pacote json que transformará os dados em um objeto python.

Utilizaremos a função get do dicionário python. Conforme documentação, passando uma key e um dicionário, verifica se a key existe, caso não retorna um valor padrão (0).

Após esta etapa, criamos um for para percorrer todos os registros por data e depois por estado, coletando a key e outro for para os valores de cada parte do dicionário. No final adicionamos os dados ao DataFrame.

Note que, na primeira linha dentro do segundo for, nós pegamos a key uid do dicionário value, transformamos-a para o tipo inteiro, porque há casos que ela está como texto, e consultamos sua posição na variável STATES, que retorna o nome do estado correspondente ao uid informado.

Para concluir nós salvamos o DataFrame em um arquivo csv.

Exportando os dados para um arquivo csv

Não deixe de conferir o projeto do coletor no github!

Os dados estão sendo publicados, sempre quando houver uma atualização da plataforma, no Kaggle!

--

--

Raphael Fontes
MindStorm

I also have over 9 years of experience in software engineering and data mining. Lead data team to support strategies and goals.