Analisando os dados de coronavírus (Covid-19) no Brasil

Desenvolvido por Ycaro Afonso e publicado originalmente em http://ycaro.net/2020/03/analisando-os-dados-de-coronavirus-covid-19-no-brasil/ com objetivo de estudos para minha pós-graduação em Ciências de Dados e Big Data pela PUC Minas.

Também publiquei o código fonte do notebook do Jupyter no meu GitHub.


A partir dos dados disponibilizados na Plataforma Ivis do Ministério da Saúde, foi realizado a limpeza e conversão dos dados e platado nos gráficos.

In [1]:
## Import Libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
#%matplotlib inline
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
plt.rcParams['figure.figsize'] = [15, 5]
from IPython import display
from ipywidgets import interact, widgets
In [2]:
Brazil = pd.read_csv("./data/brasil_20200317.csv", sep=";", decimal=",", thousands=".").reset_index().set_index('Nome')
Brazil = Brazil[Brazil['Abrangência'] == 'Unidade da Federação']
Brazil.drop(['Abrangência', '% Casos suspeitos', '% Casos confirmados', '% Casos descartados', '% Óbitos'], axis=1, inplace=True)
Brazil.dtypes
Out[2]:
index                  int64
Casos suspeitos      float64
Casos confirmados    float64
Casos descartados    float64
Óbitos               float64
Total                float64
Transmissão local     object
dtype: object
In [3]:
TopEstados=Brazil.sort_values(by='Casos confirmados',ascending=False)
TopEstados=TopEstados[TopEstados['Casos confirmados'] > 0]
TopEstados
Out[3]:
index Casos suspeitos Casos confirmados Casos descartados Óbitos Total Transmissão local
Nome
São Paulo (SP)** 21 5047.0 164.0 709.0 1.0 5921.0 Sim
Rio de Janeiro (RJ)* 20 859.0 33.0 194.0 0.0 1086.0 Sim
Distrito Federal (DF) 30 253.0 22.0 96.0 0.0 371.0 Não
Pernambuco (PE) 13 71.0 16.0 33.0 0.0 120.0 Não
Rio Grande do Sul (RS) 25 300.0 10.0 217.0 0.0 527.0 Não
Santa Catarina (SC) 24 220.0 7.0 55.0 0.0 282.0 Não
Minas Gerais (MG) 18 563.0 7.0 99.0 0.0 669.0 Não
Goiás (GO) 29 221.0 6.0 54.0 0.0 281.0 Não
Paraná (PR) 23 240.0 6.0 82.0 0.0 328.0 Não
Ceará (CE) 10 211.0 5.0 95.0 0.0 311.0 Não
Sergipe (SE) 15 7.0 4.0 12.0 0.0 23.0 Não
Mato Grosso do Sul (MS) 27 44.0 4.0 45.0 0.0 93.0 Não
Bahia (BA) 16 375.0 3.0 59.0 0.0 437.0 Sim
Espírito Santo (ES) 19 69.0 1.0 21.0 0.0 91.0 Não
Alagoas (AL) 14 34.0 1.0 20.0 0.0 55.0 Não
Rio Grande do Norte (RN) 11 72.0 1.0 21.0 0.0 94.0 Não
Amazonas (AM) 2 7.0 1.0 19.0 0.0 27.0 Não

Estados com casos confirmados

In [4]:
fig = go.Figure(go.Bar(x=TopEstados.index, y=TopEstados['Casos confirmados'],
                      text=TopEstados['Casos confirmados'],
            textposition='outside'))
fig.update_yaxes(showticklabels=False)

fig.show()
In [8]:
CasosSuspeitos = Brazil[Brazil['Casos suspeitos'] > 0].sort_values(by=['Casos suspeitos'],ascending=False).reset_index(drop=True)
CasosConfirmados = Brazil[Brazil['Casos confirmados'] > 0].sort_values(by='Casos confirmados',ascending=False).reset_index(drop=True)
CasosDescartados = Brazil[Brazil['Casos descartados'] > 0].sort_values(by='Casos descartados',ascending=False).reset_index(drop=True)
Obitos = Brazil[Brazil['Óbitos'] > 0].sort_values(by='Óbitos',ascending=False).reset_index(drop=True)

chartcol='red'
fig = []
fig = make_subplots(rows=2, cols=2, shared_xaxes=True,
                    specs=[[{},{}],
                          [{},{}]],
                    subplot_titles=('Casos suspeitos', 'Casos confirmados', 'Casos descartados', 'Óbitos'))

fig.add_trace(go.Bar(x=CasosSuspeitos.index, y=CasosSuspeitos['Casos suspeitos'], 
                     text=CasosSuspeitos['Casos suspeitos'], 
                     textposition='outside'), row=1,col=1)

fig.add_trace(go.Bar(x=CasosConfirmados.index, y=CasosConfirmados['Casos confirmados'], 
                     text=CasosConfirmados['Casos confirmados'], 
                     textposition='outside'), row=1,col=2)

fig.add_trace(go.Bar(x=CasosDescartados.index, y=CasosDescartados['Casos descartados'], 
                     text=CasosDescartados['Casos descartados'], 
                     textposition='outside'), row=2,col=1)

fig.add_trace(go.Bar(x=Obitos.index, y=Obitos['Óbitos'], 
                     text=Obitos['Óbitos'],
                     textposition='outside'), row=2,col=2)



fig.update_layout(showlegend=False)
In [6]:
import datetime
now = datetime.datetime.now()
print ("ATUALIZADO EM: " + now.strftime("%Y-%m-%d %H:%M:%S"))
ATUALIZADO EM: 2020-03-17 21:11:48