Skip to content

Latest commit

 

History

History
179 lines (127 loc) · 7.84 KB

README.md

File metadata and controls

179 lines (127 loc) · 7.84 KB

🇺🇸 English?

covid19-br

pytest@docker

Esse repositório centraliza links e dados sobre boletins de número de casos das Secretarias Estaduais de Saúde (SES) sobre os casos de covid19 no Brasil (por município por dia), além de outros dados relevantes para a análise, como óbitos registrados em cartório (por estado por dia).

Licença e Citação

A licença do código é LGPL3 e dos dados convertidos Creative Commons Attribution ShareAlike. Caso utilize os dados, cite a fonte original e quem tratou os dados e caso compartilhe os dados, utilize a mesma licença. Exemplos de como os dados podem ser citados:

  • Fonte: Secretarias de Saúde das Unidades Federativas, dados tratados por Álvaro Justen e equipe de voluntários Brasil.IO
  • Brasil.IO: boletins epidemiológicos da COVID-19 por município por dia, disponível em: https://brasil.io/dataset/covid19/ (última atualização: XX de XX de XXXX, acesso em XX de XX de XXXX).

Dados

Depois de coletados e checados os dados ficam disponíveis de 3 formas no Brasil.IO:

Caso queira acessar os dados antes de serem publicados (ATENÇÃO: pode ser que não tenham sido checados), você pode acessar diretamente as planilhas em que estamos trabalhando.

Se esse programa e/ou os dados resultantes foram úteis a você ou à sua empresa, considere fazer uma doação ao projeto Brasil.IO, que é mantido voluntariamente.

FAQ SOBRE OS DADOS

Antes de entrar em contato conosco (estamos sobrecarregados) para tirar dúvidas sobre os dados, CONSULTE NOSSO FAQ.

Para mais detalhes veja a metodologia de coleta de dados.

Analisando os dados

Caso queira analisar os dados usando SQL, veja o script analysis.sh (ele baixa e converte os CSVs para um banco de dados SQLite e já cria índices e views que facilitam o trabalho) e os arquivos na pasta sql/. Por padrão o script reutiliza os arquivos caso já tenha baixado; para sempre baixar a versão mais atual dos dados, execute ./analysis.sh --clean.

Validando os dados

Os metadados estão descritos conforme os padrões Data Package e Table Schema do Frictionless Data. Isso significa que os dados podem ser validados automaticamente para detectar, por exemplo, se os valores de um campo estão em conformidade com a tipagem definida, se uma data é válida, se há colunas faltando ou se há linhas duplicadas.

Para fazer a verificação, ative o ambiente virtual Python e em seguida digite:

goodtables data/datapackage.json

O relatório da ferramenta Good Tables irá indicar se houver alguma inconsistência. A validação também pode ser feita online pelo site Goodtables.io.

Contribuindo

Você pode contribuir de diversas formas:

  • Criando programas (crawlers/scrapers/spiders) para extrair os dados automaticamente (LEIA ISSO ANTES);
  • Coletando links para os boletins de seu estado;
  • Coletando dados sobre os casos por município por dia;
  • Entrando em contato com a secretaria estadual de seu estado, sugerindo as recomendações de liberação dos dados;
  • Evitando contato com humanos;
  • Lavando as mãos várias vezes ao dia;
  • Sendo solidário aos mais vulneráveis;

Para se voluntariar, siga estes passos.

Procure o seu estado nas issues desse repositório e vamos conversar por lá.

Criando Scrapers

Estamos mudando a forma de subida dos dados para facilitar o trabalho dos voluntários e deixar o processo mais robusto e confiável e, com isso, será mais fácil que robôs possam subir também os dados; dessa forma, os scrapers ajudarão bastante no processo. Porém, ao criar um scraper é importante que você siga algumas regras:

  • Necessário fazer o scraper usando o scrapy;
  • Não usar pandas, BeautifulSoap, requests ou outras bibliotecas desnecessárias (a std lib do Python já tem muita biblioteca útil, o scrapy com XPath já dá conta de boa parte das raspagens e rows já é uma dependência desse repositório);
  • Deve existir alguma maneira fácil de fazer o scraper coletar os boletins e casos para uma data específica (mas ele deve ser capaz de identificar para quais datas os dados disponíveis e de capturar várias datas também);
  • O método de parsing deve devolver (com yield) um dicionário com as seguintes chaves:
    • date: data no formato "YYYY-MM-DD"
    • state: sigla do estado, com 2 caracteres maiúsculos (deve ser um atributo da classe do spider e usar self.state)
    • city (nome do município ou em branco, caso seja o valor do estado, deve ser None)
    • place_type: "city" para município e "state" para estado
    • confirmed: inteiro, número de casos confirmados (ou None)
    • deaths: inteiro, número de mortes naquele dia (ou None)
    • ATENÇÃO: o scraper deve devolver sempre um registro para o estado que não seja a soma dos valores por município (esse dado deve ser extraído da linha "total no estado" no boletim) - essa linha virá com a coluna city com o valor None e place_type com "state" - esse dado apenas deve vir preenchido como sendo a soma dos valores municipais caso o boletim não tenha os dados totais;
  • Quando possível, use testes automatizados.

Nesse momento não temos muito tempo disponível para revisão, então por favor, só crie um pull request com código de um novo scraper caso você possa cumprir os requisitos acima.

Instalando

Padrão

Necessita de Python 3 (testado em 3.8.2). Para montar seu ambiente:

  • Instale o Python 3.8.2
  • Crie um virtualenv
  • Instale as dependências:
    • Script de consolidação e robô: pip install -r requirements.txt
    • Extratores de dados estaduais: pip install -r requirements-collect.txt
  • Rode o script de coleta: ./collect.sh
  • Rode o script de consolidação: ./run.sh

Verifique o resultado em data/output.

Docker

Se você preferir utilizar o Docker para executar, basta usar os comandos a seguir :

make docker-build   # para construir a imagem
make docker-collect # para coletar os dados
make docker-run     # para consolidar os dados

VEJA TAMBÉM

Clipping

Quer saber quais projetos e notícias estão usando nossos dados? Veja o clipping.

Atualização dos Dados no Brasil.IO

Crie um arquivo .env com os valores corretos para as seguintes variáveis de ambiente:

BRASILIO_SSH_USER
BRASILIO_SSH_SERVER
BRASILIO_DATA_PATH
BRASILIO_UPDATE_COMMAND

Execute o script:

./deploy.sh

Ele irá coletar os dados das planilhas (que estão linkadas em data/boletim_url.csv e data/caso_url.csv), adicionar os dados ao repositório, compactá-los, enviá-los ao servidor e executar o comando de atualização de dataset.

Nota: o script que baixa e converte os dados automaticamente deve ser executado separadamente, com o comando ./collect.sh.