Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG7/Grupo_6_py_.py
2714 views
1
#!/usr/bin/env python3
2
# -*- coding: utf-8 -*-
3
"""
4
Created on Fri Sep 23 14:31:37 2022
5
6
@author: lorenzochiroque
7
"""
8
9
10
import pandas as pd
11
import numpy as np
12
import re
13
import os
14
15
16
17
user = os.getlogin() # Username
18
19
os.chdir(f"C:/Users/{user}/Documents/GitHub/1ECO35_2022_2/Lab8") # Set directorio
20
21
data = pd.read_excel("../../../data/crime_data/data_administrativa.xlsx")
22
23
#Donde:
24
### Nombre -> nombre completo del sentenciado
25
### born_date -> fecha de nacimiento
26
### AGE -> edad del sentenciado
27
### rank -> Rango del sentenciado en la banda criminal.
28
29
30
####################################################################################################
31
### 1. Convertir el nombre de las variables a minúscula (COLUMNAS)
32
####################################################################################################
33
34
35
36
data = pd.read_excel("/Users/lorenzochiroque/Documents/GitHub/1ECO35_2022_2/data/crime_data/data_administrativa.xlsx")
37
data.columns = map(str.lower, data.columns)
38
39
40
41
####################################################################################################
42
### 2. Fíjese que el nombre de la persona tiene puntuaciones y número, retirar todo aquello que no permita identificar el nombre correcto.
43
####################################################################################################
44
45
46
47
data['nombre'] = data['nombre'].apply(lambda x: re.sub('[0-9]','',x))
48
49
50
51
####################################################################################################
52
### 3. Limpiar la fecha de nacimiento de aquellos elementos que la ensucien. Luego crear otra variable con el formato de fecha.
53
####################################################################################################
54
55
56
data.born_date = data.born_date.str.replace ("[^0-9]\W+","")
57
58
data['born_date'] = pd.to_datetime(data['born_date']).dt.date
59
60
61
####################################################################################################
62
### 4. Limpiar la columna de edad, el cual tiene puntuaciones que no permiten identificar la edad correcta.
63
####################################################################################################
64
65
66
67
data['age1'] = data['age'].apply(lambda x: re.sub('\D','',str(x)))
68
69
data['borndate2'] = data['born_date'].apply(lambda x: re.sub('(:00:00)|(!%&)|(00/00/00)','',x))
70
71
72
73
####################################################################################################
74
### 5. Crear dummies según el rango del sentenciado en la organización criminal
75
76
##### dum1: toma el valor de 1 si el sentenciado fue líder de la banda criminal
77
##### dum2: toma el valor de 1 si el sentenciado fue cabecilla local
78
##### dum3: toma el valor de 1 si el sentenciado fue cabecilla regional
79
##### dum4: toma el valor de 1 si el sentenciado fue sicario
80
##### dum5: toma el valor de 1 si el sentenciado realizó extorsión
81
##### dum6: toma el valor de 1 si el sentenciado fue miembro regular
82
##### dum7: toma el valor de 1 si el sentenciado fue novato o principiante
83
84
####################################################################################################
85
86
data["dum1"] = np.where(data["rank"] == "lider de la banda criminal",1, 0)
87
data["dum2"] = np.where(data["rank"] == "cabecilla local",1, 0)
88
data["dum3"] = np.where(data["rank"] == "cabecilla regional",1, 0)
89
data["dum4"] = np.where(data["rank"] == "sicario",1, 0)
90
data["dum5"] = np.where(((data["rank"] == "extorsion") | (data["rank"] == "extorsionador")),1, 0)
91
data["dum6"] = np.where(data["rank"] == "miembro",1, 0)
92
data["dum7"] = np.where(((data["rank"] == "novato") | (data["rank"] == "noato") | (data["rank"] == "novto") | (data["rank"] == "principiante")),1, 0)
93
94
95
96
####################################################################################################
97
### 7. Extraer el usuario del correo electrónico.
98
####################################################################################################
99
100
101
102
data['usuario_correo'] = data['correo_abogado'].apply(lambda x: re.sub('[^a-zA-Z\s]','',str(x)))
103
104
105
106
####################################################################################################
107
### 8. Crear una columna que contenga solo la información del número de dni (por ejemplo: 01-75222677)
108
####################################################################################################
109
110
data['dni_limpio'] = data['dni'].apply(lambda x: re.sub('[a-zA-Z]','',x))
111
112
####################################################################################################
113
### 9. A partir de la columna observaciones, crear las siguiente variables:
114
######### crimen: debe contener información del delito cometido
115
######### n_hijos: cantidad de hijos del criminal
116
######### edad_inicio : edad de inicio en actividades criminales
117
####################################################################################################
118
119
120
### -> falta #####
121
122
123
124