<jupyter_start><jupyter_text>---------------------------- Monitoramento<jupyter_code>#selecione os países a serem monitorados e comparados
paisesMonitorados = ['Brazil','Italy', 'United Kingdom', 'Spain', 'US', 'China']
fig, ((ax1, ax2), (ax3, ax4), (ax5, ax6), (ax7, ax8)) = plt.subplots(4,2, figsize=(20, 25))
fig.tight_layout(pad=5.0)

ax1.set_title("Casos acumulados")
ax1.set_xlabel("Dias a partir do primeiro caso")
ax1.grid(color='gray', alpha = 0.4)

ax2.set_title("Mortes acumuladas")
ax2.set_xlabel("Dias a partir do primeiro caso")
ax2.grid(color='gray', alpha = 0.4)

ax3.set_title("Casos - média móvel 7 dias")
ax3.set_xlabel("Dias a partir do primeiro caso")
ax3.grid(color='gray', alpha = 0.4)

ax4.set_title("Mortes - média móvel 7 dias")
ax4.set_xlabel("Dias a partir do primeiro caso")
ax4.grid(color='gray', alpha = 0.4)

ax5.set_title("% recuperação/casos")
ax5.set_xlabel("Dias a partir do primeiro caso")
ax5.grid(color='gray', alpha = 0.4)

ax6.set_title("letalidade (% morte/casos)")
ax6.set_xlabel("Dias a partir do primeiro caso")
ax6.grid(color='gray', alpha = 0.4)

ax7.set_title("Casos ativos")
ax7.set_xlabel("Dias a partir do primeiro caso")
ax7.set_ylabel("#acumulada de casos ativos (casos - mortes - recuperações) ")
ax7.grid(color='gray', alpha = 0.4)

ax8.set_title("Mundo")
ax8.set_xlabel("Dias a partir do primeiro caso")
ax8.grid(color='gray', alpha = 0.4)

for pais in paisesMonitorados:
    ax1.plot(df[df['pais'] == pais].dia, df[df['pais'] == pais].casos, label = pais)
    ax2.plot(df[df['pais'] == pais].dia, df[df['pais'] == pais].mortes, label = pais)
    ax3.plot(df[df['pais'] == pais].dia, df[df['pais'] == pais].media7_casos, label = pais)
    ax4.plot(df[df['pais'] == pais].dia, df[df['pais'] == pais].media7_mortes, label = pais)
    ax5.plot(df[df['pais'] == pais].dia, df[df['pais'] == pais].perc_recuperacao, label = pais)
    ax6.plot(df[df['pais'] == pais].dia, df[df['pais'] == pais].perc_morte, label = pais)
    ax7.plot(df[df['pais'] == pais].dia, df[df['pais'] == pais].casos_ativos, label = pais)


dias = np.arange(1, len(df.groupby('dia')['casos'].count())+1,1)
# for dia in dias:
#     caso_mundo.append(df['dia'==dia]['caso'].sum())
casos_mundo = df.groupby('dia')['caso_dia'].sum().to_numpy().cumsum()
mortes_mundo = df.groupby('dia')['morte_dia'].sum().to_numpy().cumsum()
recuperacoes_mundo = df.groupby('dia')['recuperacao_dia'].sum().to_numpy().cumsum()
casos_ativos_mundo = casos_mundo - mortes_mundo - recuperacoes_mundo

ax8.plot(dias, casos_mundo, label = 'casos')
ax8.plot(dias, casos_ativos_mundo, label = 'casos ativos')
ax8.plot(dias, recuperacoes_mundo, label = 'recuperações')
ax8.plot(dias, mortes_mundo, label = 'mortes')

ax1.legend()
ax2.legend()
ax3.legend()
ax4.legend()
ax5.legend()
ax6.legend()
ax7.legend()
ax8.legend()
fig.savefig('monitoramento/coronaMundo_' + hoje + '.png')
fig, ((ax1, ax2)) = plt.subplots(2,1, figsize=(10, 10))
fig.tight_layout(pad=5.0)
ax1.set_title("% variação diária - Brasil")
ax1.set_xlabel("Dias a partir do primeiro caso")
ax1.set_ylabel("% variação diária")
ax1.grid(color='gray', alpha = 0.4)

df_br = df[df['pais'] == 'Brazil']
ax1.plot(df_br.dia, df_br['%var_caso_dia'], label = 'casos')
ax1.plot(df_br.dia, df_br['%var_morte_dia'], label = 'mortes')
ax1.plot(df_br.dia, df_br['%var_recup_dia'], label = 'recuperação')

ax2.set_title("casos, mortes e recuperações diárias - Brasil")
ax2.set_xlabel("Dias a partir do primeiro caso")
ax2.set_ylabel("# diária")
ax2.grid(color='gray', alpha = 0.4)

ax2.plot(df_br.dia, df_br['caso_dia'], label = 'casos')
ax2.plot(df_br.dia, df_br['morte_dia'], label = 'mortes')
ax2.plot(df_br.dia, df_br['recuperacao_dia'], label = 'recuperação')


# dias = np.arange(1, len(df.groupby('dia')['casos'].count())+1,1)
plt.legend()<jupyter_output><empty_output><jupyter_text>Top 5 - % variação Casos no Mundo<jupyter_code>colunas = ['pais','dia','data','casos','caso_dia','mortes','morte_dia', 'media7_casos',  '%var_caso_dia', 'media7_mortes', '%var_morte_dia', '%var_recup_dia']
# df_top = df[df['data']==ontem].nlargest(5,'%var_caso_dia').sort_values('%var_caso_dia', ascending = False)
# df_top = df[df['data']==ontem].nlargest(10,'media7_casos').sort_values('media7_casos', ascending = False)
df_top = df[df['data']==hoje].sort_values('media7_casos', ascending = False)

df_top.reset_index(0, inplace=True)
df_top.index = df_top.index + 1
df_top[colunas].head(20)<jupyter_output><empty_output><jupyter_text>Top 5 - % variação Mortes no Mundo<jupyter_code># colunas = ['pais','dia','data','casos','caso_dia','mortes','morte_dia', '%var_caso_dia', '%var_morte_dia', '%var_recup_dia']
# df_top = df[df['data']==ontem].nlargest(5,'%var_morte_dia').sort_values('%var_morte_dia', ascending = False)
# df_top = df[df['data']==ontem].nlargest(5,'media7_mortes').sort_values('media7_mortes', ascending = False)
df_top = df[df['data']==hoje].sort_values('media7_mortes', ascending = False)

df_top.reset_index(0, inplace=True)
df_top.index = df_top.index + 1
df_top[colunas].head(20)
df[(df['pais'] == 'Brazil') & (df['data']==ontem)][colunas]
fig, ((ax1, ax2)) = plt.subplots(1,2, figsize=(15, 5))
fig.tight_layout(pad=5.0)

ax1.set_title("Casos por milhão de população")
ax1.set_xlabel("Dias a partir do primeiro caso")
ax1.grid(color='gray', alpha = 0.4)

ax2.set_title("Mortes por milhão de população")
ax2.set_xlabel("Dias a partir do primeiro caso")
ax2.grid(color='gray', alpha = 0.4)

for pais in paisesMonitorados:
    ax1.plot(df[df['pais'] == pais].dia, df[df['pais'] == pais].casos_por_milhao, label = pais)
    ax2.plot(df[df['pais'] == pais].dia, df[df['pais'] == pais].mortes_por_milhao, label = pais)

dias = np.arange(1, len(df.groupby('dia')['casos'].count())+1,1)

ax1.legend()
ax2.legend()<jupyter_output><empty_output><jupyter_text>--------------------------------------------------------------------- Previsões<jupyter_code>paisesPrevisao = ['Brazil']#, 'Italy', 'United Kingdom', 'Spain', 'US', 'China']#['Brazil']
df_previsoes = pd.DataFrame(columns=['pais','ds', 'caso_dia', 'morte_dia', 'casos', 'mortes'])

for pais in paisesPrevisao:
    # preparando dataset para previsão
    df_pais = df.loc[df['pais'] == pais][['data','pais','caso_dia','morte_dia']]
    df_pais.rename(columns={'data': 'ds'}, inplace= True)
    df_casos = df_pais.loc[:,['ds','caso_dia']]
    df_casos.rename(columns={'caso_dia':'y'}, inplace =True)

    df_mortes = df_pais.loc[:,['ds','morte_dia']]
    df_mortes.rename(columns={'morte_dia':'y'}, inplace =True)
    
    # fiting do modelo e previsão
    m_casos = Prophet(yearly_seasonality=False, daily_seasonality=True, interval_width=0.95)
    m_casos.fit(df_casos)

    m_mortes = Prophet(yearly_seasonality=False, daily_seasonality=True, interval_width=0.95)
    m_mortes.fit(df_mortes)
    
    future_casos = m_casos.make_future_dataframe(periods=10, freq='D', include_history=False)
    future_mortes = m_mortes.make_future_dataframe(periods=10, freq='D', include_history=False)
    
    forecast_casos = m_casos.predict(future_casos)
    forecast_mortes = m_mortes.predict(future_mortes)
    
    #preparação do dataset com previsão
#     df_aux = pd.merge(forecast_casos.loc[:,['ds','yhat']], forecast_mortes.loc[:,['ds','yhat']], how='inner', on=None, left_on='ds', 
#                  right_on='ds', left_index=False, right_index=False, suffixes=('','_y'), sort=False)    
#     df_aux['pais'] = pais
#     df_aux.rename(columns={'yhat': 'caso_dia'}, inplace= True)
#     df_aux.rename(columns={'yhat_y': 'morte_dia'}, inplace= True)
#     df_aux['caso_dia'] = df_aux['caso_dia'].astype('int32')
#     df_aux['morte_dia'] = df_aux['morte_dia'].astype('int32')
#     df_aux['casos'] = df_aux['caso_dia'].cumsum().astype('int32')
#     df_aux['mortes'] = df_aux['morte_dia'].cumsum().astype('int32')
#     df_previsoes = df_previsoes.append(df_aux)
#    df_previsoes = pd.DataFrame(columns=['pais','ds', 'caso_dia', 'morte_dia', 'casos', 'mortes'])
    p = forecast_casos.loc[:,['ds','yhat']]
    p.rename(columns={'yhat': 'y'}, inplace= True)
    t = df_casos.append(p[['ds','y']], ignore_index=True)
    
    p = forecast_mortes.loc[:,['ds','yhat']]
    p.rename(columns={'yhat': 'y'}, inplace= True)
    s = df_mortes.append(p[['ds','y']], ignore_index=True)

    t['ds'] = t['ds'].astype('datetime64[ns]')
    t.rename(columns={'y': 'caso_dia'}, inplace= True)
    t['caso_dia'] = t['caso_dia'].astype('int32')
    t['casos'] = t['caso_dia'].cumsum().astype('int32')
    t['morte_dia'] = s['y'].astype('int32')
    t['mortes'] = t['morte_dia'].cumsum().astype('int32')
    t['pais'] = pais
    t['previsao?'] = t['ds'] >= hoje # para separar o que é previsão (True) do que é dado real (False)
    df_previsoes = df_previsoes.append(t)
    
df_previsoes.to_csv('previsoes/previsaoMundial_' + hoje + '.csv', sep=',', decimal=',', index = False)
df_previsoes.tail(10)
df_previsoes.loc[df_previsoes['ds']==hoje]
df_previsoes.loc[df_previsoes['ds']==amanha]
df_previsoes.tail(26)
# m_mortes.plot_components(forecast_mortes)
df_previsoes['media7_casos'] = df_previsoes['caso_dia'].rolling(window=7).mean().replace([np.inf, -np.inf], 0).replace([np.nan], 0).astype('int')
df_previsoes['media7_mortes'] = df_previsoes['morte_dia'].rolling(window=7).mean().replace([np.inf, -np.inf], 0).replace([np.nan], 0).astype('int')
df_previsoes
plt.plot(df_previsoes['media7_casos'])
plt.plot(df_previsoes['media7_mortes'])<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.21235848058406517, 'fraction_numerical': 0.02169082636758015, 'mean_word_length': 5.8592162554426706, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 18, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '57924', 'license': 'MIT', 'n_tokens_mistral': 4141, 'n_tokens_neox': 3948, 'n_words': 593, 'path': 'old/Monitor Mundial_v01.ipynb', 'repo_name': 'rafaelcastellar/coronavirus', 'size': '9451'}