Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG7/Grupo_3_py
2714 views
# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""



### Importamos las librerías que vamos a utilizar

import pandas as pd
import re

### Es preciso mencionar que el trabajo de python se realizó por dos personas, razón por la cual, se abre la base de datos desde dos distintas rutas de carpeta. 

base = pd.read_excel(r"C:/Users/oscar/Downloads/data_administrativa.xlsx", sheet_name= "Hoja1")

base = pd.read_excel(r"/Users/diegoyeliseo/Desktop/Base de datos Tarea 7/data_administrativa.xlsx", sheet_name= "Hoja1")



### 1. Covertir el nombre de las variables a minuscula"

base.rename(columns={"Nombre":"nombre","AGE":"age"}, inplace= True)


### 2. Identificar correctamente los nombres

base.nombre = base.nombre.str.replace ("3","")
base.nombre = base.nombre.str.replace ("2","")
base.nombre = base.nombre.str.replace ("[^a-zA-Z]\W+","")


### 3. Identificar correctamente la fecha

base.born_date = base.born_date.str.replace ("[^0-9]\W+","")
base['born_date'] = pd.to_datetime(base['born_date']).dt.date



### 4. Identificar correctamente la edad

base['age'] = base['age'].apply(lambda x: re.sub('\D','',str(x)))


## 5. dummies según el rango del sentenciado en la organización criminal

base["rank"] = base["rank"].str.replace("noato","novato")
base["rank"] = base["rank"].str.replace("novto","novato")
base["rank"] = base["rank"].str.replace("extorsionador","extorsion")
base["rank"] = base["rank"].str.replace("principiante","novato")

##dum1: toma el valor de 1 si el sentenciado fue líder de la banda criminal
base["dum1"] = pd.np.where(base["rank"].str.contains("lider de la banda criminal"),"1","0")  

##dum2: toma el valor de 1 si el sentenciado fue cabecilla local
base["dum2"] = pd.np.where(base["rank"].str.contains("cabecilla local"),"1","0")

##dum3: toma el valor de 1 si el sentenciado fue cabecilla regional
base["dum3"] = pd.np.where(base["rank"].str.contains("cabecilla regional"),"1","0")

##dum4: toma el valor de 1 si el sentenciado fue sicario
base["dum4"] = pd.np.where(base["rank"].str.contains("sicario"),"1","0")

##dum5: toma el valor de 1 si el sentenciado realizó extorsión
base["dum5"] = pd.np.where(base["rank"].str.contains("extorsion"),"1","0")

##dum6: toma el valor de 1 si el sentenciado fue miembro regular
base["dum6"] = pd.np.where(base["rank"].str.contains("miembro"),"1","0")

##dum7: toma el valor de 1 si el sentenciado fue novato o principiante
base["dum7"] = pd.np.where(base["rank"].str.contains("novato"),"1","0")



### 7. Extraer el usuario del correo electrónico.

base['correo_abogado'] = base['correo_abogado'].apply(lambda x: re.sub('@.+','',x))

#Si  queremos ver el cambio realizado, utilizamos el siguiente código:

base['correo_abogado']                                                   
                                                     

### 8. Crear una columna que contenga solo la información del número de dni (por ejemplo: 01-75222677)


### Con este código le estamos diciendo a python que nos cree una nueva columna llamada número de dni

base['número de dni'] = ''

### Con este código le estamos diciendo a python que borre el texto "dni es" y se quede con la información que resta que es justamente el número de dni 

base['número de dni']= base['dni'].apply(lambda x: re.sub('dni es','',x))


### Si queremos ver el cambio realizado, pongamos lo siguiente:
    
base



### 9. A partir de la columna observaciones, crear las siguiente variables:
 
#crimen: debe contener información del delito cometido
# n_hijos: cantidad de hijos del criminal
# edad_inicio : edad de inicio en actividades criminales

Def crimen(x):
Try:
match = re.search('\.*\s(\d+\-\d+)', str(x))
return match.group(1)

except:
        
        pass
    

base['crimen'] = base ['observaciones'].apply(lambda x: crimen(x))

base['crimen'] = base['observaciones'].apply(crimen)

base['n_hijos'] = base ['observaciones'].apply(lambda x: n_hijos(x))

base['n_hijos'] = base['observaciones'].apply(n_hijos)

base['edad_inicio'] = base ['observaciones'].apply(lambda x: edad_inicio(x))

base['edad_inicio'] = base['observaciones'].apply(edad_inicio)