Случай с повторяющимися строками

Попытка удалить повторяющиеся записи в Excel с помощью бесплатного программного обеспечения

Ко мне пришел клиент с проблемой. У меня была база данных в электронной таблице Excel с более чем миллионом записей, некоторые из которых повторялись. С этого и начались мои попытки решить случай с повторяющимися строками.

Поскольку я не люблю тратить время читателей, Я вам говорю, что проблема в итоге была решена самым простым способом, с помощью функции Excel 365 который точно служит для устранения повторяющихся строк. Однако, как хороший линуксер, я сначала попробовал более сложные методы. Вот о чем эта статья

Случай с повторяющимися строками

Надо сказать, что хотя LibreOffice Calc без проблем открывает файл памяти объемом 136 МБ и может полностью просматриваться и работать с ним, его невозможно было сохранить, как в собственном формате, так и в формате Microsoft. У меня есть компьютер с 8 ГБ памяти и процессором AMD A6-9500, но вы должны попытаться сохранить его, иначе приложение закроется или компьютер зависнет.

В общем, я за то, чтобы использовать оригинальное приложение, в котором создавался документ, что избавляет от многих головных болей (в основном по вине приложений Microsoft, которые обычно не воспринимают помехи), но раздел Windows 10, который я обычно использую для этих случаях он отказывался работать, поэтому перед переустановкой я решил попробовать другие вещи.

медведи и змеи

En другая статья Я уже рассказал вам шаги по установке программ из менеджера пакетов Pip в новых версиях Ubuntu. Поскольку информация о создании макросов в LibreOffice Calc скудна и устарела, я решил использовать скрипт Python.

На самом деле мы обманываем. Сценарий Python берет данные из электронной таблицы Excel и импортирует их с помощью библиотеки анализа данных. называть Панды. Как только эта библиотека обрабатывает данные, создается новая электронная таблица Excel.

Я решил попробовать что-то простое, попросив его сообщить мне количество строк с повторяющимися данными. Процедура следующая (не забудьте сначала посмотреть статью, которую я вам указал)

pip3 install pandas openpyxl Эта команда устанавливает библиотеки, которые позволяют нам работать с данными и взаимодействовать с шаблонами Excel.

Затем я открыл текстовый редактор и написал следующий код.

# Importa la biblioteca Pandas
import pandas as pd

def detect_duplicate_rows (путь):
# Загрузите файл Excel в кадр данных pandas
df = pd.read_excel (путь)

# Найти повторяющиеся строки
дубликаты = df.duplicated()

# Отображение номеров повторяющихся строк
дубликаты_линий = дубликаты[дубликаты].index.tolist()
если дубликаты_линий:
print("Обнаружены следующие повторяющиеся строки:")
для строки в повторяющихся_линиях:
печать (строка)
еще:
print("Повторяющихся строк в электронной таблице не найдено.")

# путь к файлу Excel
excel_file = "файл.xlsx"

# Вызов функции для обнаружения повторяющихся строк
detect_duplicate_rows (excel_file)

Я сохранил его как excel1.py и запустил с python3 excel1.py
Поскольку результат показал, что было много повторяющихся строк, я решил сделать скрипт, который удалит их и удалит пустую строку. Код такой:
import pandas as pd

# Загрузите электронную таблицу Excel
excel_file = 'файл.xlsx'
df = pd.read_excel (excel_file, engine = 'openpyxl')

# Удаляем повторяющиеся данные, оставляя только первую строку с данными
df_no_duplicates = df.drop_duplicates (держать = 'первый')

# Записать результат обработки дедупликации в новый файл Excel
df_without_duplicates.to_excel('file2.xlsx', index=False, engine='openpyxl')

Я сохранил его под именем excel2.py и запустил командой python3 excel2.py

Я не знаю, почему это не работает, потому что через несколько минут терминал закрывается, а новый файл так и не был создан.или. Так или иначе, я переустановил Windows и Office и запустил простую команду, которая включает встроенный офисный пакет Microsoft, доказывая, что бритва Оккама применима и к миру программного обеспечения. Как бы то ни было, первая программа, которую я написал, помогла мне быстро проверить, были ли удалены все повторяющиеся данные. В любом случае, я планирую продолжить расследование и сообщить о результатах.

Кстати, может это из-за отсутствия документации, но любопытна привычка людей пользоваться электронными таблицами, когда есть менеджеры баз данных.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   JF404 сказал

    Вы пытались отладить сценарий, чтобы выяснить, где он терпит неудачу?
    Хотя, когда дело доходит до клиентов, идеальным является предоставление результатов как можно скорее, из чистого любопытства вы можете отладить сценарий и попытаться определить ошибку, тем самым сэкономив свое время и создав сценарий, который может быть вам полезен в будущем. будущее.

    1.    Диего Герман Гонсалес сказал

      Нет, мне это не приходило в голову.
      Вношу в список дел.
      Мне приходит в голову, что это проблема с памятью, файл слишком большой.

      1.    Хуан сказал

        Попробуйте использовать XlsxWriter вместо openpyxl

        1.    Диего Герман Гонсалес сказал

          Обратите внимание. Спасибо.

  2.   ангел сказал

    Я бы порекомендовал вам измерить использование оперативной памяти скриптом. Загрузка фреймов данных в память упрощает выполнение ресурсоемких задач. Возможно, вам будет интересно следить за полярами.

    1.    Диего Герман Гонсалес сказал

      Спасибо. Обратите внимание.

  3.   Луикс сказал

    Если файл Excel содержит только данные, а не формулы, макросы, графику и т. д., хорошим вариантом является экспорт в формате CSV и его обработка с сортировкой, таким образом:

    1- Откройте консоль (cmd.exe)
    2- Напишите: sort /unique file.csv > output.csv
    3- Откройте его снова в Excel и сохраните в формате XLSX.

    В случае использования Linux:

    1- Открытый терминал,
    2- Напишите: sort -u файл.csv > output.csv

    1.    Диего Герман Гонсалес сказал

      Хорошая идея. я собираюсь попробовать

  4.   Грегори Рос сказал

    Я делаю последний комментарий своим. Я не знаю, зачем были созданы базы данных, если они не используют их позже и посмотреть, легко ли использовать электронную таблицу, тем более базу данных.