Как автоматически определять таблицы в Excel, используя Python - PullRequest
0 голосов
/ 28 января 2020

У меня есть сотни файлов Excel с сотнями таблиц.

Я хочу использовать python для автоматического определения этих таблиц и преобразования их в pandas фреймы данных.

Некоторые ключевые факты об этих таблицах:

  • Эти таблицы не названы.
  • Расположение этих таблиц также неизвестно
  • На одном листе может быть несколько таблиц (обычно разделенных несколькими пустыми строками)
  • могут быть аннотации
  • в таблице всегда будет кластер ячеек со значениями, строками и метками столбцов
  • метки столбцов могут находиться в 1 строке или 2 строках (представьте себе вложенные заголовки в pandas df)

Вот пример того, как выглядит таблица.

enter image description here

enter image description here

Вот мое предлагаемое решение (я бы как ваш ввод в этом):

  1. начать с нижнего правого угла данного листа в Excel (так работает снизу вверх)
  2. поиск кластера ячеек со значениями в этом. Скажем, вы найдете 4 клетки (2 сверху и 2 снизу) с цифрами в нем. Это будет означать, что вы приземлились на таблицу
  3. , тогда вы бы вычислили размеры этой таблицы, поэтому в верхнем левом и нижнем правом углу это будут значения df
  4. , которые вы Затем вычислите, сколько уровней в столбцах / заголовке, и извлеките метки
  5. . Затем вы выясните, сколько уровней в строках / индексе, и извлеките метки
  6. . перейдите к следующей таблице и повторите

Какую библиотеку использовать?

  • xlrd: очень быстро, но не читает форматирование ячеек для файлов .xlsx. Он предоставляет информацию о формате ячейки для файлов .xls, но не .xlsx. Мы сосредоточены на .xlsx.
  • openpyxl: очень медленно, использует тонны памяти, потому что загружает все в память. Он предоставляет информацию о форматировании ячеек.

Во время моего исследования я ответил на эти два вопроса, которые похожи, но предложенные решения основаны на VBA, тогда как мне нужно чисто python решение.

  1. Как автоматически определять таблицы в Excel
  2. Использование машинного обучения для анализа файла Excel и извлечения данных таблицы без использования именованных таблиц? Если да, то как мне начать?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...