Texto original
PAGO TARJETA UBER EATS 4582 MX
El concepto contiene más información que la palabra que realmente nos interesa.
Partial Matching para grandes volúmenes de datos
Aprende a clasificar automáticamente conceptos de texto desordenados utilizando Python directamente dentro de Excel. Mediante Partial Matching podemos comparar cada registro contra un catálogo de términos y asignarle una categoría.
El problema
Cuando trabajamos con miles de registros, es común encontrar conceptos que contienen códigos, referencias, números y texto adicional.
El objetivo es reconocer una palabra o expresión dentro de cada concepto y utilizarla para asignar automáticamente una categoría.
Texto original
PAGO TARJETA UBER EATS 4582 MX
El concepto contiene más información que la palabra que realmente nos interesa.
Resultado esperado
Comida
Python identifica UBER EATS dentro del texto y devuelve la categoría correspondiente.
Concepto clave
En lugar de exigir que dos textos sean exactamente iguales, buscamos si una palabra o expresión aparece dentro de un texto más grande.
"UBER EATS" in "PAGO UBER EATS 4582"
El concepto completo no tiene que ser igual a UBER EATS. Basta con que el término aparezca dentro del texto.
Cómo funciona
Python obtiene directamente los datos almacenados en las tablas de Excel mediante xl().
Ordenamos el catálogo para evaluar primero los términos más específicos.
Definimos una función que revisará cada concepto y buscará coincidencias parciales.
apply() ejecuta nuestra función sobre cada concepto de la base de datos.
Paso 1
Python en Excel incluye la función xl(), que permite tomar información directamente desde rangos y tablas del libro.
df = xl("tblBanco[#Todo]", headers=True)
catalogo = xl("tblCategorias[#Todo]", headers=True)tblBancoContiene los conceptos que queremos clasificar.
tblCategoriasFunciona como catálogo de términos y categorías.
Al trabajar directamente con tablas de Excel, podemos mantener nuestros datos y nuestro catálogo dentro del mismo libro y procesarlos con Python.
Paso 2
Este paso es fundamental cuando nuestro catálogo contiene términos que pueden formar parte de expresiones más largas.
catalogo["Longitud"] = catalogo["Palabra"].astype(str).str.len()
catalogo = catalogo.sort_values(
by="Longitud",
ascending=False
)UBER EATSEs un término más específico y debería evaluarse primero.
Categoría
Comida
UBEREs más general y puede evaluarse después.
Categoría
Transporte
Si buscamos primero UBER, un concepto como UBER EATS podría clasificarse como Transporte antes de que Python tenga oportunidad de comprobar la coincidencia más específica.
Paso 3
Con def podemos encapsular la lógica que queremos ejecutar para cada concepto.
def clasificar(texto):
texto = str(texto).lower()
for _, fila in catalogo.iterrows():
palabra = str(fila["Palabra"]).lower()
if palabra in texto:
return fila["Categoria"]
return "Otros"defCrea una función reutilizable llamada clasificar.
forRecorre uno por uno los términos almacenados en el catálogo.
inComprueba si cada término aparece dentro del concepto.
Si encuentra una coincidencia, devuelve la categoría asociada. Si ningún término coincide, podemos devolver una categoría genérica como "Otros".
Paso 4
Hasta este momento tenemos una función capaz de clasificar un solo concepto. apply() permite ejecutar esa lógica sobre toda la columna.
df["Categoria"] = df["Concepto"].apply(clasificar)
dfLa misma lógica se ejecuta automáticamente sobre cada fila. Esa es la ventaja principal frente a revisar y clasificar los conceptos manualmente.
Resultado
| Concepto original | Coincidencia | Categoría |
|---|---|---|
| PAGO UBER EATS 4582 | UBER EATS | Comida |
| VIAJE UBER 8391 | UBER | Transporte |
| COMPRA HOME DEPOT SUC 21 | HOME DEPOT | Ferretería |
| NETFLIX.COM MEXICO | NETFLIX | Entretenimiento |
Los ejemplos ilustran la lógica de Partial Matching utilizada en el tutorial.
Python utilizado
Lee rangos y tablas del libro de Excel.
Ordena el catálogo para priorizar los términos que deseemos.
Nos permite crear nuestra propia función de clasificación.
Comprueba si un texto aparece dentro de otro.
Ejecuta nuestra función sobre todos los registros de una columna.
Aplicaciones
La misma técnica puede adaptarse a numerosos escenarios donde necesitamos interpretar o clasificar grandes volúmenes de texto.
Movimientos bancarios
Inventarios y descripciones de productos
Pedidos y conceptos de venta
Tickets de soporte
Incidencias operativas
Comentarios de clientes
Qué debes tener en cuenta
Python puede automatizar la clasificación, pero el resultado depende de los términos que definamos y del orden en que los evaluemos.
Términos demasiado generalesUna palabra muy amplia puede producir coincidencias que realmente pertenecen a otra categoría.
Prioridad de coincidenciasCuando varias palabras pueden coincidir con el mismo concepto, debemos establecer cuál tiene prioridad.
Variaciones del textoAbreviaturas, errores de escritura o nombres completamente distintos pueden necesitar términos adicionales en el catálogo.
Catálogo manteniblePodemos agregar nuevos términos al catálogo conforme aparezcan conceptos que todavía no clasificamos correctamente.
Material del tutorial
Sigue paso a paso la construcción del clasificador mediante Partial Matching con Python en Excel.
Ver video · 9:15Descarga el archivo utilizado en el tutorial y prueba la clasificación con tus propios conceptos.
Abrir archivosEste ejemplo muestra cómo podemos pasar de utilizar únicamente fórmulas a incorporar Python cuando necesitamos procesar grandes cantidades de información o construir reglas más flexibles.
Explorar más recursos