<jupyter_start><jupyter_text>COMPORTAMENTO GEOGRÁFICO DA COVID-19 EM DIFERENTES CLASSES DE MUNICÍPIOS SEGUNDO HIERARQUIA URBANA, CONCENTRAÇÃO POPULACIONAL, CONCENTRAÇÃO DE RIQUEZA E NÍVEIS DE INTEGRAÇÃO E MOBILIDADE  PREPARAÇÃO DO NOTEBOOK * Importação das principais bibliotecas* Configuração das operações por default (estilos e tamanhos de gráficos)* Referenciamento das subpastas do projeto<jupyter_code># importação de bibliotecas básicas

import pandas as pd # Biblioteca para operação avançada com dados tabulares de diversos tipos
import numpy as np # Biblioteca para operação com vetores de auto desempenho e um tipo por vez
from matplotlib import use as mpl_use # Função Matplotlib que estabelece backend e precisa ser chamda antes do plt
mpl_use('nbagg') # uso do backend "nbagg" para os gráficos terem paineis interativos
import matplotlib.pyplot as plt # Biblioteca para geração de gráficos de menor nível de abstração
import seaborn as sns # Biblioteca baseada em matplotlib para geração de gráficos e estilização, com maior nível de abstração
import geopandas as gpd # Biblioteca de análise geográfica
import descartes # Dependência do Geopandas para poder gerar mapas
import matplotlib 
import os
# configurações das operações por default

# Configuração de DataFrame Pandas para formato numérico com duas casas decimais quando a coluna for float
pd.set_option('display.float_format', lambda x: '%.4f' % x)

# Apresentação dos gráficos no interior das células
%matplotlib inline 
plt.style.use('ggplot') # Apresentação dos gráficos
plt.rcParams['figure.figsize'] = [20,10]
# Códigos abaixo são configurações que deixo por opção, caso se tornem úteis em alguma operação
# Configuração das Células para que apresentam múltiplos resultados em vez de apenas o último 
# InteractiveShell.ast_node_interactivity = "all"
# sns.set() # Configuração de Gráficos para padrão de formatação básica da biblioteca Seaborn


# configuração dos tamanhos de fonte dos gráficos
SMALL_SIZE = 12
MEDIUM_SIZE = 16
BIGGER_SIZE = 20

plt.rc('font', size=MEDIUM_SIZE)          # controls default text sizes
plt.rc('axes', titlesize=BIGGER_SIZE)     # fontsize of the axes title
plt.rc('axes', labelsize=MEDIUM_SIZE)    # fontsize of the x and y labels
plt.rc('xtick', labelsize=MEDIUM_SIZE)    # fontsize of the tick labels
plt.rc('ytick', labelsize=MEDIUM_SIZE)    # fontsize of the tick labels
plt.rc('legend', fontsize=MEDIUM_SIZE)    # legend fontsize
plt.rc('figure', titlesize=BIGGER_SIZE)  # fontsize of the figure title<jupyter_output><empty_output><jupyter_text>IMPORTAÇÃO DE DADOS E GERAÇÃO DAS PRINCIPAIS FUNÇÕES  Nesta seção é feita a **importação** e o **tratamento** dos dados de fatores geográficos municipais (hierarquia urbana, população, PIB, PIB *per capita*, grau de competitividade do turismo, proximidade topológica a nós na rede rodoviários/hidroviários, volume de exportação, volume de importação, número de passageiros em voos domésticos e internacionais), bem como de casos de COVID-19 segundo sua referência territorial. Também é realizado o **desenvolvimento de funções** para a geração de data frames para identificação do relacionamento entre cada fator geográfico e a proporção de municípios afetados, bem como para sua plotagem. **Importação e visualização preliminar dos dados sobre fatores geográficos**<jupyter_code>df_fatores_geograficos = pd.read_csv('fatores_total.csv', decimal=',', sep=';', encoding='utf-16')

df_fatores_geograficos<jupyter_output><empty_output><jupyter_text>**Número de municípios afetados na última data registrada na base de dados**<jupyter_code>df_fatores_geograficos.iloc[:,-3][df_fatores_geograficos.iloc[:,-3] != 0].count()<jupyter_output><empty_output><jupyter_text>**Importação e visualização preliminar dos dados sobre COVID-19**<jupyter_code>df_covid_19_br = pd.read_csv('base_covid_atualizada1.csv', decimal=',', sep=';', encoding='utf-16')

df_covid_19_br = df_covid_19_br.drop(axis=1, columns='Unnamed: 0')

df_covid_19_br<jupyter_output><empty_output><jupyter_text>**Integração das bases de COVID-19 e fatores geográficos**<jupyter_code># Integração dos dados de fatores geográficos, df_fatores_geograficos, aos dados de covid, df_covid_19_br

df_covid_19_br = pd.merge(left=df_covid_19_br, right=df_fatores_geograficos.iloc[:,0:26],how='left', on='cod_mun')

# Retira colunas duplicadas
df_covid_19_br = df_covid_19_br.drop(axis=1, columns=['Município', 'estado'])


# Aplica tipo datetime ã coluna data
#df_covid_19_br.data = pd.to_datetime(df_covid_19_br.data)


### conferência dos casos em que não houve integração de dados, por não haver código de município, naqueles casos em que a localização municipal é indefinida.
### Caso o output da célula seja "array(['INDEFINIDA'], dtype=object)", o merge foi feito corretamente
df_covid_19_br.loc[df_covid_19_br.classe_pib.isna()].municipio.unique()<jupyter_output><empty_output><jupyter_text>**Definição de função para geração de Data Frame de análise por Classes de Fatores Geográficos**<jupyter_code>def conta_municipios_por_classe(df_covid_19_br=df_covid_19_br, df_fatores_geograficos=df_fatores_geograficos, col=None):
    
    # cria df_municipios_com_casos_por_classe com número de municípios afetados por classes em col
    df_municipios_com_casos_por_classe = df_covid_19_br.pivot_table(index='data', columns=col, values='casos_total', aggfunc='count') # cria df_muncipios_com_casos_por_classe 
    df_municipios_com_casos_por_classe = df_municipios_com_casos_por_classe.fillna(0) # insere 0 para valores nulos 
    
    
    # cria df_razao_municipios_com_casos_por_classe com fração, de 0 a 1, de municípios afetados por classes em col
    df_fracao_municipios_com_casos_por_classe = df_municipios_com_casos_por_classe.copy()
    for classe, total_municipios_classe in df_fatores_geograficos.loc[:,col].value_counts().sort_index().iteritems():
        df_fracao_municipios_com_casos_por_classe[classe] = df_fracao_municipios_com_casos_por_classe[classe] / total_municipios_classe


    return df_municipios_com_casos_por_classe, df_fracao_municipios_com_casos_por_classe<jupyter_output><empty_output><jupyter_text>**Definição de função para plotagem de proporção de municípios afetados por Classes de Fatores Geográficos**<jupyter_code>def plot_razao_municipios_afetados(df=None, titulo='Título', save_fig=None):
    for coluna, marker in zip(df.columns, ['P', 's', 'o', '8', 'D', 'X', '*', "", "", "", "", "", "", ""]):
        df[coluna].plot(marker=marker, markersize=7)
       
    plt.legend(loc='upper left')


    datas_total = np.array(df.index)

    xtick_labels = np.array([x.split('-')[2] + '-' + x.split('-')[1] for x in df.index[::5]], dtype='object')

    xticks_datas = np.array(df.index[::5])

    xticks_posicao = np.where(np.isin(datas_total, xticks_datas))[0]

    plt.xticks(ticks_posicao, datas_selecionadas);


    yticks_posicao = np.linspace(0.1, 1, num=10)


    plt.yticks(yticks_posicao, np.chararray.replace(np.linspace(0.1, 1, num=10).round(2).astype(str), '.', ','));


    # plt.xticks([ 0,  5, 10, 15, 20, 25, 30, 35, 40, 45, 50], ['25-02', '01-03', '06-03', '11-03', '16-03', '21-03', '26-03','31-03', '05-04', '10-04', '15-04'])

    plt.title(titulo + '\n')

    plt.xlabel("")
    plt.ylim(bottom=0)
    
    
    if save_fig == None:
        save_fig = 'plot ritmos ' + df.columns.name + '.png'
    plt.savefig(save_fig);
for coluna, marker in zip(df_classes_pop_fracao.columns, ['P', 's', 'o', '8', 'D', 'X', '*', '>', 'd', None, None, None, None, None, None, None]):
    df_classes_pop_fracao[coluna].plot(marker=marker, markersize=7)
       
plt.legend(loc='upper left')


#plt.xticks([x for x in []], ['25/02'])


#plt.xticks(['2020-02-25', '2020-03-05', '2020-03-10', '2020-03-15', '2020-03-20', '2020-03-25', '2020-03-30', '2020-04-04'], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])



datas_total = np.array(df_classes_pop.index)

xtick_labels = np.array([x.split('-')[2] + '-' + x.split('-')[1] for x in df_classes_pop_fracao.index[::5]], dtype='object')

xticks_datas = np.array(df_classes_pop_fracao.index[::5])

xticks_posicao = np.where(np.isin(datas_total, xticks_datas))[0]

plt.xticks(ticks_posicao, datas_selecionadas);



yticks_posicao = np.linspace(0.1, 1, num=10)


plt.yticks(yticks_posicao, np.chararray.replace(np.linspace(0.1, 1, num=10).round(2).astype(str), '.', ','));


# plt.xticks([ 0,  5, 10, 15, 20, 25, 30, 35, 40, 45, 50], ['25-02', '01-03', '06-03', '11-03', '16-03', '21-03', '26-03','31-03', '05-04', '10-04', '15-04'])



plt.title('Razão de municípios com casos notificados por total de municípios no Brasil,\n segundo classes de patamar populacional\n')


plt.xlabel("")
plt.ylim(bottom=0)

plt.savefig('ritmos_pop_atual.png');
df_para_plot = df_covid_19_br.pivot_table(index='data', columns='classe_pop', values='casos_total', aggfunc='count')

df_para_plot = df_para_plot.fillna(0)

df_para_plot
df_para_plot2 = df_para_plot.copy()
for hierarquia, total in zip(['Grande Metrópole Nacional', 'Metrópole Nacional', 'Metrópole','Capital Regional A', 'Capital Regional B', 'Capital Regional C','Centro Subregional A', 'Centro Subregional B','Centro de Zona A', 'Centro de Zona B', 'Centro Local'], [47, 29, 101, 60, 46, 83, 85, 79, 197, 364, 4479]):
    df_para_plot2[hierarquia] = df_para_plot2[hierarquia] / total
df_para_plot2
df_fatores_geograficos.classe_pop.value_counts().sort_index()
array_classes = np.sort(df_fatores_geograficos.classe_pop.unique())
df_para_plot2 = df_para_plot.copy()
for classe, total_municipios_classe in df_fatores_geograficos.classe_pop.value_counts().sort_index().iteritems():
    df_para_plot2[classe] = df_para_plot2[classe] / total_municipios_classe
df_para_plot2
teste_series = df_fatores_geograficos.classe_pop.value_counts().sort_index()
teste_series[]
teste_series.sort_index()
teste_iter = teste_series.sort_index().iteritems()
next(teste_iter)[0]
next(teste_iter)[1]
df_para_plot2 = df_para_plot.copy()
for hierarquia, total in zip(['Grande Metrópole Nacional', 'Metrópole Nacional', 'Metrópole','Capital Regional A', 'Capital Regional B', 'Capital Regional C','Centro Subregional A', 'Centro Subregional B','Centro de Zona A', 'Centro de Zona B', 'Centro Local'], [47, 29, 101, 60, 46, 83, 85, 79, 197, 364, 4479]):
    df_para_plot2[hierarquia] = df_para_plot2[hierarquia] / total
df_para_plot2
teste = df_faunique_geograficos.loc[:, ['cod_mun','hierarquia_urbana07']].iterrows()
dic_mapeamento_hierarquias = {}
for linha in df_fatores_geograficos.loc[:, ['cod_mun','hierarquia_urbana07']].iterrows():
    dic_mapeamento_hierarquias[linha[1]['cod_mun']] = linha[1]['hierarquia_urbana07']
df_covid_19_br['hierarquia_urbana'] = df_covid_19_br.cod_mun.map(dic_mapeamento_hierarquias)
df_covid_19_br.data = pd.to_datetime(df_covid_19_br.data)
df_para_plot = df_covid_19_br.pivot_table(index='data', columns='hierarquia_urbana', values='casos_total', aggfunc='count')
df_para_plot = df_para_plot.fillna(0)
df_para_plot = df_para_plot[['Grande Metrópole Nacional', 'Metrópole Nacional', 'Metrópole',
             'Capital Regional A', 'Capital Regional B', 'Capital Regional C',
             'Centro Subregional A', 'Centro Subregional B',
             'Centro de Zona A', 'Centro de Zona B', 'Centro Local']]
df_para_plot
df_para_plot2 = df_para_plot.copy()
for hierarquia, total in zip(['Grande Metrópole Nacional', 'Metrópole Nacional', 'Metrópole','Capital Regional A', 'Capital Regional B', 'Capital Regional C','Centro Subregional A', 'Centro Subregional B','Centro de Zona A', 'Centro de Zona B', 'Centro Local'], [47, 29, 101, 60, 46, 83, 85, 79, 197, 364, 4479]):
    df_para_plot2[hierarquia] = df_para_plot2[hierarquia] / total
df_para_plot2
df_para_plot2.index
for coluna in ['Grande Metrópole Nacional', 'Metrópole Nacional', 'Metrópole','Capital Regional A', 'Capital Regional B', 'Capital Regional C','Centro Subregional A', 'Centro Subregional B','Centro de Zona A', 'Centro de Zona B', 'Centro Local']:
    df_para_plot2[coluna].plot()
plt.legend()
plt.title('Razão de municípios com casos notificados por total de municípios e hierarquia urbana no Brasil \n')

plt.xticks(['2020-02-25', '2020-03-05', '2020-03-10', '2020-03-15', '2020-03-20', '2020-03-25', '2020-03-30', '2020-04-04', '2020-04-11'], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04', '11/04'])

plt.xlabel("")
plt. ylim(top=1)

plt.savefig('ritmos_hierarquia_urbana.png')<jupyter_output><empty_output><jupyter_text>Turismo<jupyter_code>df_covid_19_br
dic_mapeamento_turismo = {}
for linha in df_fatores_geograficos.loc[:, ['cod_mun','turismo']].iterrows():
    dic_mapeamento_turismo[linha[1]['cod_mun']] = linha[1]['turismo']
df_covid_19_br['turismo'] = df_covid_19_br.cod_mun.map(dic_mapeamento_turismo)
df_covid_19_br.data = pd.to_datetime(df_covid_19_br.data)
df_para_plot_turismo = df_covid_19_br.pivot_table(index='data', columns='turismo', values='casos_total', aggfunc='count')
df_para_plot_turismo = df_para_plot_turismo.fillna(0)
df_para_plot_turismo.columns = ['0','1','2','3','4','5']
df_para_plot_turismo
df_para_plot_turismo2 = df_para_plot_turismo.copy()
for turismo, total in zip(['5','4','3','2','1','0'], [62, 257, 476, 1522, 377, 2876]):
    df_para_plot_turismo2[turismo] = df_para_plot_turismo2[turismo] / total
df_para_plot_turismo2
df_para_plot_turismo2.columns = ['Sem Classe', 'E', 'D','C','B', 'A']
for coluna in ['A', 'B', 'C','D', 'E', 'Sem Classe']:
    df_para_plot_turismo2[coluna].plot()
plt.legend(loc='upper left')
plt.title('Razão de municípios com casos notificados por total de municípios no Brasil,\n segundo grau de competitividade do turismo \n')

plt.xticks(['2020-02-25', '2020-03-05', '2020-03-10', '2020-03-15', '2020-03-20', '2020-03-25', '2020-03-30', '2020-04-04'], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])

plt.xlabel("")
plt. ylim(top=1)

plt.savefig('ritmos_turismo.png')<jupyter_output><empty_output><jupyter_text>PIB<jupyter_code>df_fatores_geograficos.columns
df_covid_19_br
df_covid_19_br = df_covid_19_br[['municipio', 'estado', 'data', 'novos_casos','casos_total', 'hierarquia_urbana', 'turismo']]
df_covid_19_br
def gera_df_plot_dias_covid_por_fator(df_fatores, df_covid, col, uf=None):
    """ 
    toma o dataframe de fatores geográficos para a COVID-19, com cod_mun no index, 
    e retorna um dataframe pronto para plotagem de evolução diária por fator.
    """

    if uf != None:
        df_covid = df_covid[df_covid.estado  == uf]
        df_fatores = df_fatores[df_fatores.UF  == uf]
    
    dic_mapeamento = {}
    for linha in df_fatores.loc[:, ['cod_mun', col]].iterrows():
        dic_mapeamento[linha[1]['cod_mun']] = linha[1][col]

    df_covid[col] = df_covid.cod_mun.map(dic_mapeamento)
    
    df_covid.data = pd.to_datetime(df_covid.data)
    
    df_para_plot = df_covid.pivot_table(index='data', columns=col, values='casos_total', aggfunc='count')
    
    df_para_plot = df_para_plot.fillna(0)
    
    return df_para_plot
df_fatores_geograficos.columns
df_plot_evolucao_pib = gera_df_plot_dias_covid_por_fator(df_fatores=df_fatores_geograficos, df_covid=df_covid_19_br, col='classe_pib', uf=None)
df_plot_evolucao_pib
np.sort(df_plot_evolucao_pib.columns)
np.sort(df_fatores_geograficos.classe_pib.unique())
df_fatores_geograficos.classe_pib.value_counts()
df_fatores_geograficos.classe_pib.value_counts().values
df_plot_evolucao_pib2 = df_plot_evolucao_pib.copy()
for faixapib, total in zip(['acima de 20.000', 
                           'até 50', 
                           'de 1.000 a 5.000', 
                           'de 10.000 a 20.000', 
                           'de 100 a 500', 
                           'de 5.000 a 10.000', 
                           'de 50 a 100', 
                           'de 500 a 1.000'], [42, 693, 597, 56,  2447, 65, 1109, 561]):
    df_plot_evolucao_pib2[faixapib] = df_plot_evolucao_pib2[faixapib] / total
df_plot_evolucao_pib2
df_plot_evolucao_pib2 = df_plot_evolucao_pib2[['até 50', 'de 50 a 100', 'de 100 a 500', 'de 500 a 1.000', 'de 1.000 a 5.000', 'de 5.000 a 10.000', 'de 10.000 a 20.000', 'acima de 20.000', ]]
for coluna in df_plot_evolucao_pib2.columns:
    df_plot_evolucao_pib2[coluna].plot()
plt.legend()
plt.title('Razão de municípios com casos notificados por total de municípios no Brasil,\n segundo PIB de 2017 (Milhões R$)')

plt.xticks(['2020-02-25', '2020-03-05', '2020-03-10', '2020-03-15', '2020-03-20', '2020-03-25', '2020-03-30', '2020-04-04'], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])

plt.xlabel("")
plt. ylim()

plt.savefig('ritmos_pib.png')<jupyter_output><empty_output><jupyter_text>População<jupyter_code>df_plot_evolucao_pop = gera_df_plot_dias_covid_por_fator(df_fatores=df_fatores_geograficos, df_covid=df_covid_19_br, col='classe_pop', uf=None)
df_plot_evolucao_pop  = df_plot_evolucao_pop[['Até 20.000', 'Até 50.000', 'Até 100.000','Até 500.000','Até 1.000.000', 'Acima de 1.000.000']]
df_plot_evolucao_pop 
df_fatores_geograficos.classe_pop.value_counts()
df_plot_evolucao_pop.columns
df_plot_evolucao_pop2 = df_plot_evolucao_pop.copy()
for faixapop, total in zip(['Até 20.000', 
                            'Até 50.000', 
                            'Até 100.000', 
                            'Até 500.000',
                            'Até 1.000.000',
                            'Acima de 1.000.000'], [3796, 1101,  349,  276,   31,   17]):
    df_plot_evolucao_pop2[faixapop] = df_plot_evolucao_pop2[faixapop] / total
df_plot_evolucao_pop2
for coluna in df_plot_evolucao_pop2.columns:
    df_plot_evolucao_pop2[coluna].plot()
plt.legend()
plt.title('Razão de municípios com casos notificados por total de municípios no Brasil,\n segundo número de habitantes em 2019')

plt.xticks(['2020-02-25', '2020-03-05', '2020-03-10', '2020-03-15', '2020-03-20', '2020-03-25', '2020-03-30', '2020-04-04'], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])

plt.xlabel("")
plt. ylim()

plt.savefig('ritmos_pop.png')
df_fatores_geograficos.classe_exportacao.unique()<jupyter_output><empty_output><jupyter_text>PIB Percapita<jupyter_code>df_plot_evolucao_pib_percapita = gera_df_plot_dias_covid_por_fator(df_fatores=df_fatores_geograficos, df_covid=df_covid_19_br, col='classe_capita', uf=None)
df_plot_evolucao_pib_percapita = df_plot_evolucao_pib_percapita[[
    'até 1.000', 'de 1.000 a 2.000', 'de 2.000 a 3.000', 'de 3.000 a 4.000',
    'de 4.000 a 5.000', 'de 5.000 a 10.000', 'Acima de 10.000'
]]
df_plot_evolucao_pib_percapita
df_fatores_geograficos.classe_capita.value_counts()
df_plot_evolucao_pib_percapita.columns
df_plot_evolucao_pib_percapita2 = df_plot_evolucao_pib_percapita.copy()
for faixapibcapita, total in zip(['até 1.000', 
                            'de 1.000 a 2.000', 
                            'de 2.000 a 3.000', 
                            'de 3.000 a 4.000',
                            'de 4.000 a 5.000', 
                            'de 5.000 a 10.000', 
                            'Acima de 10.000'
                            ], [1541, 1748, 1126, 549, 277, 271, 58]):
    df_plot_evolucao_pib_percapita2[faixapibcapita] = df_plot_evolucao_pib_percapita2[faixapibcapita] / total
df_plot_evolucao_pib_percapita2
for coluna in df_plot_evolucao_pib_percapita2.columns:
    df_plot_evolucao_pib_percapita2[coluna].plot()
plt.legend(loc='upper left')
plt.title('Razão de municípios com casos notificados por total de municípios no Brasil,\n segundo PIB percapita em 2017 (R$)')

plt.xticks(['2020-02-25', '2020-03-05', '2020-03-10', '2020-03-15', '2020-03-20', '2020-03-25', '2020-03-30', '2020-04-04'], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])

plt.xlabel("")
plt. ylim(top=1)

plt.savefig('ritmos_pib_percapita.png')<jupyter_output><empty_output><jupyter_text>Exportação<jupyter_code>df_plot_evolucao_exportacao = gera_df_plot_dias_covid_por_fator(df_fatores=df_fatores_geograficos, df_covid=df_covid_19_br, col='classe_exportacao', uf=None)
df_plot_evolucao_exportacao = df_plot_evolucao_exportacao[[
    'Sem exportações','até 50.000', 'de 50.000 a 200.000', 
    'de 200.000 a 500.000', 'de 500.000 a 1.000.000',
    'de 1.000.000 a 5.000.000', 'de 5.000.000 a 20.000.000',
    'de 20.000.000 a 50.000.000', 'de 50.000.000 a 100.000.000', 
    'de 100.000.000 a 500.000.000','acima de 500.000.000'
]]
df_plot_evolucao_exportacao
df_fatores_geograficos.classe_exportacao.value_counts()
df_plot_evolucao_exportacao.columns
df_plot_evolucao_exportacao2 = df_plot_evolucao_exportacao.copy()
for faixa_export, total in zip([
    'Sem exportações','até 50.000', 'de 50.000 a 200.000', 
    'de 200.000 a 500.000', 'de 500.000 a 1.000.000',
    'de 1.000.000 a 5.000.000', 'de 5.000.000 a 20.000.000',
    'de 20.000.000 a 50.000.000', 'de 50.000.000 a 100.000.000', 
    'de 100.000.000 a 500.000.000','acima de 500.000.000'
], [3374, 274, 179, 161, 177, 340, 347, 237, 177, 232, 93]):
    df_plot_evolucao_exportacao2[faixa_export] = df_plot_evolucao_exportacao2[faixa_export] / total
df_plot_evolucao_exportacao2
for coluna in df_plot_evolucao_exportacao2.columns:
    df_plot_evolucao_exportacao2[coluna].plot()
plt.legend(loc='upper left')
plt.title('Razão de municípios com casos notificados por total de municípios no Brasil,\n segundo Exportações em 2019 (U$FOB) \n')

plt.xticks(['2020-02-25', '2020-03-05', '2020-03-10', '2020-03-15', '2020-03-20', '2020-03-25', '2020-03-30', '2020-04-04'], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])

plt.xlabel("")
plt. ylim(top=1)

plt.savefig('ritmos_exportacao.png')
df_fatores_geograficos.classe_importacao.unique()<jupyter_output><empty_output><jupyter_text>Importação<jupyter_code>df_plot_evolucao_importacao = gera_df_plot_dias_covid_por_fator(df_fatores=df_fatores_geograficos, df_covid=df_covid_19_br, col='classe_importacao', uf=None)
df_plot_evolucao_importacao = df_plot_evolucao_importacao[[
    'sem importação','até 50.000', 'de 50.000 até 100.000', 
    'de 100.000 até 500.000', 'de 500.000 até 1.000.000',
    'de 1.000.000 até 5.000.000', 'de 5.000.000 até 10.000.000',
    'de 10.000.000 até 50.000.000', 'de 50.000.000 até 200.000.000', 
    'de 2000.000 até 500.000.000','acima de 500.000.000'
]]
df_plot_evolucao_importacao
df_fatores_geograficos.classe_importacao.value_counts()
df_plot_evolucao_importacao.columns
df_plot_evolucao_importacao2 = df_plot_evolucao_importacao.copy()
for faixa_import, total in zip([
    'sem importação','até 50.000', 'de 50.000 até 100.000', 
    'de 100.000 até 500.000', 'de 500.000 até 1.000.000',
    'de 1.000.000 até 5.000.000', 'de 5.000.000 até 10.000.000',
    'de 10.000.000 até 50.000.000', 'de 50.000.000 até 200.000.000', 
    'de 2000.000 até 500.000.000','acima de 500.000.000'
], [3548, 420, 115, 283, 140, 364, 163, 264, 134, 64, 75]):
    df_plot_evolucao_importacao2[faixa_import] = df_plot_evolucao_importacao2[faixa_import] / total
df_plot_evolucao_importacao2
for coluna in df_plot_evolucao_importacao2.columns:
    df_plot_evolucao_importacao2[coluna].plot()
plt.legend(loc='upper left')
plt.title('Razão de municípios com casos notificados por total de municípios no Brasil,\n segundo importações em 2019 (U$FOB) \n')

plt.xticks(['2020-02-25', '2020-03-05', '2020-03-10', '2020-03-15', '2020-03-20', '2020-03-25', '2020-03-30', '2020-04-04'], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])

plt.xlabel("")
plt. ylim(top =1)

plt.savefig('ritmos_importacoes.png')
df_fatores_geograficos.columns<jupyter_output><empty_output><jupyter_text>Índice de proximidade rodoviária/hidroviária<jupyter_code>df_fatores_geograficos.classe_proximidade.unique()
df_plot_evolucao_proximidade = gera_df_plot_dias_covid_por_fator(df_fatores=df_fatores_geograficos, df_covid=df_covid_19_br, col='classe_proximidade', uf=None)
df_plot_evolucao_proximidade = df_plot_evolucao_proximidade[[
    '0', '0,20 a 0,25', '0,25 a 0,30', '0,30 a 0,35',
    '0,35 a 0,40','0,40 a 0,45','acima de 0,45'
]]
df_plot_evolucao_proximidade
df_fatores_geograficos.classe_proximidade.value_counts()
df_plot_evolucao_proximidade.columns
df_plot_evolucao_proximidade2 = df_plot_evolucao_proximidade.copy()
for faixa_proximidade, total in zip([
    '0', '0,20 a 0,25', '0,25 a 0,30', '0,30 a 0,35',
    '0,35 a 0,40','0,40 a 0,45','acima de 0,45'
], [184, 183, 1382, 2285, 1332, 189, 15]):
    df_plot_evolucao_proximidade2[faixa_proximidade] = df_plot_evolucao_proximidade2[faixa_proximidade] / total
df_plot_evolucao_proximidade2
for coluna in df_plot_evolucao_proximidade2.columns:
    df_plot_evolucao_proximidade2[coluna].plot()
plt.legend(loc='upper left')
plt.title('Razão de municípios com casos notificados por total de municípios no Brasil,\n segundo índice de proximidade rodoviária/hidroviária')

plt.xticks(['2020-02-25', '2020-03-05', '2020-03-10', '2020-03-15', '2020-03-20', '2020-03-25', '2020-03-30', '2020-04-04'], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])

plt.xlabel("")
plt. ylim()

plt.savefig('ritmos_exportacao.png')
df_fatores_geograficos.classe_voos_domesticos.unique()
df_fatores_geograficos.columns<jupyter_output><empty_output><jupyter_text>Voos Domésticos<jupyter_code>df_plot_evolucao_voos_domesticos = gera_df_plot_dias_covid_por_fator(df_fatores=df_fatores_geograficos, df_covid=df_covid_19_br, col='classe_voos_domesticos', uf=None)
df_plot_evolucao_voos_domesticos = df_plot_evolucao_voos_domesticos[[
    'sem voos', 'até 20', 'até 50', 'de 50 até 200',
    'de 200 até 1.000', 'acima de 1.000'
]]
df_plot_evolucao_voos_domesticos.columns = [
    'sem voos', 'até 20', 'de 20 até 50', 'de 50 até 200',
    'de 200 até 1.000', 'acima de 1.000'
]
df_plot_evolucao_voos_domesticos
df_fatores_geograficos.classe_voos_domesticos.value_counts()
df_plot_evolucao_voos_domesticos.columns
df_plot_evolucao_voos_domesticos2 = df_plot_evolucao_voos_domesticos.copy()
for faixa_voos_dom, total in zip([
    'sem voos', 'até 20', 'de 20 até 50', 'de 50 até 200',
    'de 200 até 1.000', 'acima de 1.000'
], [5401, 63, 33, 38, 20, 15]):
    df_plot_evolucao_voos_domesticos2[faixa_voos_dom] = df_plot_evolucao_voos_domesticos2[faixa_voos_dom] / total
df_plot_evolucao_voos_domesticos2
filtro_dias = df_fatores_geograficos.dias_contaminação_referencia >= 0

fig, ax = plt.subplots(nrows=1,ncols=1, figsize=(20,8))

color_map = plt.cm.get_cmap('magma')
color_map = color_map.reversed()

scatter = plt.scatter(c=df_fatores_geograficos['hierarquia'][filtro_dias], 
            x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias],
            y=np.log(df_fatores_geograficos.pop2019[filtro_dias]),
            alpha=0.9,
            cmap=color_map,
            s= 300);

ax.set_title('Municípios Brasileiros segundo dade de notificação do primeiro caso de COVID-19,\n população e hierarquia urbana \n')
teste = plt.colorbar(ticks=[0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,  11])
# teste.set_label('Hierarquia Urbana', rotation=270)
teste.ax.set_yticklabels(['Sem Classificação','Centro Local', 'Centro de Zona B', 'Centro de Zona A', 'Capital Sub-regional B', 'Capital Sub-regional A', 'Capital Regional C', 'Capital Regional B', 'Capital Regional A', 'Metrópole', 'Metrópole Nacional', 'Grande Metrópole Nacional'])  # horizontal colorbar

plt.ticklabel_format(useOffset=False, style='plain')
plt.xlabel('data da primeira notificação')
plt.ylabel('População em 2019 (escala logarítmica)');
plt.ylim(top=17)

plt.xticks([1, 10, 15, 20, 25, 30, 35, 40], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])
plt.savefig('covid_pop_hierarquia.png')
#lgnd = plt.legend(handles=handles, loc="lower left", scatterpoints=1)

#legend2 = ax.legend(handles, labels, loc="upper right", title="Sizes")
#lgnd.legendHandles[0]._sizes = [30]
#lgnd.legendHandles[1]._sizes = [30]
filtro_dias = df_fatores_geograficos.dias_contaminação_referencia >= 0

fig, ax = plt.subplots(nrows=1,ncols=1, figsize=(20,8))

color_map = plt.cm.get_cmap('gist_heat')
color_map = color_map.reversed()

scatter = plt.scatter(c=df_fatores_geograficos['pip_per_capita17'][filtro_dias], 
            x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias],
            y=np.log(df_fatores_geograficos.pib2017milreais[filtro_dias]),
            alpha=0.9,
            cmap=color_map,
            s= 300);

ax.set_title('Municípios Brasileiros segundo momento do primeiro caso de COVID-19, PIB e PIB per capita\n')

teste = plt.colorbar()
teste.set_label('PIB per capita em 2017', rotation=270)
#teste.ax.set_yticklabels(['Sem Classificação','Centro Local', 'Centro de Zona B', 'Centro de Zona A', 'Capital Sub-regional B', 'Capital Sub-regional A', 'Capital Regional C', 'Capital Regional B', 'Capital Regional A', 'Metrópole', 'Metrópole Nacional', 'Grande Metrópole Nacional'])  # horizontal colorbar

plt.ticklabel_format(useOffset=False, style='plain')
plt.xlabel('primeira notificação')
plt.ylabel('log(PIB em 2017 (mil Reais))');

plt.tight_layout()

plt.xticks([1, 10, 15, 20, 25, 30, 35, 40], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])
plt.savefig('covid_pib_pibpercapita.png')

#lgnd = plt.legend(handles=handles, loc="lower left", scatterpoints=1)

#legend2 = ax.legend(handles, labels, loc="upper right", title="Sizes")
#lgnd.legendHandles[0]._sizes = [30]
#lgnd.legendHandles[1]._sizes = [30]
filtro_dias = df_fatores_geograficos.dias_contaminação_referencia >= 0

fig, ax = plt.subplots(nrows=1,ncols=1, figsize=(20,8))

color_map = plt.cm.get_cmap('summer')
color_map = color_map.reversed()

scatter = plt.scatter(c=df_fatores_geograficos['voos_int'][filtro_dias], 
            x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias],
            y=np.log(df_fatores_geograficos.voos_dom[filtro_dias] + 1),
            alpha=0.9,
            cmap=color_map,
            s= 300);

ax.set_title('Municípios Brasileiros segundo momento do primeiro caso de COVID-19,\n número de vôos nacionais e internacionais\n')

teste = plt.colorbar()
teste.set_label('Voos internacionais', rotation=270)
#teste.ax.set_yticklabels(['Sem Classificação','Centro Local', 'Centro de Zona B', 'Centro de Zona A', 'Capital Sub-regional B', 'Capital Sub-regional A', 'Capital Regional C', 'Capital Regional B', 'Capital Regional A', 'Metrópole', 'Metrópole Nacional', 'Grande Metrópole Nacional'])  # horizontal colorbar

plt.ticklabel_format(useOffset=False, style='plain')
plt.xlabel('primeira notificação (dias a partir de 25 de fevereiro de 2020)')
plt.ylabel('Voos nacionais (escala logarítmica)');

plt.tight_layout()

plt.xticks([1, 10, 15, 20, 25, 30, 35, 40], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])
plt.savefig('covid_voos.png')

#plt.savefig('covid.png')
#lgnd = plt.legend(handles=handles, loc="lower left", scatterpoints=1)

#legend2 = ax.legend(handles, labels, loc="upper right", title="Sizes")
#lgnd.legendHandles[0]._sizes = [30]
#lgnd.legendHandles[1]._sizes = [30]
filtro_dias = df_fatores_geograficos.dias_contaminação_referencia >= 0

fig, ax = plt.subplots(nrows=1,ncols=1, figsize=(20,8))

color_map = plt.cm.get_cmap('cividis')
color_map = color_map.reversed()

scatter = plt.scatter(c=df_fatores_geograficos['indice_proximidade'][filtro_dias], 
            x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias],
            y=(np.log(df_fatores_geograficos.indice_intermediacao[filtro_dias]*1000000000))/20,
            alpha=0.9,
            cmap=color_map,
            s= 300);

ax.set_title('Municípios Brasileiros segundo momento do primeiro caso de COVID-19,\n índice de intermediação e índice de proximidade rodoviária/hidroviária \n')

teste = plt.colorbar()
teste.set_label('Indice de Proximidade', rotation=270)
#teste.ax.set_yticklabels(['Sem Classificação','Centro Local', 'Centro de Zona B', 'Centro de Zona A', 'Capital Sub-regional B', 'Capital Sub-regional A', 'Capital Regional C', 'Capital Regional B', 'Capital Regional A', 'Metrópole', 'Metrópole Nacional', 'Grande Metrópole Nacional'])  # horizontal colorbar

plt.ticklabel_format(useOffset=False, style='plain')
plt.xlabel('primeira notificação')
plt.ylabel('Indice de Intermediação');

plt.tight_layout()

plt.xticks([1, 10, 15, 20, 25, 30, 35, 40], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])
plt.savefig('covid_indice_intermediacao.png')


#plt.savefig('covid.png')
#lgnd = plt.legend(handles=handles, loc="lower left", scatterpoints=1)

#legend2 = ax.legend(handles, labels, loc="upper right", title="Sizes")
#lgnd.legendHandles[0]._sizes = [30]
#lgnd.legendHandles[1]._sizes = [30]
filtro_dias = df_fatores_geograficos.dias_contaminação_referencia >= 0

fig, ax = plt.subplots(nrows=1,ncols=1, figsize=(20,8))

color_map = plt.cm.get_cmap('cividis')
color_map = color_map.reversed()

scatter = plt.scatter(c=df_fatores_geograficos['peso_integracao_geral'][filtro_dias], 
            x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias],
            y=df_fatores_geograficos.peso_integracao_interna[filtro_dias],
            alpha=0.9,
            cmap=color_map,
            s= 300);

ax.set_title('Municípios Brasileiros segundo momento do primeiro caso de COVID-19,\n índice de intermediação e índice de proximidade rodoviária/hidroviária \n')

teste = plt.colorbar()
teste.set_label('Indice de Proximidade', rotation=270)
#teste.ax.set_yticklabels(['Sem Classificação','Centro Local', 'Centro de Zona B', 'Centro de Zona A', 'Capital Sub-regional B', 'Capital Sub-regional A', 'Capital Regional C', 'Capital Regional B', 'Capital Regional A', 'Metrópole', 'Metrópole Nacional', 'Grande Metrópole Nacional'])  # horizontal colorbar

plt.ticklabel_format(useOffset=False, style='plain')
plt.xlabel('primeira notificação')
plt.ylabel('Indice de Intermediação');

plt.tight_layout()

plt.xticks([1, 10, 15, 20, 25, 30, 35, 40], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])
plt.savefig('covid_indice_intermediacao.png')


#plt.savefig('covid.png')
#lgnd = plt.legend(handles=handles, loc="lower left", scatterpoints=1)

#legend2 = ax.legend(handles, labels, loc="upper right", title="Sizes")
#lgnd.legendHandles[0]._sizes = [30]
#lgnd.legendHandles[1]._sizes = [30]
for coluna in df_plot_evolucao_voos_domesticos2.columns:
    df_plot_evolucao_voos_domesticos2[coluna].plot()
plt.legend(loc='upper left')
plt.title('Razão de municípios com casos notificados por total de municípios no Brasil,\n segundo número de voos domésticos em fevereiro de 2020')

plt.xticks(['2020-02-25', '2020-03-05', '2020-03-10', '2020-03-15', '2020-03-20', '2020-03-25', '2020-03-30', '2020-04-04'], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])

plt.xlabel("")
plt. ylim()

plt.savefig('ritmos_voos_domesticos.png')
df_para_plot_pr = df_covid_19_br[df_covid_19_br['estado'] == 'PR'].pivot_table(index='data', columns='hierarquia_urbana', values='casos_total', aggfunc='count')
df_para_plot_pr = df_para_plot_pr.fillna(0)
df_para_plot_pr
df_para_plot_pr = df_para_plot_pr[['Metrópole','Capital Regional B', 'Capital Regional C','Centro Subregional A', 'Centro Subregional B','Centro de Zona A', 'Centro de Zona B', 'Centro Local']]
df_para_plot_pr2 = df_para_plot_pr.copy()
for hierarquia, total in zip(['Metrópole','Capital Regional B', 'Capital Regional C','Centro Subregional A', 'Centro Subregional B','Centro de Zona A', 'Centro de Zona B', 'Centro Local'], [47, 29, 101, 60, 46, 83, 85, 79, 197, 364, 4479]):
    df_para_plot_pr2[hierarquia] = df_para_plot_pr2[hierarquia] / total
df_para_plot2
plt.legend?
for coluna in ['Metrópole','Capital Regional B', 'Capital Regional C','Centro Subregional A', 'Centro Subregional B','Centro de Zona A', 'Centro de Zona B', 'Centro Local']:
    df_para_plot2[coluna].plot()
plt.legend(loc='upper left')


plt.title('Razão de municípios com casos notificados por total de municípios no Paraná')
plt.xticks(['2020-02-25', '2020-03-05', '2020-03-10', '2020-03-15', '2020-03-20', '2020-03-25', '2020-03-30', '2020-04-04'], ['25/02', '05/03', '10/03', '15/03', '20/03', '25/05', '30/03', '04/04'])
plt.xlabel("")


plt.ylim(top=1)
plt.savefig('ritmos_pr.png')
filter_len_cod_mun = df_covid_19_br.cod_mun.astype('str').str.len() == 2


df_covid_19_br = df_covid_19_br[~filter_len_cod_mun]
df_covid_19_br.info()
df_covid_19_br.data = pd.to_datetime(df_covid_19_br.data)
df_covid_19_br.plot('data', 'casos_total')
pd.to_datetime(df_covid_19_br.data)
filtro_dias_hierarquia = (df_fatores_geograficos.dias_contaminação_referencia >= 0) & (df_fatores_geograficos.hierarquia > 0)
filtro_dias_sem_hierarquia = (df_fatores_geograficos.dias_contaminação_referencia >= 0) & (df_fatores_geograficos.hierarquia == 0)


fig, ax = plt.subplots(nrows=1,ncols=1, figsize=(20,8))

color_map = plt.cm.get_cmap('magma')
color_map = color_map.reversed()


scatter = plt.scatter(c=df_fatores_geograficos['hierarquia'][filtro_dias_sem_hierarquia], 
            x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias_sem_hierarquia],
            y=np.log(df_fatores_geograficos.pop2019[filtro_dias_sem_hierarquia]),
            alpha=0.9,
            s= 300);


ax.set_title('Municípios Brasileiros segundo momento do primeiro Caso de COVID-19, população e hierarquia urbana \n')
teste = plt.colorbar(ticks=[0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,  11])
# teste.set_label('Hierarquia Urbana', rotation=270)
teste.ax.set_yticklabels(['Sem Classificação','Centro Local', 'Centro de Zona B', 'Centro de Zona A', 'Capital Sub-regional B', 'Capital Sub-regional A', 'Capital Regional C', 'Capital Regional B', 'Capital Regional A', 'Metrópole', 'Metrópole Nacional', 'Grande Metrópole Nacional'])  # horizontal colorbar

plt.ticklabel_format(useOffset=False, style='plain')
plt.xlabel('primeira notificação (dias a partir de 25 de fevereiro de 2020)')
plt.ylabel('População em 2019 (escala logarítmica)');
plt.xlim(left=0)
plt.ylim(top=17)

plt.savefig('covid.png')
#lgnd = plt.legend(handles=handles, loc="lower left", scatterpoints=1)

#legend2 = ax.legend(handles, labels, loc="upper right", title="Sizes")
#lgnd.legendHandles[0]._sizes = [30]
#lgnd.legendHandles[1]._sizes = [30]
filtro_dias = df_fatores_geograficos.dias_contaminação_referencia >= 0

fig, ax = plt.subplots(nrows=1,ncols=1, figsize=(20,8))

color_map = plt.cm.get_cmap('magma')
color_map = color_map.reversed()

scatter = plt.scatter(c=df_fatores_geograficos['hierarquia'][filtro_dias], 
            x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias],
            y=np.log(df_fatores_geograficos.pop2019[filtro_dias]),
            alpha=0.9,
            cmap=color_map,
            s= 300);

ax.set_title('Municípios Brasileiros segundo momento do primeiro Caso de COVID-19, população e hierarquia urbana \n')
teste = plt.colorbar(ticks=[0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10,  11])
# teste.set_label('Hierarquia Urbana', rotation=270)
teste.ax.set_yticklabels(['Sem Classificação','Centro Local', 'Centro de Zona B', 'Centro de Zona A', 'Capital Sub-regional B', 'Capital Sub-regional A', 'Capital Regional C', 'Capital Regional B', 'Capital Regional A', 'Metrópole', 'Metrópole Nacional', 'Grande Metrópole Nacional'])  # horizontal colorbar

plt.ticklabel_format(useOffset=False, style='plain')
plt.xlabel('primeira notificação (dias a partir de 25 de fevereiro de 2020)')
plt.ylabel('População em 2019 (escala logarítmica)');


plt.savefig('covid.png')
#lgnd = plt.legend(handles=handles, loc="lower left", scatterpoints=1)

#legend2 = ax.legend(handles, labels, loc="upper right", title="Sizes")
#lgnd.legendHandles[0]._sizes = [30]
#lgnd.legendHandles[1]._sizes = [30]
df_fatores_geograficos.columns
df_fatores_geograficos[df_fatores_geograficos['dia0504'] >0][['pib2017milreais','dia0504']].corr()
df_fatores_geograficos[df_fatores_geograficos['dia0504'] >0][['pop2019','dia0504']].corr()
df_fatores_geograficos[df_fatores_geograficos['dia0504'] >0][['export_fob_2019', 'dia0504']].corr()
df_fatores_geograficos[df_fatores_geograficos['dia0504'] >0][['import_fob_2019', 'dia0504']].corr()
df_fatores_geograficos[df_fatores_geograficos['dia0504'] >0][['pip_per_capita17', 'dia0504']].corr()
df_fatores_geograficos
df_fatores_geograficos[df_fatores_geograficos['dia0504'] >0][['pip_per_capita17', 'dia0504']].corr()
df_fatores_geograficos_para_correlacao = pd.concat([df_fatores_geograficos[['cod_mun', 'UF', 'Município', 'pop2019', 'pib2017milreais',
       'export_fob_2019', 'import_fob_2019', 'pip_per_capita17',
       'hierarquia_urbana07', 'hierarquia', 'voos_dom', 'voos_int',
       'indice_proximidade', 'indice_intermediacao', 'dia0504']], df_fatores_geograficos[['dias_contaminação_referencia']]], axis='columns')

df_fatores_geograficos_para_correlacao
sns.pairplot((df_fatores_geograficos_para_correlacao.iloc[:,3:][df_fatores_geograficos_para_correlacao['dias_contaminação_referencia'] > 0]))
filtro_dias = df_fatores_geograficos.dias_contaminação_referencia >= 0

fig, ax = plt.subplots(nrows=1,ncols=2, figsize=(20,8))

ax[0].scatter(y=df_fatores_geograficos['pop2019'][filtro_dias], x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias]);
ax[0].set_ylabel('População em 2019')
ax[0].ticklabel_format(useOffset=False, style='plain')
ax[0].set_xlabel('Data da primeira notificação')
ax[0].set_ylabel('População em 2019')


ax[1].scatter(y=np.log(df_fatores_geograficos['pop2019'][filtro_dias]), x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias]);
ax[1].set_xlabel('Data da primeira notificação')
ax[1].set_ylabel('Log(População em 2019)')
ax[1].set_xlabel('Data da primeira notificação');
filtro_dias = df_fatores_geograficos.dias_contaminação_referencia >= 0

fig, ax = plt.subplots(nrows=1,ncols=2, figsize=(20,8))

ax[0].scatter(y=df_fatores_geograficos['pib2017milreais'][filtro_dias], x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias]);
ax[0].set_ylabel('PIB em 2017 (mil Reais)')
ax[0].ticklabel_format(useOffset=False, style='plain')
ax[0].set_xlabel('Data da primeira notificação')
ax[0].set_ylabel('População em 2019')


ax[1].scatter(y=np.log(df_fatores_geograficos['pib2017milreais'][filtro_dias]), x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias]);
ax[1].set_xlabel('Data da primeira notificação')
ax[1].set_ylabel('Log(PIB em 2017 (mil Reais))')
ax[1].set_xlabel('Data da primeira notificação');
filtro_dias = df_fatores_geograficos.dias_contaminação_referencia >= 0

fig, ax = plt.subplots(nrows=1,ncols=2, figsize=(20,8))

ax[0].scatter(y=df_fatores_geograficos['pip_per_capita17'][filtro_dias], x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias]);
ax[0].set_ylabel('PIB per capita em 2017 (mil Reais)')
ax[0].ticklabel_format(useOffset=False, style='plain')
ax[0].set_xlabel('Data da primeira notificação')
ax[0].set_ylabel('População em 2019')


ax[1].scatter(y=np.log(df_fatores_geograficos['pip_per_capita17'][filtro_dias]), x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias]);
ax[1].set_xlabel('Data da primeira notificação')
ax[1].set_ylabel('Log(PIB per capita em 2017 (mil Reais))')
ax[1].set_xlabel('Data da primeira notificação');
filtro_dias = df_fatores_geograficos.dias_contaminação_referencia >= 0

fig, ax = plt.subplots(nrows=1,ncols=2, figsize=(20,8))

ax[0].scatter(y=df_fatores_geograficos['export_fob_2019'][filtro_dias], x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias]);
ax[0].set_ylabel('Exportações 2019 (FOB)')
ax[0].ticklabel_format(useOffset=False, style='plain')
ax[0].set_xlabel('Data da primeira notificação')
ax[0].set_ylabel('População em 2019')


ax[1].scatter(y=np.log(df_fatores_geograficos['export_fob_2019'][filtro_dias]), x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias]);
ax[1].set_xlabel('Data da primeira notificação')
ax[1].set_ylabel('Log(Exportações 2019 (FOB))')
ax[1].set_xlabel('Data da primeira notificação');
filtro_dias = df_fatores_geograficos.dias_contaminação_referencia >= 0

fig, ax = plt.subplots(nrows=1,ncols=2, figsize=(20,8))

ax[0].scatter(y=df_fatores_geograficos['import_fob_2019'][filtro_dias], x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias]);
ax[0].set_ylabel('Importações 2019 (FOB)')
ax[0].ticklabel_format(useOffset=False, style='plain')
ax[0].set_xlabel('Data da primeira notificação')
ax[0].set_ylabel('População em 2019')


ax[1].scatter(y=np.log(df_fatores_geograficos['import_fob_2019'][filtro_dias]), x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias]);
ax[1].set_xlabel('Data da primeira notificação')
ax[1].set_ylabel('Log(Importações 2019 (FOB))')
ax[1].set_xlabel('Data da primeira notificação');
filtro_dias = df_fatores_geograficos.dias_contaminação_referencia >= 0

fig, ax = plt.subplots(nrows=1,ncols=2, figsize=(20,8))

ax[0].scatter(y=df_fatores_geograficos['import_fob_2019'][filtro_dias], x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias]);
ax[0].set_ylabel('Importações 2019 (FOB)')
ax[0].ticklabel_format(useOffset=False, style='plain')
ax[0].set_xlabel('Data da primeira notificação')
ax[0].set_ylabel('População em 2019')


ax[1].scatter(y=np.log(df_fatores_geograficos['import_fob_2019'][filtro_dias]), x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias]);
ax[1].set_xlabel('Data da primeira notificação')
ax[1].set_ylabel('Log(Importações 2019 (FOB))')
ax[1].set_xlabel('Data da primeira notificação');
df_fatores_geograficos[['peso_integracao_geral', 'peso_integracao_interna']].max()
filtro_dias = df_fatores_geograficos.dias_contaminação_referencia >= 0

fig, ax = plt.subplots(nrows=1,ncols=1, figsize=(20,8))

color_map = plt.cm.get_cmap('magma')
color_map = color_map.reversed()

scatter = plt.scatter(c=df_fatores_geograficos['peso_integracao_interna'][filtro_dias], 
            x=df_fatores_geograficos.dias_contaminação_referencia[filtro_dias],
            y=df_fatores_geograficos.peso_integracao_geral[filtro_dias],
            alpha=0.9,
            cmap=color_map,
            s= 300);

ax.set_title('Municípios Brasileiros segundo momento do primeiro Caso de COVID-19, número de vôos nacionais e internacionais\n')

teste = plt.colorbar()
teste.set_label('Voos internacionais', rotation=270)
#teste.ax.set_yticklabels(['Sem Classificação','Centro Local', 'Centro de Zona B', 'Centro de Zona A', 'Capital Sub-regional B', 'Capital Sub-regional A', 'Capital Regional C', 'Capital Regional B', 'Capital Regional A', 'Metrópole', 'Metrópole Nacional', 'Grande Metrópole Nacional'])  # horizontal colorbar

plt.ticklabel_format(useOffset=False, style='plain')
plt.xlabel('primeira notificação (dias a partir de 25 de fevereiro de 2020)')
plt.ylabel('Voos nacionais (escala logarítmica)');

plt.tight_layout()
#plt.savefig('covid.png')
#lgnd = plt.legend(handles=handles, loc="lower left", scatterpoints=1)

#legend2 = ax.legend(handles, labels, loc="upper right", title="Sizes")
#lgnd.legendHandles[0]._sizes = [30]
#lgnd.legendHandles[1]._sizes = [30]
['cod_mun', 'UF', 'Município', 'pop2019', 'pib2017milreais',
       'export_fob_2019', 'import_fob_2019', 'pip_per_capita17',
       'hierarquia_urbana07', 'hierarquia', 'voos_dom', 'voos_int',
       'indice_proximidade', 'indice_intermediacao', 'cod_mun.1',
       'peso_integracao_interna', 'peso_integracao_geral', 'dia2502',
       'dia2902', 'dia0403', 'dia0503', 'dia0603', 'dia0703', 'dia0803',
       'dia0903', 'dia1003', 'dia1103', 'dia1203', 'dia1303', 'dia1403',
       'dia1503', 'dia1603', 'dia1703', 'dia1803', 'dia1903', 'dia2003',
       'dia2103', 'dia2203', 'dia2303', 'dia2403', 'dia2503', 'dia2603',
       'dia2703', 'dia2803', 'dia2903', 'dia3003', 'dia3103', 'dia0104',
       'dia0204', 'dia0304', 'dia0404', 'dia0504', 'data_primeiro_caso',
       'data_padrao', 'dias_contaminação_referencia']
sns.pairplot(df_fatores_geograficos_correlacao)
df_fatores_integracao = df_fatores_integracao.loc[:, ['UF','Município',
    'pop2019', 'pib2017milreais', 'export_fob_2019', 'import_fob_2019',
    'pip_per_capita17', 'hierarquia', 'voos_dom', 'voos_int',
    'indice_proximidade', 'indice_intermediacao', 'peso_integracao_geral'
]]
X = df_fatores_integracao.values[:,2:]
from sklearn.preprocessing import StandardScaler

sc = StandardScaler()
Xsc = sc.fit_transform(X)
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score, silhouette_samples

clst = KMeans(n_clusters=5)
y = clst.fit_predict(Xsc)
df_fatores_integracao['classe_de_integracao'] = y
df_fatores_integracao[df_fatores_integracao['classe_de_integracao'] == 0]
df_fatores_geograficos[]
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score, silhouette_samples
from sklearn.preprocessing import StandardScaler



clrs = ['lightblue', 'red', 'magenta', 'orange', 'green']
for nc in range(2, 6):
    cmap = colors.ListedColormap(clrs[0:nc])

    clst = KMeans(n_clusters=nc)
    y = clst.fit_predict(X)
    
    plt.figure()
    plt.subplot(121)
    plt.scatter(X[:,0], X[:,1], c=y, cmap=cmap)
    plt.scatter(clst.cluster_centers_[:,0], clst.cluster_centers_[:,1], c='black', marker='x', s=50)
    plt.title('{} clusters, silhueta: {}'.format(nc, silhouette_score(X, y)))
    
    plt.subplot(122)
    sil_v = silhouette_samples(X, y)
    xs = 1
    for j in range(0, clst.n_clusters):
        sil_vc = np.sort(sil_v[y == j])
        dom_x = range(xs, xs + len(sil_vc))
        plt.fill_between(dom_x, sil_vc, color=clrs[j])
        plt.scatter(dom_x, sil_vc, s=3, c='black')
        xs = xs + len(sil_vc)
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score, silhouette_samples


clrs = ['lightblue', 'red', 'magenta', 'orange', 'green']
for nc in range(2, 6):
    cmap = colors.ListedColormap(clrs[0:nc])

    clst = KMeans(n_clusters=nc)
    y = clst.fit_predict(X)
    
    plt.figure()
    plt.subplot(121)
    plt.scatter(X[:,0], X[:,1], c=y, cmap=cmap)
    plt.scatter(clst.cluster_centers_[:,0], clst.cluster_centers_[:,1], c='black', marker='x', s=50)
    plt.title('{} clusters, silhueta: {}'.format(nc, silhouette_score(X, y)))
    
    plt.subplot(122)
    sil_v = silhouette_samples(X, y)
    xs = 1
    for j in range(0, clst.n_clusters):
        sil_vc = np.sort(sil_v[y == j])
        dom_x = range(xs, xs + len(sil_vc))
        plt.fill_between(dom_x, sil_vc, color=clrs[j])
        plt.scatter(dom_x, sil_vc, s=3, c='black')
        xs = xs + len(sil_vc)
df_fatores_integracao = df_fatores_integracao.loc[:, ['UF','Município',
    'pop2019', 'pib2017milreais','hierarquia', 'voos_dom', 'voos_int',
    'peso_integracao_geral'
]]
X = df_fatores_integracao.values[:,2:]
from sklearn.preprocessing import StandardScaler

sc = StandardScaler()
Xsc = sc.fit_transform(X)
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score, silhouette_samples

clst = KMeans(n_clusters=5)
y = clst.fit_predict(Xsc)
df_fatores_integracao['classe_de_integracao'] = y
df_fatores_integracao[df_fatores_integracao['classe_de_integracao'] == 2]
# df_fatores_geograficos = pd.read_csv('fatores_para_k_means.csv', decimal=',', sep=';')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.14725485213924125, 'fraction_numerical': 0.07454605867521451, 'mean_word_length': 5.753431890179514, 'pattern_counts': {'":': 0, '<': 61, '<?xml version=': 0, '>': 85, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 22, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '15', 'dir': 'jupyter-structured-clean-dedup', 'id': '656689', 'license': 'MIT', 'n_tokens_mistral': 23793, 'n_tokens_neox': 20873, 'n_words': 3791, 'path': 'notebooks/.ipynb_checkpoints/7_refugo_analise_covid19_x_fatores_hierarquia_urbana_concentracao_integracao-checkpoint.ipynb', 'repo_name': 'augustogeog/covid', 'size': '51163'}