<jupyter_start><jupyter_text>Rapidez de contagio en  municipios carreterosUn ''_municipio carretero_'' se define de la siguiente forma: - Tiene al menos 10\% de sus establecimientos económicos enfrente de una carretera. De los 2,286 municipios hay solamente 158 municipios carreteros. En este notebook investigamos la velocidad de contagio de casos _importados_ de Covid19, medido por el número de días entre el primer contagio y el contagio del 0.01% de la población del municipio.<jupyter_code>import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns<jupyter_output><empty_output><jupyter_text>DatosSe usan dos tablas `casos_ajustado_poblacion.txt`, que contiene fechas semanales y bi-semanales con datos de casos de contagio de Covid. También usamos `muns_highways.tsv` que contiene la lista de los municipios carreteros.<jupyter_code>pob = pd.read_csv('../data/casos_ajustado_poblacion.txt', delimiter='\t')
def get_only_numbers(x):
    try:
        r = int(x)
        return r
    except ValueError:
        return -1
def get_codes(x):
    good_codes = ['72', '461']
    x = str(x)
    for code in good_codes:
        if x.startswith(code):
            return True
        else:
            return False
pob = pob[['CVEGEO',
          'estado',
          'nombre',
          'poblacion_total']]
muns = pd.read_csv('../data/muns_highways.tsv', sep='\t')

muns  = pd.merge(muns, pob, how='left')
cases = pd.read_csv('../data/casos_ajustado_poblacion.txt', sep='\t')
dates = sorted(cases.columns[11:])
cas_order = cases[dates]
'-'.join('13-14-15'.split('-')[1:])
cas_order.columns = ['-'.join(x.split('-')[1:]) for x in cas_order.columns]
fig, ax = plt.subplots()
g = sns.heatmap(cas_order, vmin=0, vmax=0.00001, ax=ax)
ax.set_title('Casos por municipio corregidos a población')
ax.set_ylabel('Municipio')
ax.set_xlabel('Fecha (Mes-día)')
df_melt = pd.melt(cases, id_vars='CVEGEO', value_vars=dates)
df_pivot = pd.pivot(df_melt, columns='CVEGEO', index='variable', values='value')
def get_first_case(x):
    return x.first_valid_index()
def get_last_cumsum(x):
    return x.last_valid_index()
def get_date_percentage(x):
    try:
        date = x[x.gt(.0001)].index[0]
        return date
    except IndexError:
        return np.nan
first_cases = df_pivot.apply(get_first_case, axis=0).rename('first_case').reset_index()

df_cum = df_pivot.cumsum()

df_cumsum = df_cum.ffill(axis=0).iloc[-1,:].rename('agg_cases').reset_index()

first_cases = pd.merge(first_cases, df_cumsum, how='left')
muns = muns[['CVEGEO']]

muns['is_carretero'] = True
first_cases = pd.merge(first_cases, muns, how='left')

first_cases['is_carretero'] = first_cases.is_carretero.fillna(False)
first_cases = pd.merge(first_cases, pob, how='left')

first_cases['first_case'] = pd.to_datetime(first_cases['first_case'])

first_cases['day_first_case'] = first_cases['first_case'].dt.dayofyear

df_per = df_pivot.apply(get_date_percentage, axis=0).rename('date_01').reset_index()

first_cases = pd.merge(first_cases, df_per, how='left')

first_cases['date_01'] = pd.to_datetime(first_cases.date_01)

first_cases['days_to_01'] = (first_cases['date_01'] - first_cases['first_case']).dt.days
cases_carr = pd.merge(cases, first_cases)
fig, ax = plt.subplots()
g = sns.heatmap(cases_carr[cases_carr.is_carretero==True][dates], vmin=0, vmax=0.0001, ax=ax,
               cmap=plt.cm.Reds)
ax.set_title('Casos por municipio carretero corregidos a población')
ax.set_ylabel('Municipio')
ax.set_xlabel('Fecha (Mes-día)')
fig, ax = plt.subplots()
g = sns.heatmap(cases_carr[cases_carr.is_carretero==False][dates], vmin=0, vmax=0.0001, ax=ax,
               cmap=plt.cm.Reds)
ax.set_title('Casos por municipio NO carretero corregidos a población')
ax.set_ylabel('Municipio')
ax.set_xlabel('Fecha (Mes-día)')<jupyter_output><empty_output><jupyter_text>Tests<jupyter_code>np.random.seed(42)
sample_mean = []
min_carr = 851
max_carr = 184239
not_carr = first_cases[first_cases['is_carretero'] == False]
for i in range(1000):
    idx = np.random.choice(not_carr.shape[0], muns.shape[0])
    chunk = not_carr.iloc[idx]
    sample_mean.append(chunk['days_to_01'].mean())
carr = first_cases[first_cases.is_carretero==True].days_to_01.mean()
g = sns.displot(sample_mean)
g.axes[0,0].set_title('Municipios no carreteros y su velocidad de contagio.'
                      '\nSe agrega valor de municipios carreteros para comparación.')
g.axes[0,0].set_ylabel('Ocurrencias')
g.axes[0,0].set_xlabel('Días entre primer caso y contagio al 0.01% de la población')
g.axes[0,0].axvline(carr, linestyle='--', color='red', label='Carreteros')
g.axes[0,0].legend();
first_cases.to_csv('../data/municipios.tsv', index=False, sep='\t')<jupyter_output><empty_output><jupyter_text>Casos<jupyter_code>cases = pd.read_csv('../data/factores_covid_municipio.tsv', sep='\t')
cases['day_10_deaths'] = pd.to_datetime(cases['day_10_deaths'])
cases['day_first_case'] = pd.to_datetime(cases['day_first_case'])
cases['day_50_cases'] = pd.to_datetime(cases['day_50_cases'])
cases['day_first_death'] = pd.to_datetime(cases['day_first_death'])
cases['diff_50_cases'] = (cases['day_50_cases'] - cases['day_first_case']).dt.days
cases['diff_10_deaths'] = (cases['day_10_deaths'] - cases['day_first_case']).dt.days
cases = cases.rename(columns={'municipality_id': 'CVEGEO'})
cases = cases[['CVEGEO', 'diff_50_cases', 'diff_10_deaths']]
first_cases = pd.merge(first_cases, cases)
first_cases.groupby('is_carretero').mean()
first_cases.head()
muns['is_carretero'] = True
muns = muns.rename(columns={'CVEGEO': 'municipality_id'})
muns = muns[['municipality_id', 'is_carretero']]
cases = pd.merge(cases, muns, how='left')
muns
cases<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.15231092436974789, 'fraction_numerical': 0.021358543417366947, 'mean_word_length': 5.612268518518518, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, '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': '655168', 'license': 'MIT', 'n_tokens_mistral': 2327, 'n_tokens_neox': 2252, 'n_words': 397, 'path': 'jupyter/Lista_de_municipios.ipynb', 'repo_name': 'ddiannae/datamexico-covid', 'size': '5712'}