<jupyter_start><jupyter_text>I Section<jupyter_code>sec_1 = df[df['section']=='I.']
sec_1.reset_index(inplace=True, drop=True)
sec_1_1 = sec_1.iloc[::,:2:].T
sec_1_1.drop([0,1], axis=1, inplace=True)
sec_1_1.columns = sec_1_1.loc[1]
sec_1_1.drop(index=1, inplace=True)
sec_1_1.reset_index(inplace=True, drop=True)
sec_1_2 =sec_1.iloc[2::,5:7:].T
sec_1_2.columns = sec_1_2.loc[6]
sec_1_2.drop(index=6, inplace=True)
sec_1_2.reset_index(inplace=True, drop=True)
sec_1_final = pd.concat([sec_1_1,sec_1_2], axis=1)
sec_1_final.head()<jupyter_output><empty_output><jupyter_text>II Section<jupyter_code>sec_2 = df[df['section']=='II.'].copy(deep=True)
sec_2.reset_index(inplace=True, drop=True)
sec_2.shape
sec_2.columns = sec_2.loc[2][:6].tolist() + sec_2.loc[3][6:].tolist()
sec_2 = sec_2.iloc[5::,:-2:]
col2=[u'Enliste e indique la relaci\xf3n entre el declarante con el c\xf3nyuge, concubina o concubinario y todo dependiente econ\xf3mico',
 u'Nacionalidad',
 u'\xbfHa desempe\xf1ado un cargo de gobierno \nen los \xfaltimos 5 a\xf1os?',
 u'Dependencia o entidad p\xfablica',
 u'Cargo, puesto o funci\xf3n',
 u'Periodo']
sec_2 = sec_2[col2]
sec_2 = check_empty(sec_2)
sec_2.reset_index(inplace=True, drop=True)
sec_2.head()<jupyter_output><empty_output><jupyter_text>III Section<jupyter_code>sec_3 = df[df['section']=='III.'].copy(deep=True)
sec_3.reset_index(inplace=True, drop=True)
sec_3.shape
subsets = ['1.','1.1']
def sub_sections(x):
    if (type(x)!=float)&(type(x)!=int):
        for i in subsets:
            #print x, i
            if x.split(' ')[0]==i:
                return i
    return np.nan
sec_3['section'] = sec_3[1].apply(lambda x: sub_sections(x))
x='drop'
x_l=[]
for i in sec_3['section'].tolist():
    if type(i)==str:
        x=i
    x_l.append(x)
sec_3['section']=x_l
sec_3 = sec_3[sec_3['section']!='drop']
sec_3_1 = sec_3[sec_3['section']=='1.']
sec_3_1.reset_index(inplace=True, drop=True)
sec_3_1 = sec_3_1.iloc[2::,::8].T.copy(deep=True)
sec_3_1.columns = sec_3_1.loc[1]
sec_3_1.drop(1, axis=0, inplace=True)
col_3_1=[u'Remuneraci\xf3n neta anual del declarante por cargos p\xfablicos:',
# u'Nota 1: Incluye sueldos, honorarios, compensaciones, bonos y otras prestaciones.',
# u'Otros ingresos del declarante:',
 u'\u2013 Por actividades industrial, empresarial o comercial',
# u'Nota 2: Se refiere a ingresos por actividades industriales, empresariales o comerciales en M\xe9xico y en el extranjero.',
 u'\u2013 Por actividad financiera',
# u'Nota 3: Se refiere a ingresos por rendimiento de valores o contratos bancarios, plusval\xedas de participaci\xf3n accionaria e ingresos por pr\xe9stamos.           ',
 u'\u2013 Por servicios profesionales',
# u'Nota 4: Los ingresos por servicios profesionales pueden incluir la participaci\xf3n en consejos, consultor\xedas o asesor\xedas de forma permanente u ocasional, en M\xe9xico y en el extranjero.',
 u'\u2013 Por otras actividades',
# u'Nota 5: Se refiere a ingresos por arrendamientos, regal\xedas, sorteos, concursos, donaciones, entre otros.',
 u'Ingreso neto anual total del declarante:']
sec_3_1 = sec_3_1[col_3_1]
sec_3_1 = check_empty(sec_3_1)
sec_3_1.reset_index(inplace=True, drop=True)
sec_3_1.head()
sec_3_1_1 = sec_3[sec_3['section']=='1.1']
sec_3_1_1.reset_index(inplace=True, drop=True)
sec_3_1_1 = sec_3_1_1.iloc[::,:-3:8].T.copy(deep=True)
sec_3_1_1.columns = sec_3_1_1.loc[1]
col3_1_1=[#u'1.1 Ingreso anual neto del del C\xd3NYUGE, CONCUBINA O CONCUBINARIO Y/O DEPENDIENTES ECON\xd3MICOS entre el 1\xb0 de enero y el 31 de diciembre del a\xf1o inmediato anterior',
 #u'El ingreso neto anual del c\xf3nyuge, concubina o concubinario y dependientes econ\xf3micos se refiere a los ingresos netos \u2013despu\xe9s de impuestos\u2013 que tuvieron en el \xfaltimo a\xf1o fiscal concluido por actividades en cargos p\xfablicos, actividad industrial o comercial, actividad financiera, servicios profesionales \u2013incluyendo participaciones en consejos, consultor\xedas o asesor\xedas\u2013 as\xed como cualquier otro ingreso por actividades diversas. No es necesario desagregar por tipo de ingreso. Las cifras expresadas en esta secci\xf3n se declara en moneda nacional (MXN).',
 u'Ingreso anual neto del c\xf3nyuge, concubina o concubinario:',
 u'Ingreso anual neto de otros dependientes econ\xf3micos:',
 u'Ingreso neto anual total del c\xf3nyuge, concubina o concubinario y/o dependientes econ\xf3micos:']
sec_3_1_1 = sec_3_1_1[col3_1_1]
sec_3_1_1.drop(1, axis=0, inplace=True)
sec_3_1_1 = check_empty(sec_3_1_1)
sec_3_1_1.reset_index(inplace=True, drop=True)
sec_3_1_1.head()<jupyter_output><empty_output><jupyter_text>IV Section<jupyter_code>sec_4 = df[df['section']=='IV.'].copy(deep=True)
sec_4.reset_index(inplace=True, drop=True)
sec_4.shape
subsets = ['1.', '1.1','2.', '2.1','3.', '3.1','4.','5.']
sec_4['section'] = sec_4[1].apply(lambda x: sub_sections(x))
print(sec_4['section'])
x='drop'
x_l=[]
for i in sec_4['section'].tolist():
    if type(i)==str:
        x=i
    x_l.append(x)
sec_4['section']=x_l
sec_4 = sec_4[sec_4['section']!='drop']
sec_4.reset_index(inplace=True, drop=True)
sec_4_1 = sec_4[sec_4['section']=='1.']
sec_4_1.reset_index(inplace=True, drop=True)
sec_4_1.columns = sec_4_1.loc[2].tolist()[:1] + sec_4_1.loc[3].tolist()[1:3] + sec_4_1.loc[2].tolist()[3:]
sec_4_1 = sec_4_1.iloc[4:-1:,:-2:]
sec_4_1 = check_empty(sec_4_1)
sec_4_1.reset_index(inplace=True, drop=True)
sec_4_1.head()
sec_4_1_1 = sec_4[sec_4['section']=='1.1']
sec_4_1_1.reset_index(inplace=True, drop=True)
sec_4_1_1.columns = sec_4_1_1.loc[2]
sec_4_1_1 = sec_4_1_1.iloc[4:-1:,:-5:]

col4_1_1=[u'Tipo de bien declarado',
 u'Pa\xeds donde se encuentra el bien inmueble',
 u'Entidad federativa y municipio o delegaci\xf3n donde se encuentra el bien inmueble',
 u'Forma de operaci\xf3n en la que se adquiri\xf3 el bien inmueble',
 u'A\xf1o en que se realiz\xf3 la adquisici\xf3n del bien inmueble',
 u'Titular del bien inmueble declarado']
sec_4_1_1 = sec_4_1_1[col4_1_1]
sec_4_1_1 = check_empty(sec_4_1_1)
sec_4_1_1.reset_index(inplace=True, drop=True)
sec_4_1_1.head()
sec_4_2 = sec_4[sec_4['section']=='2.']
sec_4_2.reset_index(inplace=True, drop=True)
sec_4_2.columns = sec_4_2.loc[2]
sec_4_2 = sec_4_2.iloc[4:-1:,:-2:]
col4_2=[u'Tipo de veh\xedculo',
 u'Marca',
 u'Modelo',
 u'Pa\xeds donde est\xe1 registrado el veh\xedculo',
 u'Forma de operaci\xf3n en la que se adquiri\xf3 el veh\xedculo',
 u'A\xf1o en que se realiz\xf3 la adquisici\xf3n del veh\xedculo',
 u'Valor del veh\xedculo',
 u'Moneda',
 u'Titular del veh\xedculo']
sec_4_2 = sec_4_2[col4_2]
sec_4_2 = check_empty(sec_4_2)
sec_4_2.reset_index(inplace=True, drop=True)
sec_4_2.head()
sec_4_2_1 = sec_4[sec_4['section']=='2.1']
sec_4_2_1.reset_index(inplace=True, drop=True)
sec_4_2_1.columns = sec_4_2_1.loc[2]
sec_4_2_1 = sec_4_2_1.iloc[3::,:-6:]
col4_2_1=[u'Tipo de veh\xedculo',
 u'Pa\xeds donde est\xe1 registrado el veh\xedculo',
 u'Forma de operaci\xf3n en la que se adquiri\xf3 el veh\xedculo',
 u'A\xf1o en que se realiz\xf3 la adquisici\xf3n del veh\xedculo',
 u'Titular del veh\xedculo']
sec_4_2_1 = sec_4_2_1[col4_2_1]
sec_4_2_1 = check_empty(sec_4_2_1)
sec_4_2_1.reset_index(inplace=True, drop=True)
sec_4_2_1.head()
sec_4_3 = sec_4[sec_4['section']=='3.']
sec_4_3.reset_index(inplace=True, drop=True)
sec_4_3.columns = sec_4_3.loc[2]
sec_4_3 = sec_4_3.iloc[4:-1:,:-4:]
col4_3=[u'Tipo de bien mueble',
 u'Forma de operaci\xf3n en la que se adquiri\xf3 el bien mueble',
 u'A\xf1o en que se realiz\xf3 la adquisici\xf3n del bien mueble',
 u'Valor estimado del bien mueble',
 u'Moneda',
 u'Titular del bien mueble']
sec_4_3 = sec_4_3[col4_3]
sec_4_3 = check_empty(sec_4_3)
sec_4_3.reset_index(inplace=True, drop=True)
sec_4_3.head()
sec_4_3_1 = sec_4[sec_4['section']=='3.1']
sec_4_3_1.reset_index(inplace=True, drop=True)
sec_4_3_1.columns = sec_4_3_1.loc[2]
sec_4_3_1 = sec_4_3_1.iloc[4:-1:,:-7:]
col4_3_1=[u'Tipo de bien mueble',
 u'Forma de operaci\xf3n en la que se adquiri\xf3 el bien mueble',
 u'A\xf1o en que se realiz\xf3 la adquisici\xf3n del bien mueble',
 u'Titular del bien mueble']
sec_4_3_1 = sec_4_3_1[col4_3_1]
sec_4_3_1 = check_empty(sec_4_3_1)
sec_4_3_1.reset_index(inplace=True, drop=True)
sec_4_3_1.head()
sec_4_4 = sec_4[sec_4['section']=='4.']
sec_4_4.reset_index(inplace=True, drop=True)
sec_4_4.columns = sec_4_4.loc[2].tolist()[:5] + sec_4_4.loc[3].tolist()[5:8] + sec_4_4.loc[2].tolist()[8:]
sec_4_4 = sec_4_4.iloc[4:-1:,:-2:]
col4_4=[u'Tipo de inversi\xf3n',
 u'Pa\xeds donde est\xe1 constituida la entidad donde se encuentra la inversi\xf3n',
 u'Nombre o raz\xf3n social de la entidad',
 u'Menor o igual a $100,000.00',
 u'Entre $100,000.01 y $500,000.00',
 u'Mayor o igual a $500,000.01',
 u'Moneda de la inversi\xf3n',
 u'Titularidad de la inversi\xf3n']
sec_4_4 = sec_4_4[col4_4]
sec_4_4 = check_empty(sec_4_4)
sec_4_4.reset_index(inplace=True, drop=True)
sec_4_4.head()<jupyter_output><empty_output><jupyter_text>V Section<jupyter_code>sec_5 = df[df['section']=='V.']
sec_5.reset_index(inplace=True, drop=True)
sec_5.columns = sec_5.loc[2]
sec_5 = sec_5.loc[3::,::].copy(deep=True)
sec_5.reset_index(inplace=True, drop=True)
sec_5 = sec_5.iloc[:-2:,:-6:]
def all_5_nan(row):
    row = row[1:]
    if len(row.unique())==1:
        return 'drop'
    else:
        return 'keep'
sec_5['tag'] = sec_5.apply(lambda row: all_5_nan(row), axis=1)
sec_5 = sec_5[sec_5['tag'] =='keep'].copy(deep=True)
sec_5.drop('tag', axis=1,inplace=True)
col4_5=[u'No. de nota',
 u'Secci\xf3n a la que hace referencia',
 u'Subsecci\xf3n a la que hace referencia',
 u'Descripci\xf3n de la nota aclaratoria']
sec_5 = sec_5[col4_5]
sec_5 = check_empty(sec_5)
sec_5.reset_index(inplace=True, drop=True)
sec_5.head()
table_list = {'sec_1':sec_1_final, 
'sec_2':sec_2, #'sec_2_1': sec_2_1_1,'sec_2_2':sec_2_2, 'sec_2_2_1':sec_2_2_1,'sec_2_3':sec_2_3,'sec_2_3_1':sec_2_3_1,'sec_2_4':sec_2_4,'sec_2_5':sec_2_5, 
'sec_3_1':sec_3_1, 'sec_3_1_1':sec_3_1_1,# 'sec_3_3':sec_3_3, 
'sec_4_1':sec_4_1, 'sec_4_1_1':sec_4_1_1, 'sec_4_2':sec_4_2, 'sec_4_2_1':sec_4_2_1, 'sec_4_3':sec_4_3, 'sec_4_3_1':sec_4_3_1,  'sec_4_4':sec_4_4, #'sec_4_5':sec_4_5,
'sec_5':sec_5}
for key in table_list.keys():
    print(key)
    table_list[key].to_csv('Output/Patrimonio/'+key+'pat.csv', index=0,encoding='utf-8' )
the_json = {sec_1_final['Nombre:'].values[0] + '_' + str(df[10][0]).split(' ')[0]:
 {'sec_1':sec_1_final.to_json(),
  'sec_2':sec_2.to_json(),
  'sec_3':{
    'sec_3_1':sec_3_1.to_json(), 'sec_3_1_1':sec_3_1_1.to_json(),
  },
  'sec_4':{
      'sec_4_1':sec_4_1.to_json(), 'sec_4_1_1':sec_4_1_1.to_json(), 'sec_4_2':sec_4_2.to_json(), 
      'sec_4_2_1':sec_4_2_1.to_json(), 'sec_4_3':sec_4_3.to_json(), 'sec_4_3_1':sec_4_3_1.to_json(),  'sec_4_4':sec_4_4.to_json()
  },
  'sec_5':sec_5.to_json(),
 }  
}
with open('Output/patrimonio_'+sec_1_final['Nombre:'].values[0].replace(' ','') + '_' + str(df[10][0]).split(' ')[0] + '.json', 'w') as fp:
    json.dump(the_json, fp)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1599306632606514, 'fraction_numerical': 0.07544932031748929, 'mean_word_length': 6.188196721311475, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 21, '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': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '460734', 'license': 'MIT', 'n_tokens_mistral': 5294, 'n_tokens_neox': 5190, 'n_words': 894, 'path': 'Declaracion_patrimonio.ipynb', 'repo_name': 'ricalanis/3de3', 'size': '10961'}