Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG7/Grupo_8_py.py
2714 views
1
# -*- coding: utf-8 -*-
2
"""
3
Created on Sat Nov 5 19:07:51 2022
4
5
@author: Grupo 8
6
"""
7
8
import pandas as pd
9
import numpy as np
10
import re # for regular expressions (REGEX)
11
import os # for directorio
12
import swifter # for parallel procesing
13
import unidecode # to drop tildes
14
from datetime import datetime
15
16
user = os.getlogin() # Username
17
print(user)
18
19
# Set directorio
20
21
os.chdir(f"C:/Users/{user}/Documents/GitHub/1ECO35_2022_2/data/crime_data") # Set directorio
22
23
data_administrativa = pd.read_excel("data_administrativa.xlsx") # Subir base de datos
24
25
#Pregunta 1:
26
27
data_administrativa.columns = map(str.lower, data_administrativa.columns)
28
29
#Pregunta 2:
30
31
data_administrativa['nombre'] = data_administrativa['nombre'].apply(lambda x: re.sub('\d','',x))
32
data_administrativa['nombre'] = data_administrativa['nombre'].apply(lambda x: re.sub('[^a-zA-Z\s]','',x))
33
34
#Pregunta 3:
35
36
data_administrativa['born_date'] = data_administrativa['born_date'].apply(lambda x: re.sub('(00:00)|(!)|("#%)','',x))
37
38
data_administrativa['born_date_month_year'] = pd.to_datetime(data_administrativa['born_date']
39
, dayfirst = True).dt.strftime('%d/%m/%Y')
40
#Pregunta 4:
41
42
data_administrativa['age'] = data_administrativa['age'].apply(lambda x: re.sub('\D','',str(x)))
43
44
#Pregunta 5:
45
46
#Dummy 1:
47
data_administrativa['lider_banda_crim'] = np.where(data_administrativa['rank'].str.contains('lider de la banda criminal', regex=True),1,0)
48
49
#Dummy 2:
50
data_administrativa['cabecilla_local'] = np.where(data_administrativa['rank'].str.contains('cabecilla local', regex=True),1,0)
51
52
#Dummy 3:
53
data_administrativa['cabecilla_regional'] = np.where(data_administrativa['rank'].str.contains('cabecilla regional', regex=True),1,0)
54
55
#Dummy 4:
56
data_administrativa['sicario'] = np.where(data_administrativa['rank'].str.contains('sicario', regex=True),1,0)
57
58
#Dummy 5:
59
data_administrativa['extorsion'] = np.where(data_administrativa['rank'].str.contains('extorsion', regex=True),1,0)
60
61
#Dummy 6:
62
data_administrativa['miembro_regular'] = np.where(data_administrativa['rank'].str.contains('miembro', regex=True),1,0)
63
64
#Dummy 7:
65
data_administrativa['novato_o_principiante'] = np.where(data_administrativa['rank'].str.contains('(^novato)|(^principiante)', regex=True),1,0)
66
67
#Pregunta 7:
68
69
# extraer usuario de correo
70
71
correo = "correo_abogado"
72
73
data_administrativa['correo'] = data_administrativa['correo_abogado'].apply(lambda x: re.search("(\w+)\@\.*", str(x)).group(1) )
74
75
#Pregunta 8:
76
77
#Crear una columna que contenga solo la información del número de dni
78
79
numdni = "dni"
80
data_administrativa['numdni'] = data_administrativa['dni'].apply(lambda x: re.search("\.*([\d+\-\d+]*)$", str(x)).group() )
81
82
#Pregunta 9:
83
84
#crear variable crimen ( debe contener información del delito cometido)
85
x = "tiene 4 hijos, sentenciado por sicariato"
86
87
re.search('\.*[P/p]or\s([\w+\s]+)', x).group(1)
88
89
def crimen_obs(x):
90
91
output = re.search('\.*[P/p]or\s([\w+\s]+)',x)
92
93
return output.group(1)
94
95
data_administrativa['crimen'] = data_administrativa['observaciones'].apply(lambda x: crimen_obs(x)[0])
96
97
data_administrativa['crimen'] = data_administrativa['observaciones'].apply(lambda x: re.search("\.*[P/p]or\s([\w+\s]+)",x).group())
98
99
#n_hijos: cantidad de hijos del criminal
100
data_administrativa['n_hijos'] = data_administrativa['observaciones'].apply(lambda x: re.search("\d*[Tt]iene\s([0-9]*)", str(x)).group(1) )
101
102
#edad_inicio : edad de inicio en actividades criminales
103
data_administrativa['edad_inicio1'] = data_administrativa['observaciones'].apply(lambda x: re.search("\.*([\w*\s]*)\s[A/a]ños", str(x)).group(1) )
104
data_administrativa['edad_inicio'] = data_administrativa['edad_inicio1'].apply(lambda x: re.search("[0-9]+", str(x)).group(1) )
105
106
107