Path: blob/main/Trabajo_grupal/WG7/Grupo_6_py_.py
2714 views
#!/usr/bin/env python31# -*- coding: utf-8 -*-2"""3Created on Fri Sep 23 14:31:37 202245@author: lorenzochiroque6"""789import pandas as pd10import numpy as np11import re12import os13141516user = os.getlogin() # Username1718os.chdir(f"C:/Users/{user}/Documents/GitHub/1ECO35_2022_2/Lab8") # Set directorio1920data = pd.read_excel("../../../data/crime_data/data_administrativa.xlsx")2122#Donde:23### Nombre -> nombre completo del sentenciado24### born_date -> fecha de nacimiento25### AGE -> edad del sentenciado26### rank -> Rango del sentenciado en la banda criminal.272829####################################################################################################30### 1. Convertir el nombre de las variables a minúscula (COLUMNAS)31####################################################################################################32333435data = pd.read_excel("/Users/lorenzochiroque/Documents/GitHub/1ECO35_2022_2/data/crime_data/data_administrativa.xlsx")36data.columns = map(str.lower, data.columns)37383940####################################################################################################41### 2. Fíjese que el nombre de la persona tiene puntuaciones y número, retirar todo aquello que no permita identificar el nombre correcto.42####################################################################################################43444546data['nombre'] = data['nombre'].apply(lambda x: re.sub('[0-9]','',x))47484950####################################################################################################51### 3. Limpiar la fecha de nacimiento de aquellos elementos que la ensucien. Luego crear otra variable con el formato de fecha.52####################################################################################################535455data.born_date = data.born_date.str.replace ("[^0-9]\W+","")5657data['born_date'] = pd.to_datetime(data['born_date']).dt.date585960####################################################################################################61### 4. Limpiar la columna de edad, el cual tiene puntuaciones que no permiten identificar la edad correcta.62####################################################################################################63646566data['age1'] = data['age'].apply(lambda x: re.sub('\D','',str(x)))6768data['borndate2'] = data['born_date'].apply(lambda x: re.sub('(:00:00)|(!%&)|(00/00/00)','',x))69707172####################################################################################################73### 5. Crear dummies según el rango del sentenciado en la organización criminal7475##### dum1: toma el valor de 1 si el sentenciado fue líder de la banda criminal76##### dum2: toma el valor de 1 si el sentenciado fue cabecilla local77##### dum3: toma el valor de 1 si el sentenciado fue cabecilla regional78##### dum4: toma el valor de 1 si el sentenciado fue sicario79##### dum5: toma el valor de 1 si el sentenciado realizó extorsión80##### dum6: toma el valor de 1 si el sentenciado fue miembro regular81##### dum7: toma el valor de 1 si el sentenciado fue novato o principiante8283####################################################################################################8485data["dum1"] = np.where(data["rank"] == "lider de la banda criminal",1, 0)86data["dum2"] = np.where(data["rank"] == "cabecilla local",1, 0)87data["dum3"] = np.where(data["rank"] == "cabecilla regional",1, 0)88data["dum4"] = np.where(data["rank"] == "sicario",1, 0)89data["dum5"] = np.where(((data["rank"] == "extorsion") | (data["rank"] == "extorsionador")),1, 0)90data["dum6"] = np.where(data["rank"] == "miembro",1, 0)91data["dum7"] = np.where(((data["rank"] == "novato") | (data["rank"] == "noato") | (data["rank"] == "novto") | (data["rank"] == "principiante")),1, 0)92939495####################################################################################################96### 7. Extraer el usuario del correo electrónico.97####################################################################################################9899100101data['usuario_correo'] = data['correo_abogado'].apply(lambda x: re.sub('[^a-zA-Z\s]','',str(x)))102103104105####################################################################################################106### 8. Crear una columna que contenga solo la información del número de dni (por ejemplo: 01-75222677)107####################################################################################################108109data['dni_limpio'] = data['dni'].apply(lambda x: re.sub('[a-zA-Z]','',x))110111####################################################################################################112### 9. A partir de la columna observaciones, crear las siguiente variables:113######### crimen: debe contener información del delito cometido114######### n_hijos: cantidad de hijos del criminal115######### edad_inicio : edad de inicio en actividades criminales116####################################################################################################117118119### -> falta #####120121122123124