Trabalhando com conjuntos de dados do Infodengue
O InfoDengue é um sistema de alerta projetado para rastrear arbovírus usando uma abordagem de dados híbridos exclusiva que integra dados de mídias sociais com dados climáticos e epidemiológicos. Neste tutorial, iremos percorrer o processo de uso da API do InfoDengue com Python para buscar dados atualizados sobre arbovírus.
[1]:
from pysus.online_data.Infodengue import search_string, download
Infodengue é um sistema nacional, use o método search_string para verificar como o município é encontrado na API:
[2]:
search_string('Rio d janeiro')
[2]:
{'Arroio do Meio': 4301008,
'Granjeiro': 2304806,
'Jerônimo Monteiro': 3203106,
'Minador do Negrão': 2705309,
'Rio Branco': 5107206,
'Rio Claro': 3304409,
'Rio Grande': 4315602,
'Rio Largo': 2707701,
'Rio Manso': 3155306,
'Rio Negrinho': 4215000,
'Rio Negro': 4122305,
'Rio Pardo': 4315701,
'Rio da Conceição': 1718659,
'Rio das Antas': 4214409,
'Rio de Janeiro': 3304557,
'Rio do Antônio': 2926806,
'Rio do Pires': 2926905,
'Rio dos Cedros': 4214706,
'Rodeiro': 3156304,
'Roteiro': 2707800}
O método de download extrai dados para um intervalo específico de semanas epidemiológicas no formato YYYYWW. A saída é um DataFrame do Pandas contendo todas as semanas epidemiológicas dentro deste intervalo.
[3]:
df = download('dengue', 202301, 202304, 'Rio de Janeiro')
[4]:
df
[4]:
SE | 202304 | 202303 | 202302 | 202301 |
---|---|---|---|---|
data_iniSE | 2023-01-22 | 2023-01-15 | 2023-01-08 | 2023-01-01 |
casos_est | 295.0 | 236.0 | 211.0 | 228.0 |
casos_est_min | 295 | 236 | 211 | 228 |
casos_est_max | 295 | 236 | 211 | 228 |
casos | 305 | 236 | 211 | 228 |
p_rt1 | 0.999356 | 0.945977 | 0.983291 | 0.999999 |
p_inc100k | 4.371786 | 3.497428 | 3.126938 | 3.378871 |
Localidade_id | 0 | 0 | 0 | 0 |
nivel | 2 | 2 | 2 | 2 |
id | 330455720230419461 | 330455720230319461 | 330455720230219461 | 330455720230119461 |
versao_modelo | 2023-04-14 | 2023-04-14 | 2023-04-14 | 2023-04-14 |
tweet | 0.0 | 0.0 | 0.0 | 0.0 |
Rt | 1.0 | 1.0 | 1.0 | 2.0 |
pop | 6747815.0 | 6747815.0 | 6747815.0 | 6747815.0 |
tempmin | 25.142857 | 26.714286 | 23.428571 | 22.428571 |
umidmax | 82.143793 | 77.157084 | 89.980829 | 92.587399 |
receptivo | 1 | 1 | 1 | 1 |
transmissao | 0 | 0 | 0 | 0 |
nivel_inc | 0 | 0 | 0 | 0 |
umidmed | 82.143793 | 77.157084 | 82.592395 | 78.188093 |
umidmin | 82.143793 | 77.157084 | 69.331682 | 63.034302 |
tempmed | 25.142857 | 26.714286 | 25.071429 | 24.976191 |
tempmax | 25.142857 | 26.714286 | 28.285714 | 28.428571 |
casprov | NaN | NaN | NaN | NaN |
casprov_est | NaN | NaN | NaN | NaN |
casprov_est_min | NaN | NaN | NaN | NaN |
casprov_est_max | NaN | NaN | NaN | NaN |
casconf | NaN | NaN | NaN | NaN |
notif_accum_year | 980 | 980 | 980 | 980 |
Você pode salvar o dataframe em um arquivo CSV
[5]:
df.to_csv('rio_se01_04.csv')
Para buscar dados com diferentes parâmetros, é possível iterar sobre uma lista, por exemplo:
[9]:
from itertools import product
diseases = ['dengue', 'zika']
cities = ['Rio de Janeiro', 'Rio do Antônio', 'Rio do Pires']
for disease, city in product(diseases, cities):
df = download(disease, 202301, 202304, city)
df.to_csv(f'{disease}_{city.lower().replace(" ", "_")}_se01_04.csv')
Arquivos esperados:
dengue_rio_de_janeiro_se01_04.csv
dengue_rio_do_antônio_se01_04.csv
dengue_rio_do_pires_se01_04.csv
zika_rio_de_janeiro_se01_04.csv
zika_rio_do_antônio_se01_04.csv
zika_rio_do_pires_se01_04.csv