重复行的情况

尝试使用免费软件删除 Excel 中的重复记录

一位客户带着问题来找我。 我在 Excel 电子表格中有一个数据库,其中包含超过一百万条记录,其中有几条是重复的。 这是我开始尝试解决重复行问题的地方。

因为我不喜欢浪费读者的时间, 我告诉你,这个问题最终以最简单的方式解决了,使用 Excel 365 函数 这恰恰用于消除重复的行。 然而,作为一个优秀的 linux 用户,我首先尝试了更复杂的方法。 这就是这篇文章的主题

重复行的情况

必须说, 虽然 LibreOffice Calc 打开 136 MB 内存文件没有问题,可以完全查看和使用,但无法保存, 本机和 Microsoft 格式。 我有一台 8 GB 内存和 AMD A6-9500 处理器的计算机,但您必须尝试保存它,否则应用程序会关闭或计算机会崩溃。

总的来说,我赞成使用创建文档的原始应用程序,这样可以省去很多麻烦(主要是 Microsoft 应用程序通常不接受干扰的错误),但我通常用于这些的 Windows 10 分区它拒绝工作的情况下,所以在重新安装之前我决定尝试其他的东西。

熊和蛇

En 另一个项目 我已经告诉过你在新版本的 Ubuntu 中从 Pip 包管理器安装程序的步骤 由于有关在 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 DataFrame 中
df = pd.read_excel(路径)

# 查找重复行
重复 = df.duplicated()

# 显示重复行的行号
duplicate_lines = duplicates[重复项].index.tolist()
如果重复行:
print("找到以下重复行:")
对于 duplicate_lines 中的行:
打印(行)
其他:
print("在电子表格中没有找到重复的行。")

# Excel文件路径
excel_file = "文件.xlsx"

# 调用检测重复行的函数
检测重复行(excel_file)

我将它保存为 excel1.py 并运行它 python3 excel1.py
因为结果显示有很多重复的行,所以我决定制作一个脚本来删除它们并删除空白行。 代码是这样的:
import pandas as pd

# 加载 Excel 电子表格
excel_file = 'file.xlsx'
df = pd.read_excel(excel_file, engine='openpyxl')

# 删除重复数据只留下第一行数据
df_no_duplicates = df.drop_duplicates(keep='first')

# 将去重处理的结果写入一个新的Excel文件
df_without_duplicates.to_excel('file2.xlsx', index=False, engine='openpyxl')

我将它保存在 excel2.py 的名称下并使用命令运行它 python3 excel2.py

我不知道为什么它不起作用,因为它会在几分钟后关闭终端并且从未创建新文件。任何一个。 不管怎样,我最终重新安装了 Windows 和 Office,并运行了一个简单的命令,内置了微软的办公套件,证明奥卡姆剃刀也适用于软件世界。 不管怎样,我编写的第一个程序帮助我快速检查所有重复数据是否已被删除。 不管怎样,我打算继续调查并报告结果。

顺便说一句,也许是因为缺少文档,但是人们在有数据库管理员的情况下使用电子表格的习惯很好奇。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   JF404

    您是否尝试调试脚本以找出失败的地方?
    尽管对于客户来说,理想的情况是尽快交付结果,但出于纯粹的好奇心,您可以调试脚本并尝试找出错误,从而节省您自己的时间并创建一个对您有用的脚本未来。

    1.    迭戈·德·冈萨雷斯(Diego German Gonzalez)

      不,我没想到。
      我把它放在待办事项清单上。
      我想到这是一个内存问题,文件太大了。

      1.    约翰

        尝试使用 XlsxWriter 而不是 openpyxl

        1.    迭戈·德·冈萨雷斯(Diego German Gonzalez)

          做记录。 谢谢。

  2.   天使

    我建议您测量脚本的 ram 使用情况。 将数据帧加载到内存中会使密集型任务很容易耗尽资源。 您可能有兴趣关注极地

    1.    迭戈·德·冈萨雷斯(Diego German Gonzalez)

      谢谢。 做记录。

  3.   路易士

    如果 excel 文件只包含数据,没有公式、宏、图形等,一个好的选择是导出为 CSV 并使用排序处理它,因此:

    1- 打开控制台 (cmd.exe)
    2- 写入:排序 /unique file.csv > output.csv
    3- 在 excel 中再次打开并另存为 XLSX 格式

    在使用 linux 的情况下:

    1- 打开终端,
    2- 写入:sort -u file.csv > output.csv

    1.    迭戈·德·冈萨雷斯(Diego German Gonzalez)

      好主意。 我要试试

  4.   格雷戈里·罗斯

    最后的评论是我自己的。 我不知道为什么要创建数据库,如果他们以后不用它们,看看电子表格是否易于使用,更何况是数据库。