-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.py
More file actions
161 lines (129 loc) · 4.57 KB
/
script.py
File metadata and controls
161 lines (129 loc) · 4.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
import pandas as pd
import sqlite3
import re
import os
def corregir_archivo_clientes():
file_path = './media/CLIENTES.csv'
# Leer las líneas del archivo original
with open(file_path, 'r', encoding='utf-8') as file:
lines = file.readlines()
# Corregir las líneas
corrected_lines = []
for line in lines:
line = re.sub(r'MEDIO ALTO', 'MEDIO_ALTO', line)
line = re.sub(r'MEDIO BAJO', 'MEDIO_BAJO', line)
corrected_lines.append(line)
# Guardar las líneas corregidas en un archivo temporal
temp_file_path = 'CLIENTES_corrected.csv'
with open(temp_file_path, 'w', encoding='utf-8') as file:
file.writelines(corrected_lines)
# Leer el archivo corregido con pandas usando espacio como delimitador
df = pd.read_csv(temp_file_path, delimiter=' ', encoding='utf-8')
# Verificar la estructura del DataFrame
print(df.head())
# Ajustar los nombres de las columnas
df.columns = [
'CODIGO',
'TIPO_CLIENTE',
'FECHA_ACTUALIZACION',
'PEP',
'RIESGO',
'PAIS'
]
return df
def cargar_datos():
# Cargar los datos de clientes
df_clientes = corregir_archivo_clientes()
return df_clientes
def cargar_archivo_productos():
file_path = './media/PRODUCTO.csv'
# Leer el archivo CSV usando comas como delimitador
df = pd.read_csv(file_path, delimiter=',', encoding='utf-8')
# Verificar la estructura del DataFrame
print(df.head()) # Verificar la estructura del DataFrame
# Ajustar los nombres de las columnas según el DataFrame actual
df.columns = [
'CODIGO',
'CUENTA',
'TIPO_CUENTA',
'ESTADO_CUENTA',
'PERFIL_WIRES_IN_MONTO',
'PERFIL_WIRES_IN_FRECUENCIA',
'PERFIL_WIRES_OUT_MONTO',
'PERFIL_WIRES_OUT_FRECUENCIA'
]
return df
def cargar_archivo_transacciones():
file_path = './media/TRANSACCIONES.csv'
# Leer el archivo CSV usando tabuladores como delimitador
df = pd.read_csv(file_path, delimiter='\t', encoding='utf-8')
# Eliminar el carácter ' en el campo CUENTA
df['CUENTA'] = df['CUENTA'].str.replace("'", "")
df['TIPO_TRANSACCION'] = df['TIPO_TRANSACCION'].str.replace("'", "")
df['PAIS_ORIGEN_TRANSACCION'] = df['PAIS_ORIGEN_TRANSACCION'].str.replace("'", "")
df['PAIS_DESTINO_TRANSACCION'] = df['PAIS_DESTINO_TRANSACCION'].str.replace("'", "")
# Verificar la estructura del DataFrame
print(df.head())
# Ajustar los nombres de las columnas según el DataFrame actual
df.columns = [
'CUENTA',
'FECHA_TRANSACCION',
'TIPO_TRANSACCION',
'MONTO',
'PAIS_ORIGEN_TRANSACCION',
'PAIS_DESTINO_TRANSACCION'
]
return df
def main():
# Cargar los datos de clientes
df_clientes = cargar_datos()
# Cargar los datos de productos
df_productos = cargar_archivo_productos()
# Cargar los datos de transacciones
df_transacciones = cargar_archivo_transacciones()
# Nombre de la base de datos
db_name = 'bancolombia_panama.db'
# Conectar a la base de datos SQLite (se creará si no existe)
conn = sqlite3.connect(db_name)
cursor = conn.cursor()
# Crear las tablas 'clientes', 'productos' y 'transacciones' si no existen
cursor.execute('''
CREATE TABLE IF NOT EXISTS clientes (
CODIGO TEXT,
TIPO_CLIENTE TEXT,
FECHA_ACTUALIZACION TEXT,
PEP TEXT,
RIESGO TEXT,
PAIS TEXT
)
''')
cursor.execute('''
CREATE TABLE IF NOT EXISTS productos (
CODIGO TEXT,
CUENTA TEXT,
TIPO_CUENTA TEXT,
ESTADO_CUENTA TEXT,
PERFIL_WIRES_IN_MONTO REAL,
PERFIL_WIRES_IN_FRECUENCIA INTEGER,
PERFIL_WIRES_OUT_MONTO REAL,
PERFIL_WIRES_OUT_FRECUENCIA INTEGER
)
''')
cursor.execute('''
CREATE TABLE IF NOT EXISTS transacciones (
CUENTA TEXT,
FECHA_TRANSACCION TEXT,
TIPO_TRANSACCION TEXT,
MONTO REAL,
PAIS_ORIGEN_TRANSACCION TEXT,
PAIS_DESTINO_TRANSACCION TEXT
)
''')
# Cargar los datos en las tablas correspondientes
df_clientes.to_sql('clientes', conn, if_exists='replace', index=False)
df_productos.to_sql('productos', conn, if_exists='replace', index=False)
df_transacciones.to_sql('transacciones', conn, if_exists='replace', index=False)
# Cerrar la conexión a la base de datos
conn.close()
if __name__ == '__main__':
main()