"""
Created on Fri Oct 21 19:17:11 2022
@author: Roberto
"""
import pandas as pd
import numpy as np
import re
import os
import swifter
import unidecode
from datetime import datetime
user = os.getlogin()
print(user)
os.chdir(f"C:/Users/{user}/Documents/GitHub/1ECO35_2022_2/Lab8")
data = pd.read_excel("../data/Centro_salud/Centro_salud_mental.xls")
data
data.columns = map(str.lower, data.columns)
"1.0 extraccción de texto"
data['inst1'] = data['institución_ruc'].apply(lambda x: re.sub('[0-9]','',x))
"[0-9]*: ninguno, uno o más digitos"
data['inst1'] = data['institución_ruc'].swifter.apply(lambda x: re.sub('[0-9]','',x))
data['inst1'] = data['institución_ruc'].swifter.apply(lambda x: re.sub('[0-9]','',x))
data['inst2'] = data['institución_ruc'].apply(lambda x: re.sub('\d','',x))
data['inst3'] = data['institución_ruc'].apply(lambda x: re.sub('[^a-zA-Z\s]','',x))
"2.0 extraccción de numeros"
data['ruc1'] = data['institución_ruc'].apply(lambda x: re.sub('[a-zA-Z]','',x))
data['ruc2'] = data['institución_ruc'].apply(lambda x: re.sub('[a-zA-Z\s]','',x))
data['ruc3'] = data['institución_ruc'].apply(lambda x: re.sub('\D','',x))
data['ruc4'] = data['institución_ruc'].apply(lambda x: re.sub('[^0-9]','',x))
data['fecha_apertura'] = data['fecha_apertura'].apply(lambda x: re.sub('(:00:00)|(!%&)|(00/00/00)','',x))
data['coordinates1'] = data['gps'].apply(lambda x: re.findall('-\d+.\d+,-\d+.\d+',x))
data['coordinates2'] = data['gps'].apply(lambda x: re.findall('-\d+.\d+,-\d+.\d+', str(x) ) )
data['coordinates3'] = data['gps'].apply(lambda x: re.findall('-\d{1,2}.\d{1,3},-\d{2}.\d{1,4}', str(x) ))
data['coordinates4'] = data['gps'].apply(lambda x: re.findall('-\d*.\d*,-\d*.\d*', str(x)) )
data['coordinates4']= data['coordinates4'].apply(lambda x: ''.join(x) )
data.info()
x = "AVENIDA LA PAZ CUADRA 3 LA PERLA CALLAO CALLAO distrito LA PERLA Region El CALLAO"
re.search('\.*[D/d]istrito\s([\w+\-\s]+)\s[R/r]egion\s([\w+\s]+)', x).group(1)
re.search('\.*[D/d]istrito\s([\w+\-\s]+)\s[R/r]egion\s([\w+\s]+)', x).group(2)
def dist_region(x):
output = re.search('\.*[D/d]istrito\s([\w+\-\s]*)\s[R/r]egion\s([\w+\s]*)',x)
return output.group(1), output.group(2)
data['distrito'] = data['dirección'].apply(lambda x: dist_region(x)[0])
data['region'] = data['dirección'].apply(lambda x: dist_region(x)[1])
def phone(x):
try:
match = re.search('\.*\s(\d+\-\d+)', str(x))
return match.group(1)
except:
pass
data['phone'] = data['telefono'].apply(lambda x: phone(x))
data['phone'] = data['telefono'].apply(phone)
def reso_info(x):
match = re.search('DS-([0-9]+)-([0-9]+)\s([A-Z]+)', x)
return match.group(1), match.group(2), match.group(3)
data['code_res'] = data['resolucion'].apply(lambda x: reso_info(x)[0])
data['year_res'] = data['resolucion'].apply(lambda x: reso_info(x)[1])
data['entidad_res'] = data['resolucion'].apply(lambda x: reso_info(x)[2])
data['telefono1'] = data['telefono'].apply(lambda x: re.search("\.*([\d+\-\d+]*)$", str(x)).group(1))
data['telefono2'] = data['telefono'].apply(lambda x: re.search("\.*([...\-\d+]*)$", str(x)).group(1))
correo = "[email protected]"
re.search("(\w+)\@\.*", correo).group(1)
data['Gob_regional_jur'] = np.where(data['institución_ruc'].str.contains('(^G)|(^R)', regex=True),1,0)
data['Minsa_jur'] = np.where(data['institución_ruc'].str.contains('^M', na = False),1,0)
data['apertura1'] = data['horario'].apply(lambda x: re.search("\d+\:\d+(?= am)",x).group())
data['apertura2'] = data['horario'].apply(lambda x: re.search("[\d+\:]+(?= am)",x).group())
data['apertura3'] = data['horario'].apply(lambda x: re.search("(?<=apertura )[\d+\:]+",x).group())
data['cierre1'] = data['horario'].apply(lambda x: re.search("(?<!apertura )\d+\:\d+",x).group())
data['pres_soles'] = data['presupuesto'].apply(lambda x: re.search("[\d*\,]+(?!\$)",x).group())
data['pres_soles2'] = data['presupuesto'].apply(lambda x: re.findall("\w+\B[\d+\,]+\B",x)[0])
data['presupuesto'] = data['presupuesto'].apply(lambda x: unidecode.unidecode(x))
data['presupuesto'] = data['presupuesto'].apply(unidecode.unidecode)
data['fecha_apertura_date'] = pd.to_datetime(data['fecha_apertura']
, dayfirst = True).dt.strftime('%d/%m/%Y')
junin = pd.read_excel("../data/Region_Junin.xlsx")
junin.loc[ junin['District'].str.contains('AC') ]
junin.loc[junin['Place'].str.contains('pacha')]
junin.loc[junin['Place'].str.contains('pacha', flags = re.I)]
junin.loc[junin['District'].str.contains('CIUDAD', flags = re.I)]
junin.loc[junin['District'].str.contains('^hu', flags = re.I, na = False, regex = True)]
junin.loc[junin['Place'].str.contains('ro$', flags = re.I, na = False, regex = True)]
junin.loc[junin['Place'].str.contains('ca$', flags = re.I, na = False, regex = True)]
newbase = junin.loc[junin['Place'].str.contains('^ac*', flags = re.I, na = False, regex = True)]
newbase = junin.loc[junin['Place'].str.contains('^ac+', flags = re.I, na = False, regex = True)]
newbase = junin.loc[junin['Place'].str.contains('^ac?', flags = re.I, na = False, regex = True)]