Path: blob/main/Trabajo_grupal/WG7/Grupo_8_py.py
2714 views
# -*- coding: utf-8 -*-1"""2Created on Sat Nov 5 19:07:51 202234@author: Grupo 85"""67import pandas as pd8import numpy as np9import re # for regular expressions (REGEX)10import os # for directorio11import swifter # for parallel procesing12import unidecode # to drop tildes13from datetime import datetime1415user = os.getlogin() # Username16print(user)1718# Set directorio1920os.chdir(f"C:/Users/{user}/Documents/GitHub/1ECO35_2022_2/data/crime_data") # Set directorio2122data_administrativa = pd.read_excel("data_administrativa.xlsx") # Subir base de datos2324#Pregunta 1:2526data_administrativa.columns = map(str.lower, data_administrativa.columns)2728#Pregunta 2:2930data_administrativa['nombre'] = data_administrativa['nombre'].apply(lambda x: re.sub('\d','',x))31data_administrativa['nombre'] = data_administrativa['nombre'].apply(lambda x: re.sub('[^a-zA-Z\s]','',x))3233#Pregunta 3:3435data_administrativa['born_date'] = data_administrativa['born_date'].apply(lambda x: re.sub('(00:00)|(!)|("#%)','',x))3637data_administrativa['born_date_month_year'] = pd.to_datetime(data_administrativa['born_date']38, dayfirst = True).dt.strftime('%d/%m/%Y')39#Pregunta 4:4041data_administrativa['age'] = data_administrativa['age'].apply(lambda x: re.sub('\D','',str(x)))4243#Pregunta 5:4445#Dummy 1:46data_administrativa['lider_banda_crim'] = np.where(data_administrativa['rank'].str.contains('lider de la banda criminal', regex=True),1,0)4748#Dummy 2:49data_administrativa['cabecilla_local'] = np.where(data_administrativa['rank'].str.contains('cabecilla local', regex=True),1,0)5051#Dummy 3:52data_administrativa['cabecilla_regional'] = np.where(data_administrativa['rank'].str.contains('cabecilla regional', regex=True),1,0)5354#Dummy 4:55data_administrativa['sicario'] = np.where(data_administrativa['rank'].str.contains('sicario', regex=True),1,0)5657#Dummy 5:58data_administrativa['extorsion'] = np.where(data_administrativa['rank'].str.contains('extorsion', regex=True),1,0)5960#Dummy 6:61data_administrativa['miembro_regular'] = np.where(data_administrativa['rank'].str.contains('miembro', regex=True),1,0)6263#Dummy 7:64data_administrativa['novato_o_principiante'] = np.where(data_administrativa['rank'].str.contains('(^novato)|(^principiante)', regex=True),1,0)6566#Pregunta 7:6768# extraer usuario de correo6970correo = "correo_abogado"7172data_administrativa['correo'] = data_administrativa['correo_abogado'].apply(lambda x: re.search("(\w+)\@\.*", str(x)).group(1) )7374#Pregunta 8:7576#Crear una columna que contenga solo la información del número de dni7778numdni = "dni"79data_administrativa['numdni'] = data_administrativa['dni'].apply(lambda x: re.search("\.*([\d+\-\d+]*)$", str(x)).group() )8081#Pregunta 9:8283#crear variable crimen ( debe contener información del delito cometido)84x = "tiene 4 hijos, sentenciado por sicariato"8586re.search('\.*[P/p]or\s([\w+\s]+)', x).group(1)8788def crimen_obs(x):8990output = re.search('\.*[P/p]or\s([\w+\s]+)',x)9192return output.group(1)9394data_administrativa['crimen'] = data_administrativa['observaciones'].apply(lambda x: crimen_obs(x)[0])9596data_administrativa['crimen'] = data_administrativa['observaciones'].apply(lambda x: re.search("\.*[P/p]or\s([\w+\s]+)",x).group())9798#n_hijos: cantidad de hijos del criminal99data_administrativa['n_hijos'] = data_administrativa['observaciones'].apply(lambda x: re.search("\d*[Tt]iene\s([0-9]*)", str(x)).group(1) )100101#edad_inicio : edad de inicio en actividades criminales102data_administrativa['edad_inicio1'] = data_administrativa['observaciones'].apply(lambda x: re.search("\.*([\w*\s]*)\s[A/a]ños", str(x)).group(1) )103data_administrativa['edad_inicio'] = data_administrativa['edad_inicio1'].apply(lambda x: re.search("[0-9]+", str(x)).group(1) )104105106107