如何使用 Python 自动检测 Excel 中的表格

Boo*_*d16 5 python excel pandas

我有数百个 Excel 文件和数百个表格。

我想使用 python 自动检测这些表并将它们转换为 pandas 数据帧。

关于这些表的一些关键事实:

  • 这些表没有命名。
  • 这些桌子的位置也是未知的
  • 一张表可以有多个表(通常由几个空行分隔)
  • 可能有注释
  • 表格总是有一组带有值、行和列标签的单元格
  • 列标签可能位于 1 行或 2 行(想想 pandas df 中的嵌套标题)

这是表格外观的示例。

在此输入图像描述

在此输入图像描述

这是我提出的解决方案(我希望您对此提出意见):

  1. 从 Excel 中给定工作表的右下角开始(因此从下到上工作)
  2. 搜索其中包含值的单元格簇。假设您找到 4 个单元格(上面 2 个,下面 2 个),其中有数字。这表明您已降落在桌子上
  3. 然后你会算出这个表的尺寸,所以左上角和右下角,这将是 df 的值
  4. 然后您将计算出列/标题中有多少级别并提取标签
  5. 然后你会计算出行/索引中有多少层并提取标签
  6. 然后移至下一张表并重复

使用什么库?

  • xlrd:非常快,但不读取 .xlsx 文件的单元格格式。它确实提供 .xls 文件的单元格格式信息,但不提供 .xlsx 的单元格格式信息。我们专注于 .xlsx。
  • openpyxl:非常慢,使用大量内存,因为它将所有内容加载到内存中。它确实提供单元格格式信息。

在我的研究过程中,我遇到了这两个问题,它们相似,但提出的解决方案是基于 VBA 的,而我需要一个纯粹的 python 解决方案。

  1. 如何自动检测Excel中的表格
  2. 使用机器学习解析Excel文件并提取表数据而不涉及命名表?如果是这样,我该如何开始?