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.

from Linux Adictos https://ift.tt/aBi1NRY
via IFTTT

WINE 8.9 llega con Mono 8.0.0 y casi 300 cambios

WINE 8.9

Cuando hablamos de un software de emulación, muchas son las mejoras y retoques que se pueden incluir, pero ninguno tan importante como cuando se actualiza alguno de los motores en los que confía. WINE usa algunos para mejorar la compatibilidad con juegos que, en teoría, sólo se pueden ejecutarse en Windows, y WINE 8.9 ha actualizado un motor que simula una tecnología que está diseñada para funcionar en los sistemas operativos de las ventanas.

WINE 8.9, que sucede a la anterior versión de desarrollo 8.8, llega con el motor Mono actualizado a la versión 8.0.0. Este motor es el que se encarga de hacer funcionar el software que depende del .NET Framework de Microsoft, por lo que es la novedad más destacada de WINE 8.9. El resto de cambios que WineHQ ha considerado dignos de mención son la finalización de la conversión PE en el controlador PostScript, compatibilidad con el desplazamiento Doppler en DirectSound y mejoras en el rendimiento de GdiPlus, a lo que se le une el punto habitual de corrección de varios errores.

En total, WINE 8.9 ha introducido 287 cambios.

Bugs corregidos en WINE 8.9

  • BC3000 – Horriblemente Lento.
  • Silverlight 5.x requiere el «Filtro de Captura de Audio» para grabar desde el micrófono.
  • La aplicación .netCore no puede enlazarse a un puerto poco después de que otro programa .netCore enlazado al mismo puerto haya finalizado.
  • WINE Notepad : Usando el método de entrada japonés (IM), a veces el cursor retrocede cuando se convierte la cadena.
  • touhou 12.3 con dpad mod se bloquea al iniciar.
  • Need For Speed Underground tiene problemas con el teclado.
  • Battle.net función no implementada msauddecmft.dll.DllGetClassObject llamada en código de 32 bits.
  • WINE 8.7 y 8.8 no imprime.
  • Se muestran los archivos punteados – pero la opción «no mostrar archivos punteados» está activada.
  • Battle.net se bloquea con la función no implementada msmpeg2vdec.dll.DllGetClassObject.
  • Framemaker 8 se bloquea al imprimir.
  • winhttp:winhttp – test_websocket() falla en Windows y WINE.
  • Rich Edit desplaza erróneamente el cursor al final del texto cuando finaliza la composición IME del sistema.
  • armv7 ELF construye estrellarse desde «ntdll: Soporta el parámetro máquina extendida en NtMapViewOfSectionEx()».
  • Los ensamblados Mono/.Net no se inician: No se ha podido iniciar la aplicación o no hay ninguna aplicación asociada al archivo especificado.
  • El diálogo de impresión de Visio 2003 muestra tamaños de papel rotos al imprimir.

WINE 8.9 ya se puede descargar desde el siguiente botón. En la página de descargas hay información sobre cómo instalar esta y otras versiones en sistemas operativos como Debian y Ubuntu, pero también se puede instalar en Android y macOS.

from Linux Adictos https://ift.tt/D3YQTcC
via IFTTT