Linux Adictos Diego Germán González  

El caso de las filas duplicadas

Intentando borrar registros duplicados en Excel usando software libre

Un cliente me vino con un problema, tenía una base de datos en una planilla Excel con más de un millón de registros, unos cuantos de ellos repetidos. Ahí comenzaron mis intentos por resolver el caso de las filas duplicadas.

Como no me gusta hacerles perder el tiempo a los lectores, les cuento que el tema se terminó resolviendo de la forma más fácil, usando la función de Excel 365 que precisamente sirve para eliminar las filas duplicadas. Sin embargo, como buen linuxero primero probé los métodos más complejos. De eso va este artículo

El caso de las filas duplicadas

Hay que decir que, aunque LibreOffice Calc no tiene problemas para abrir un archivo de 136 MB de memoria y puede verse y trabajar con él completamente, fue imposible guardarlo, tanto en formatos nativos como en los de Microsoft. Tengo una computadora con 8 GB de memoria y un procesador AMD A6-9500, pero hay intentar el guradado o se cerraba la aplicación o se colgaba el ordenador.

En general soy partidario de usar la aplicación original en la que fue creado el documento, eso ahorra bastantes dolores de cabeza (La mayoría culpa de las aplicaciones de Microsoft que no suelen aceptar intromisiones) pero la partición de Windows 10 que suelo usar para estos casos se negó a funcionar, por lo que antes de reinstalar decidí probar otras cosas.

Osos y serpientes

En otro artículo ya les conté los pasos para instalar programas del gestor de paquetes Pip en las nuevas versiones de Ubuntu Dado que la información sobre la creación de macros en LibreOffice Calc es dispersa y poco actualizada, decidi usar un script en Python.

En realidad, hacemos trampa. El script en python toma los datos de la planilla Excel, y los importa usando una biblioteca de análisis de datos llamada Pandas. Una vez que esta biblioteca procesa los datos, se crea una nueva planilla Excel.

Decidí probar con algo sencillo, pedirle que me diga los números de filas con datos duplicados. El procedimiento es el siguiente (Recuerda mirar primero el artículo que te indiqué)

pip3 install pandas openpyxl Este comando instala las bibliotecas que nos permiten trabajar con datos e interactual con plantillas Excel.

Luego abrí el editor de textos y escribí el siguiente código.

# Importa la biblioteca Pandas
import pandas as pd

def detectar_filas_duplicadas(path):
# Cargar el archivo Excel en un DataFrame de pandas
df = pd.read_excel(path)

# Encuentra las filas duplicadas
duplicados = df.duplicated()

# Muestra los números de línea de las filas duplicadas
lineas_duplicadas = duplicados[duplicados].index.tolist()
if lineas_duplicadas:
print(«Se encontraron las siguientes líneas de filas duplicadas:»)
for linea in lineas_duplicadas:
print(linea)
else:
print(«No se encontraron filas duplicadas en la planilla.»)

# Ruta del archivo Excel
archivo_excel = «archivo.xlsx»

# Llama a la función para detectar filas duplicadas
detectar_filas_duplicadas(archivo_excel)

Lo guardé con el nombre de excel1.py y lo ejecuté con python3 excel1.py
Debido a que el resultado demostró que había muchas filas duplicadas decidí hacer un script que las borrara y eliminara la fila en blanco. El código es este:
import pandas as pd

# Carga la planilla de Excel
archivo_excel = ‘archivo.xlsx’
df = pd.read_excel(archivo_excel, engine=’openpyxl’)

# Elimina los datos duplicados dejando solo la primera fila con el dato
df_sin_duplicados = df.drop_duplicates(keep=’first’)

# Escribir el resultado del procesamiento de eliminación de duplicados en un nuevo archivo de Excel
df_sin_duplicados.to_excel(‘archivo2.xlsx’, index=False, engine=’openpyxl’)

Lo guardé bajo el nombre de excel2.py y lo ejecuté con el comando python3 excel2.py

No sé por qué no funciona porque se termina cerrando la terminal a los pocos minutos y el nuevo archivo nunca fue creado. De todas formas, terminé reinstalando Windows y Office y ejecutando un sencillo comando que trae incorporada la suite ofimática de Microsoft, lo que demuestra que la navaja de Ockham también se aplica al mundo del software. Igual, el primer programa que escribí me sirvió para hacer una comprobación rápida de que todos los datos duplicados se habían eliminado. De todas formas, pienso seguir investigando y reportando los resultados.

Por cierto, tal vez es por la falta de documentación, pero es curiosa la costumbre de la gente de usar planillas de cálculo habiendo gestores de bases de datos.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.