У меня есть сотни файлов Excel с сотнями таблиц.
Я хочу использовать python для автоматического определения этих таблиц и преобразования их в pandas фреймы данных.
Некоторые ключевые факты об этих таблицах:
- Эти таблицы не названы.
- Расположение этих таблиц также неизвестно
- На одном листе может быть несколько таблиц (обычно разделенных несколькими пустыми строками)
- могут быть аннотации
- в таблице всегда будет кластер ячеек со значениями, строками и метками столбцов
- метки столбцов могут находиться в 1 строке или 2 строках (представьте себе вложенные заголовки в pandas df)
Вот пример того, как выглядит таблица.
Вот мое предлагаемое решение (я бы как ваш ввод в этом):
- начать с нижнего правого угла данного листа в Excel (так работает снизу вверх)
- поиск кластера ячеек со значениями в этом. Скажем, вы найдете 4 клетки (2 сверху и 2 снизу) с цифрами в нем. Это будет означать, что вы приземлились на таблицу
- , тогда вы бы вычислили размеры этой таблицы, поэтому в верхнем левом и нижнем правом углу это будут значения df
- , которые вы Затем вычислите, сколько уровней в столбцах / заголовке, и извлеките метки
- . Затем вы выясните, сколько уровней в строках / индексе, и извлеките метки
- . перейдите к следующей таблице и повторите
Какую библиотеку использовать?
- xlrd: очень быстро, но не читает форматирование ячеек для файлов .xlsx. Он предоставляет информацию о формате ячейки для файлов .xls, но не .xlsx. Мы сосредоточены на .xlsx.
- openpyxl: очень медленно, использует тонны памяти, потому что загружает все в память. Он предоставляет информацию о форматировании ячеек.
Во время моего исследования я ответил на эти два вопроса, которые похожи, но предложенные решения основаны на VBA, тогда как мне нужно чисто python решение.
- Как автоматически определять таблицы в Excel
- Использование машинного обучения для анализа файла Excel и извлечения данных таблицы без использования именованных таблиц? Если да, то как мне начать?