<jupyter_start><jupyter_text>SELECT id_municipio, peso_amostral, v0636 AS onde_estudava, v6364 AS cod_mun_estudava, V0660 AS onde_Trabalhava,V6604 AS cod_mun_trabalho, V0661 AS retorno_diario, V0662 AS tempo_deslocamentoFROM basedosdados.br_ibge_censo_demografico.microdados_pessoa_2010<jupyter_code>df_arranjos = pd.read_csv('data/pop/arranjos populacionais/tab01.csv', sep=';', thousands='.', decimal=',')
lista_municipios = tuple(df_arranjos['Código do município'].values)
df_arranjos
df_arranjos['Destino'] = df_arranjos['Código do município']
df_arranjos.rename(columns={'Código do município':'Cod_Mun_Origem', 'municipio':'ArranjoOrigem', 'CodArranjo':'Cod_Arranjo_Origem'}, inplace=True)
df_arranjos['Cod_Arranjo_Destino'] = df_arranjos.Destino.replace({key:value for key, value in zip(df_arranjos['Cod_Mun_Origem'].values, df_arranjos['Cod_Arranjo_Origem'].values)})
df_arranjos['Arranjo_Destino']  = df_arranjos.Destino.replace({key:value for key, value in zip(df_arranjos['Cod_Mun_Origem'].values, df_arranjos['ArranjoOrigem'].values)})
df_arranjos_tratado = df_arranjos[['Arranjo', 'ArranjoOrigem', 'Cod_Arranjo_Origem', 'Cod_Mun_Origem', 'Destino', 'Cod_Arranjo_Destino', 'Arranjo_Destino']]
df_arranjos_tratado_filtrado = df_arranjos_tratado[df_arranjos_tratado['Cod_Arranjo_Origem'] == 4106902]
df_arranjos_tratado_filtrado_pivot = df_arranjos_tratado_filtrado.pivot_table(index=['Cod_Mun_Origem'], columns=['Destino'], values=['Cod_Arranjo_Destino'])
df_arranjos_tratado_filtrado_pivot.droplevel(0, axis=1).columns
list_origin = []
list_destination = []

for origin, destination in product(df_arranjos_tratado_filtrado.Cod_Mun_Origem, df_arranjos_tratado_filtrado.Cod_Mun_Origem):
    list_origin.append(origin)
    list_destination.append(destination)
df_cwb = pd.DataFrame(data={'cod_mun_origin':list_origin, 'cod_mun_destination':list_destination, 'ArranjoPopulacional':'Curitiba (PR)', 'CodArranjoPopulacional':4106902})
df = pd.read_feather('data/pop/microdados_amostra/microdata_2010_census.ftd')
df_cwb['cod_mun_origin'].unique()
filter_origin = df.id_municipio.isin(df_cwb['cod_mun_origin'].unique())
filter_destination_education = df.cod_mun_estudava.isin(df_cwb['cod_mun_origin'].unique())
filter_destination_work = df.cod_mun_trabalho.isin(df_cwb['cod_mun_origin'].unique())
#df[(filter_origin)].to_clipboard()#.groupby(by=['id_municipio', 'cod_mun_estudava'], group_keys=False).sum()[['peso_amostral']].reset_index()
#df_commuting_for_studies = df[(filter_origin) & (filter_destination_education)].info()
#df_commuting_for_studies.to_clipboard()
#df[(filter_origin) & (filter_destination_work)].info()
#df_commuting_for_work.to_clipboard()
#df_commuting_for_studies_and_work.to_clipboard()
df_commuting_for_studies_and_work.to_clipboard()
df_commuting_for_studies = df[(filter_origin) & (filter_destination_education)].groupby(by=['id_municipio', 'cod_mun_estudava'], group_keys=False).sum()[['peso_amostral']].reset_index()
df_commuting_for_work = df[(filter_origin) & (filter_destination_work)].groupby(by=['id_municipio', 'cod_mun_trabalho'], group_keys=False).sum()[['peso_amostral']].reset_index()<jupyter_output><empty_output><jupyter_text>PROVAVELMENTE TEM UM PROBLEMA NO FILTRO ABAIXO. tALVEZ EU TENHA QUE FAZER PARA UMA FRAÇÃO MENOR, PARA PODER VER O QUE OCORRE. A DIFERENÇA É POUCA, MAS OCORRE QUE APARECEM CASOS DE HAVER PESSOAS QUE TRABALHAM E ESTUDAM FORA, SEM QUE HAJA PESSOAS QUE TRABALHAM FORA, OU SEM QUE HAJA PESSOAS QUE ESTUDAM FORA. UMA BOA FORMA DE VERIFICAR ISSO É TIRAR O GROUPBY.SUM() E VER OS VALORES EFETIVAMENTE LISTADOS PARA VÁRIOS MUNICÍPIOS, PARA IDENTIFICAR O QUE ESTÁ DANDO ERRADO.<jupyter_code>df_commuting_for_studies_and_work = df[(filter_origin) & (filter_destination_education) & (filter_destination_work)].groupby(by=['id_municipio', 'cod_mun_estudava', 'cod_mun_trabalho'], group_keys=False).sum()[['peso_amostral']].reset_index()
df_commuting_for_studies[df_commuting_for_studies['id_municipio'] == 4125506]
df_commuting_for_work[df_commuting_for_work['id_municipio'] == 4125506]
df_commuting_for_studies_and_work[df_commuting_for_studies_and_work['id_municipio'] == 4125506]
df_commuting_for_studies_and_work.rename(columns={'cod_mun_trabalho':'cod_mun_trabalho_estudo'}, inplace=True)
df_commuting_for_studies_and_work
df_commuting_for_studies_and_work[df_commuting_for_studies_and_work['id_municipio'] == 4126256]
df_commuting_for_work_or_studies = pd.merge(left=df_commuting_for_studies, right=df_commuting_for_work
         , left_on=['id_municipio', 'cod_mun_estudava']
         , right_on=['id_municipio', 'cod_mun_trabalho']
         , how='outer'
        )
df_commuting_for_studies_and_work = pd.merge(left=df_commuting_for_work_or_studies, right=df_commuting_for_studies_and_work
         , left_on=['id_municipio', 'cod_mun_estudava', 'cod_mun_trabalho']
         , right_on=['id_municipio', 'cod_mun_estudava', 'cod_mun_trabalho']
         , how='outer'
        )
df_commuting_for_studies_and_work.to_clipboard()
df_commuting_for_studies_and_work[df_commuting_for_studies_and_work['id_municipio'] == 4125506]
df_commuting_for_work_or_studies[df_commuting_for_work_or_studies['id_municipio'] == 4119152]
df_final = pd.DataFrame(columns=)
df_final.append(df_commuting_for_work_or_studies)
df_commuting_for_work
df_microdados_pr[df_microdados_pr.id_municipio.isin(df_cwb['cod_mun_origin'].unique())]
list_destination
{origin:destination for origin, destination in product(df_arranjos_tratado_filtrado.Cod_Mun_Origem, df_arranjos_tratado_filtrado.Cod_Mun_Origem)}
df_arranjos['Destino'] = df_arranjos['Código do município']
df_arranjos['Destino'] = df_arranjos['Código do município']
df_arranjos_tratado_filtrado_pivot.droplevel(0, axis=1).melt(id_vars=df_arranjos_tratado_filtrado_pivot.droplevel(0, axis=1).columns, )
df_arranjos_tratado.groupby(['Cod_Mun_Origem', 'Destino']).count()
df_arranjos_pivot =  df_arranjos_tratado.pivot(index=['Cod_Mun_Origem'], columns=['Destino'], values='Arranjo')
columns = list(df_arranjos_pivot.columns)
df_arranjos_pivot.reset_index().melt(columns.append('Cod_Mun_Origem'))
df = bd.read_sql(f'SELECT id_municipio, peso_amostral, V0628 AS frequentava_escola, v0636 AS onde_estudava, v6364 AS cod_mun_estudava, V0660 AS onde_Trabalhava, V6604 AS cod_mun_trabalho, V0661 AS retorno_diario, V0662 AS tempo_deslocamento FROM basedosdados.br_ibge_censo_demografico.microdados_pessoa_2010 WHERE id_municipio in {lista_municipios}', billing_project_id='urbanresearch-305315')
df.to_feather('data/pop/microdados_amostra/microdata_2010_census.ftd')
df.columns
df[df.frequentava_escola.isin((1,2))][df.id_municipio == 4126256][df.cod_mun_estudava == 4115200].peso_amostral.sum()
df[df.frequentava_escola.isin((1,2))][df.id_municipio == 4126256][df.cod_mun_estudava == 4115200].id_municipio.count()
df_arranjos.pivot(index=['Código do município'], columns=['Destino'], values='Arranjo')
df_arranjos['Destino'] = df_arranjos['Código do município']
teste_adamantina = df_arranjos[['Código do município', 'Destino', 'Arranjo']][df_arranjos.CodArranjo == 3500105].pivot(index=['Código do município'], columns=['Destino'], values='Arranjo')
teste_adamantina
['Código do Município'].extend(teste_adamantina.columns[:])
listacod = ['Código do Município']
list(teste_adamantina.columns)[:]
listacod.append(list(teste_adamantina.columns)[:])
listacod
x
teste_adamantina.reset_index().melt(teste_adamantina.columns[:])
df_arranjos[df_arranjos.CodArranjo == 3500105].groupby(['Código do município', 'Código do município']).count()
df_arranjos.groupby()<jupyter_output><empty_output><jupyter_text>Tentativa com abordagem programáticatratar com teorias de conjuntos e permutação passou a ter muitos problemas. Por essa razão,<jupyter_code>df_arranjos = pd.read_csv('data/pop/arranjos populacionais/tab01.csv', sep=';', thousands='.', decimal=',')
lista_municipios = tuple(df_arranjos['Código do município'].values)
df_arranjos
df_arranjos['Destino'] = df_arranjos['Código do município']
df_arranjos.rename(columns={'Código do município':'Cod_Mun_Origem', 'municipio':'ArranjoOrigem', 'CodArranjo':'Cod_Arranjo_Origem'}, inplace=True)
df_arranjos['Cod_Arranjo_Destino'] = df_arranjos.Destino.replace({key:value for key, value in zip(df_arranjos['Cod_Mun_Origem'].values, df_arranjos['Cod_Arranjo_Origem'].values)})
df_arranjos['Arranjo_Destino']  = df_arranjos.Destino.replace({key:value for key, value in zip(df_arranjos['Cod_Mun_Origem'].values, df_arranjos['ArranjoOrigem'].values)})
df_arranjos_tratado = df_arranjos[['Arranjo', 'ArranjoOrigem', 'Cod_Arranjo_Origem', 'Cod_Mun_Origem', 'Destino', 'Cod_Arranjo_Destino', 'Arranjo_Destino']]
df_arranjos_tratado_filtrado = df_arranjos_tratado[df_arranjos_tratado['Cod_Arranjo_Origem'] == 4106902]
df_arranjos_tratado_filtrado.Cod_Mun_Origem.unique()
df = pd.read_feather('data/pop/microdados_amostra/microdata_2010_census.ftd')
filter_origin = df.id_municipio.isin(df_arranjos_tratado_filtrado['Cod_Mun_Origem'].unique())
filter_not_na = ~((df_microdata_arranjo.cod_mun_estudava.isna()) & (df_microdata_arranjo.cod_mun_trabalho.isna()))
#df['cod_mun_estudava'] != df['cod_mun_trabalho']
filter_destination_education = df.cod_mun_estudava.isin(df_arranjos_tratado_filtrado['Cod_Mun_Origem'].unique())
filter_destination_work = df.cod_mun_trabalho.isin(df_arranjos_tratado_filtrado['Cod_Mun_Origem'].unique())
df_microdata_arranjo = df[filter_origin & filter_not_na]
df_microdata_arranjo = df_microdata_arranjo[~((df_microdata_arranjo.cod_mun_estudava.isna()) & (df_microdata_arranjo.cod_mun_trabalho.isna()))]
df_microdata_arranjo_movimento_heterogeneo = df_microdata_arranjo[(~df_microdata_arranjo['cod_mun_estudava'].isna()) & (~df_microdata_arranjo['cod_mun_trabalho'].isna())]
df_microdata_arranjo_movimento_heterogeneo = df_microdata_arranjo_movimento_heterogeneo[df_microdata_arranjo_movimento_heterogeneo.cod_mun_estudava != df_microdata_arranjo_movimento_heterogeneo.cod_mun_trabalho]
df_microdata_arranjo_movimento_heterogeneo.peso_amostral.sum()
df_arranjos['Arranjo'] == arranjo<jupyter_output><empty_output><jupyter_text>Verificação do volume de casos de movimentos bipartidos<jupyter_code>df = pd.read_feather('data/pop/microdados_amostra/microdata_2010_census.ftd')
list_movimentos_bipartidos = []
list_dicts = []
list_movimentos_bipartidos = []
for arranjo in df_arranjos['Arranjo'].unique():
#for arranjo in ['Maringá/PR', 'Curitiba/PR']:
    df_arranjos_filtrado = df_arranjos[df_arranjos['Arranjo'] == arranjo]
    
    filter_origin = df.id_municipio.isin(df_arranjos_filtrado['Cod_Mun_Origem'].unique())
    df_microdata_arranjo = df[filter_origin]
    
    filter_not_na = ~((df_microdata_arranjo.cod_mun_estudava.isna()) & (df_microdata_arranjo.cod_mun_trabalho.isna()))
    df_microdata_arranjo[filter_not_na]

    filter_not_na_complete = (~df_microdata_arranjo['cod_mun_estudava'].isna()) & (~df_microdata_arranjo['cod_mun_trabalho'].isna())
    df_microdata_arranjo_movimento_heterogeneo = df_microdata_arranjo[filter_not_na_complete]
    filter_heterogeneous_movement = df_microdata_arranjo_movimento_heterogeneo.cod_mun_estudava != df_microdata_arranjo_movimento_heterogeneo.cod_mun_trabalho
    df_microdata_arranjo_movimento_heterogeneo = df_microdata_arranjo_movimento_heterogeneo[filter_heterogeneous_movement]
    list_movimentos_bipartidos.append(round(df_microdata_arranjo_movimento_heterogeneo.peso_amostral.sum()))

    df_movimentos_homogeneos = df_microdata_arranjo[~df_microdata_arranjo.index.isin(df_microdata_arranjo_movimento_heterogeneo.index)]

    df_movimentos_homogeneos = df_movimentos_homogeneos[(~df_movimentos_homogeneos['cod_mun_estudava'].isna()) | (~df_movimentos_homogeneos['cod_mun_trabalho'].isna())]

    df_movimentos_homogeneos['tipoDeslocamento'] = ''

    if (df_movimentos_homogeneos.loc[:,'cod_mun_estudava'] == df_movimentos_homogeneos.loc[:,'cod_mun_trabalho']).sum() > 0:
        df_movimentos_homogeneos[df_movimentos_homogeneos.loc[:,'cod_mun_estudava'] == df_movimentos_homogeneos.loc[:,'cod_mun_trabalho']]['tipoDeslocamento'] = 'Trabalho e Estudo'

    df_movimentos_homogeneos.loc[df_movimentos_homogeneos.loc[:,'cod_mun_estudava'] == df_movimentos_homogeneos.loc[:,'cod_mun_trabalho']].at[:,'tipoDeslocamento'] = 'Trabalho e Estudo'

    index = df_movimentos_homogeneos.loc[df_movimentos_homogeneos.loc[:,'cod_mun_estudava'] == df_movimentos_homogeneos.loc[:,'cod_mun_trabalho']].index

    df_movimentos_homogeneos.loc[index, ['tipoDeslocamento']] = 'Trabalho e Estudo'

    index = df_movimentos_homogeneos[df_movimentos_homogeneos['tipoDeslocamento'] != 'Trabalho e Estudo'][~(df_movimentos_homogeneos['cod_mun_estudava'].isna())].index

    df_movimentos_homogeneos.loc[index, ['tipoDeslocamento']] = 'Estudo'

    index = df_movimentos_homogeneos[df_movimentos_homogeneos['tipoDeslocamento'] != 'Trabalho e Estudo'][~(df_movimentos_homogeneos['cod_mun_trabalho'].isna())].index

    df_movimentos_homogeneos.loc[index, ['tipoDeslocamento']] = 'Trabalho'

    df_movimentos_homogeneos['Arranjo'] = arranjo

    destinations = [int(row[1]['cod_mun_estudava']) if pd.notnull(row[1]['cod_mun_estudava']) else int(row[1]['cod_mun_trabalho']) for row in df_movimentos_homogeneos.iterrows()]

    df_movimentos_homogeneos['Destino'] = destinations
    
    df_grouped = df_movimentos_homogeneos.groupby(['Arranjo', 'tipoDeslocamento','id_municipio', 'Destino']).sum()['peso_amostral'].reset_index()

    df_grouped = df_grouped.pivot(index=['Arranjo', 'id_municipio', 'Destino'], columns=['tipoDeslocamento'])

    df_grouped = df_grouped.reset_index().fillna(0)
    
    if df_grouped.columns[-1][-1] != 'Trabalho e Estudo':

        df_grouped.columns = ['Arranjo', 'Origem', 'Destino', 'Estudo', 'Trabalho']

        df_grouped['Trabalho e Estudo'] = 0

    else:
        df_grouped.columns = ['Arranjo', 'Origem', 'Destino', 'Estudo', 'Trabalho', 'Trabalho e Estudo']

    df_grouped = df_grouped[df_grouped.Destino.isin(df_arranjos_filtrado['Cod_Mun_Origem'].unique())]
    df_grouped[['Estudo', 'Trabalho', 'Trabalho e Estudo']] = df_grouped[['Estudo', 'Trabalho', 'Trabalho e Estudo']].astype(np.int64)

    df_grouped['Movimento Pendular'] = df_grouped['Estudo'] + df_grouped['Trabalho'] - df_grouped['Trabalho e Estudo']

    list_dicts.append(df_grouped)

df_movimento_pendular = pd.concat(list_dicts)

df_coordinates = pd.read_csv('https://raw.githubusercontent.com/kelvins/Municipios-Brasileiros/main/csv/municipios.csv')

dict_lat = {row[1]['codigo_ibge']:row[1]['latitude'] for row in df_coordinates.iterrows()}
dict_long = {row[1]['codigo_ibge']:row[1]['longitude'] for row in df_coordinates.iterrows()}

df_movimento_pendular['Latitude Origem'] = df_movimento_pendular.Origem.map(dict_lat)
df_movimento_pendular['Longitude Origem'] = df_movimento_pendular.Origem.map(dict_long)
df_movimento_pendular['Latitude Destino'] = df_movimento_pendular.Destino.map(dict_lat)
df_movimento_pendular['Longitude Destino'] = df_movimento_pendular.Destino.map(dict_long)

df_municipality_name = pd.read_csv('data/territorio/municipios_brasileiros.csv', sep=';')

dict_name = {row[1]['cod']:row[1]['municipio'] for row in df_municipality_name.iterrows()}

df_movimento_pendular['Município Origem'] = df_movimento_pendular.Origem.map(dict_name)
df_movimento_pendular['Município Destino'] = df_movimento_pendular.Destino.map(dict_name)

df_movimento_pendular = df_movimento_pendular[[
    'Arranjo', 'Município Origem', 'Origem','Latitude Origem', 'Longitude Origem'
    , 'Município Destino', 'Destino', 'Latitude Destino', 'Longitude Destino'
    , 'Estudo', 'Trabalho','Trabalho e Estudo', 'Movimento Pendular']]

df_movimento_pendular.rename(columns={'Origem':'CodOrigem','Destino':'CodDestino'}, inplace=True)
df_movimento_pendular.to_csv('data/pop/commuting/commuting.csv', index=False)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12822132390096008, 'fraction_numerical': 0.013706417382516422, 'mean_word_length': 10.22111977321049, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 18, 'https://': 1, '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': '94926', 'license': 'MIT', 'n_tokens_mistral': 6785, 'n_tokens_neox': 6511, 'n_words': 672, 'path': 'census_microdata.ipynb', 'repo_name': 'augustogeog/popapp', 'size': '15832'}