Der Fall doppelter Zeilen

Ich versuche, doppelte Datensätze in Excel mit kostenloser Software zu löschen

Ein Kunde kam mit einem Problem zu mir. Ich hatte eine Datenbank in einer Excel-Tabelle mit mehr als einer Million Datensätzen, von denen sich einige wiederholten. Hier begannen meine Versuche, den Fall doppelter Zeilen zu lösen.

Da ich es nicht mag, die Zeit der Leser zu verschwenden, Ich kann Ihnen sagen, dass das Problem am einfachsten mit der Excel 365-Funktion gelöst werden konnte Dies dient genau dazu, doppelte Zeilen zu entfernen. Als guter Linuxer habe ich jedoch zunächst die komplexeren Methoden ausprobiert. Darum geht es in diesem Artikel

Der Fall doppelter Zeilen

Es muss gesagt werden, dass Obwohl LibreOffice Calc kein Problem damit hat, eine 136 MB große Speicherdatei zu öffnen und vollständig angezeigt und bearbeitet werden kann, war das Speichern nicht möglich. sowohl im nativen als auch im Microsoft-Format. Ich habe einen Computer mit 8 GB Arbeitsspeicher und einem AMD A6-9500-Prozessor, aber Sie müssen versuchen, ihn zu speichern, sonst würde die Anwendung geschlossen oder der Computer abstürzen.

Im Allgemeinen bin ich dafür, die ursprüngliche Anwendung zu verwenden, in der das Dokument erstellt wurde. Das erspart mir viel Ärger (hauptsächlich die Schuld von Microsoft-Anwendungen, die normalerweise keine Störungen akzeptieren), sondern die Windows 10-Partition, die ich normalerweise dafür verwende In einigen Fällen funktionierte es nicht, also beschloss ich, vor der Neuinstallation andere Dinge auszuprobieren.

Bären und Schlangen

En Ein weiterer Gegenstand Ich habe Ihnen bereits die Schritte zum Installieren von Programmen aus dem Pip-Paketmanager in den neuen Versionen von Ubuntu erklärt Da die Informationen zum Erstellen von Makros in LibreOffice Calc spärlich und veraltet sind, habe ich mich für die Verwendung eines Python-Skripts entschieden.

Eigentlich betrügen wir. Das Python-Skript übernimmt die Daten aus der Excel-Tabelle und importiert sie mithilfe einer Datenanalysebibliothek. rufen Pandas. Sobald diese Bibliothek die Daten verarbeitet, wird eine neue Excel-Tabelle erstellt.

Ich beschloss, etwas Einfaches auszuprobieren und darum zu bitten, mir die Anzahl der Zeilen mit doppelten Daten mitzuteilen. Das Verfahren ist wie folgt (Denken Sie daran, zuerst den Artikel zu lesen, den ich Ihnen angegeben habe)

pip3 install pandas openpyxl Dieser Befehl installiert die Bibliotheken, die es uns ermöglichen, mit Daten zu arbeiten und mit Excel-Vorlagen zu interagieren.

Dann habe ich den Texteditor geöffnet und den folgenden Code geschrieben.

# Importa la biblioteca Pandas
import pandas as pd

def discover_duplicate_rows(path):
# Laden Sie die Excel-Datei in einen Pandas-DataFrame
df = pd.read_excel(pfad)

# Doppelte Zeilen finden
Duplikate = df.duplicated()

# Zeigt die Zeilennummern der doppelten Zeilen an
double_lines = Duplikate[Duplikate].index.tolist()
wenn duplikate_zeilen:
print("Die folgenden Zeilen mit doppelten Zeilen wurden gefunden:")
für Zeile in „Duplicate_lines“:
drucken(Zeile)
sonst:
print("Keine doppelten Zeilen in der Tabelle gefunden.")

# Excel-Dateipfad
excel_file = "file.xlsx"

# Rufen Sie die Funktion auf, um doppelte Zeilen zu erkennen
discover_duplicate_rows(excel_file)

Ich habe es als excel1.py gespeichert und damit ausgeführt python3 excel1.py
Da das Ergebnis zeigte, dass es viele doppelte Zeilen gab, beschloss ich, ein Skript zu erstellen, das diese löschte und die leere Zeile entfernte. Der Code ist dieser:
import pandas as pd

# Laden Sie die Excel-Tabelle
excel_file = 'file.xlsx'
df = pd.read_excel(excel_file, engine='openpyxl')

# Beseitigen Sie doppelte Daten und lassen Sie nur die erste Zeile mit den Daten übrig
df_no_duplicates = df.drop_duplicates(keep='first')

# Schreiben Sie das Ergebnis der Deduplizierungsverarbeitung in eine neue Excel-Datei
df_without_duplicates.to_excel('file2.xlsx', index=False, engine='openpyxl')

Ich habe es unter dem Namen excel2.py gespeichert und mit dem Befehl ausgeführt python3 excel2.py

Ich weiß nicht, warum es nicht funktioniert, da das Terminal nach ein paar Minuten geschlossen wird und die neue Datei nie erstellt wurde.entweder. Wie auch immer, am Ende habe ich Windows und Office neu installiert und einen einfachen Befehl ausgeführt, der die integrierte Office-Suite von Microsoft einschaltet, was beweist, dass Ockhams Rasiermesser auch für die Welt der Software gilt. Wie auch immer, das erste Programm, das ich geschrieben habe, hat mir dabei geholfen, schnell zu überprüfen, ob alle doppelten Daten entfernt wurden. Wie auch immer, ich habe vor, die Untersuchung fortzusetzen und über die Ergebnisse zu berichten.

Übrigens liegt es vielleicht an der fehlenden Dokumentation, aber die Angewohnheit der Leute, Tabellenkalkulationen zu verwenden, wenn es Datenbankmanager gibt, ist merkwürdig.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   JF404 sagte

    Haben Sie versucht, das Skript zu debuggen, um herauszufinden, wo ein Fehler aufgetreten ist?
    Wenn es um Kunden geht, ist es zwar das Ideal, so schnell wie möglich Ergebnisse zu liefern, aber aus purer Neugier können Sie das Skript debuggen und versuchen, den Fehler zu identifizieren. So sparen Sie Zeit und erstellen ein Skript, das Ihnen nützlich sein kann die Zukunft.

    1.    Diego German Gonzalez sagte

      Nein, das ist mir nicht in den Sinn gekommen.
      Ich habe es auf die To-Do-Liste gesetzt.
      Mir fällt auf, dass es sich um ein Speicherproblem handelt, die Datei ist zu groß.

      1.    John sagte

        Versuchen Sie es mit XlsxWriter anstelle von openpyxl

        1.    Diego German Gonzalez sagte

          Beachten. Vielen Dank.

  2.   Engel sagte

    Ich würde Ihnen empfehlen, die RAM-Nutzung des Skripts zu messen. Das Laden von Datenrahmen in den Speicher führt dazu, dass bei intensiven Aufgaben schnell die Ressourcen ausgehen. Vielleicht möchten Sie die Polaren im Auge behalten

    1.    Diego German Gonzalez sagte

      Danke schön. Beachten.

  3.   Ludwig sagte

    Wenn die Excel-Datei nur Daten enthält, keine Formeln, Makros, Grafiken usw., ist es eine gute Option, sie als CSV zu exportieren und mit Sortierung zu verarbeiten, also:

    1- Öffnen Sie eine Konsole (cmd.exe)
    2- Schreiben Sie: sort /unique file.csv > Output.csv
    3- Öffnen Sie es erneut in Excel und speichern Sie es im XLSX-Format

    Bei Verwendung von Linux:

    1- Terminal öffnen,
    2- Schreiben Sie: sort -u file.csv > Output.csv

    1.    Diego German Gonzalez sagte

      Gute Idee. Ich werde es versuchen

  4.   Gregory Ros sagte

    Den letzten Kommentar mache ich mir zu Eigen. Ich weiß nicht, warum die Datenbanken erstellt wurden, wenn sie sie später nicht verwenden und prüfen, ob eine Tabellenkalkulation, umso mehr eine Datenbank, einfach zu verwenden ist.