Tilfældet med duplikerede rækker

Forsøger at slette duplikerede poster i Excel ved hjælp af gratis software

En kunde kom til mig med et problem. Jeg havde en database i et Excel-regneark med mere end en million poster, et par af dem blev gentaget. Det var her, mine forsøg på at løse tilfældet med duplikerede rækker begyndte.

Da jeg ikke kan lide at spilde læsernes tid, Jeg fortæller dig, at problemet endte med at blive løst på den nemmeste måde ved hjælp af Excel 365-funktionen som netop tjener til at eliminere duplikerede rækker. Men som en god linuxer prøvede jeg først de mere komplekse metoder. Det er det, denne artikel handler om

Tilfældet med duplikerede rækker

Det skal siges, Selvom LibreOffice Calc ikke har noget problem med at åbne en 136 MB hukommelsesfil og fuldt ud kan ses og arbejdes med, var det umuligt at gemme, i både native og Microsoft-formater. Jeg har en computer med 8 GB hukommelse og en AMD A6-9500-processor, men du skal prøve at gemme den, ellers ville programmet lukke, eller computeren ville gå ned.

Generelt går jeg ind for at bruge den originale applikation, som dokumentet blev oprettet i, som sparer en masse hovedpine (for det meste fejlen i Microsoft-applikationer, der normalt ikke accepterer interferens), men Windows 10-partitionen, som jeg normalt bruger til disse tilfælde nægtede det at virke, så før jeg geninstallerede, besluttede jeg at prøve andre ting.

bjørne og slanger

En en anden artikel Jeg har allerede fortalt dig trinene til at installere programmer fra Pip-pakkehåndteringen i de nye versioner af Ubuntu Da oplysningerne om oprettelse af makroer i LibreOffice Calc er sparsomme og forældede, besluttede jeg at bruge et Python-script.

Faktisk snyder vi. Python-scriptet tager dataene fra Excel-regnearket og importerer dem ved hjælp af et dataanalysebibliotek. ringe Pandaer. Når dette bibliotek behandler dataene, oprettes et nyt Excel-regneark.

Jeg besluttede at prøve noget simpelt og bad det fortælle mig antallet af rækker med duplikerede data. Fremgangsmåden er som følger (Husk først at se på artiklen, som jeg indikerede dig)

pip3 install pandas openpyxl Denne kommando installerer de biblioteker, der giver os mulighed for at arbejde med data og interagere med Excel-skabeloner.

Så åbnede jeg teksteditoren og skrev følgende kode.

# Importa la biblioteca Pandas
import pandas as pd

def detect_duplicate_rows(sti):
# Indlæs Excel-filen i en pandas DataFrame
df = pd.read_excel(sti)

# Find duplikerede rækker
dubletter = df.duplicated()

# Vis linjenumrene for de duplikerede rækker
duplicate_lines = dubletter[duplikater].index.tolist()
hvis duplicate_lines:
print("Følgende linjer med duplikerede rækker blev fundet:")
for linje i duplicate_lines:
print (linje)
andet:
print("Ingen duplikerede rækker fundet i regnearket.")

# Excel-filsti
excel_fil = "fil.xlsx"

# Kald funktionen til at detektere duplikerede rækker
detect_duplicate_rows(excel_file)

Jeg gemte det som excel1.py og kørte det med python3 excel1.py
Fordi resultatet viste, at der var mange duplikerede rækker, besluttede jeg at lave et script, der ville slette dem og fjerne den tomme række. Koden er denne:
import pandas as pd

# Indlæs Excel-regnearket
excel_file = 'fil.xlsx'
df = pd.read_excel(excel_file, engine='openpyxl')

# Eliminer duplikerede data og efterlader kun den første række med dataene
df_no_duplicates = df.drop_duplicates(keep='first')

# Skriv resultatet af deduplikeringsbehandlingen til en ny Excel-fil
df_without_duplicates.to_excel('file2.xlsx', index=False, engine='openpyxl')

Jeg gemte det under navnet excel2.py og kørte det med kommandoen python3 excel2.py

Jeg ved ikke, hvorfor det ikke virker, fordi det ender med at lukke terminalen efter et par minutter, og den nye fil blev aldrig oprettet.enten. I hvert fald endte jeg med at geninstallere Windows og Office og køre en simpel kommando, der bringer Microsofts kontorpakke indbygget, hvilket beviser, at Ockhams barbermaskine også gælder for softwareverdenen. I hvert fald hjalp det første program, jeg skrev, mig med at foretage en hurtig kontrol af, at alle duplikatdata var blevet fjernet. I hvert fald planlægger jeg at fortsætte med at undersøge og rapportere resultaterne.

Måske skyldes det i øvrigt manglen på dokumentation, men vanen med, at folk bruger regneark, når der er databaseadministratorer, er nysgerrig.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for data: AB Internet Networks 2008 SL
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   JF404 sagde han

    Forsøgte du at debugge scriptet for at finde ud af, hvor det fejlede?
    Selvom når det kommer til kunder, det ideelle er at levere resultater så hurtigt som muligt, kan du af ren nysgerrighed fejlsøge scriptet og forsøge at identificere fejlen, og dermed spare dig selv for tid og skabe et script, der kan være nyttigt for dig i fremtiden.

    1.    Diego tyske Gonzalez sagde han

      Nej, det faldt mig ikke ind.
      Jeg har sat det på huskelisten.
      Det går op for mig, at det er et hukommelsesproblem, filen er for stor.

      1.    John sagde han

        Prøv at bruge XlsxWriter i stedet for openpyxl

        1.    Diego tyske Gonzalez sagde han

          Tage til efterretning. Tak skal du have.

  2.   Angel sagde han

    Jeg vil anbefale dig at måle ram-forbruget af scriptet. Indlæsning af datarammer i hukommelsen gør det nemt for intensive opgaver at løbe tør for ressourcer. Du kan være interesseret i at holde øje med polarerne

    1.    Diego tyske Gonzalez sagde han

      Tak skal du have. Tage til efterretning.

  3.   louis sagde han

    Hvis excel-filen kun indeholder data, ingen formler, makroer, grafik osv., er en god mulighed at eksportere som CSV og behandle det med sortering, således:

    1- Åbn en konsol (cmd.exe)
    2- Skriv: sort /unique file.csv > output.csv
    3- Åbn det igen i excel og gem som XLSX-format

    I tilfælde af at bruge linux:

    1- Åbn terminal,
    2- Skriv: sort -u file.csv > output.csv

    1.    Diego tyske Gonzalez sagde han

      God ide. Jeg vil prøve det

  4.   Gregory ros sagde han

    Jeg gør den sidste kommentar til min egen. Jeg ved ikke, hvorfor databaserne blev oprettet, hvis de ikke bruger dem senere og se, om et regneark er nemt at bruge, i endnu højere grad en database.