#python #xml #pandas #xslt #lxml
#python #xml #pandas #xslt #lxml
Вопрос:
Я новичок в XML и пытаюсь преобразовать XML в плоские таблицы для использования в python pandas. Каков рекомендуемый способ для больших файлов (~ 150 МБ, 20000 записей). Структура в основном табличная с несколькими столбцами, имеющими подуровни, поэтому я хотел бы создать один основной фрейм данных и несколько связанных фреймов данных (т. Е. С идентификатором основного фрейма данных и дополнительным индексом для этого столбца).). разбор xml с помощью lxml и последующая итерация по каждой записи для компиляции списков столбцов для создания фрейма данных pandas кажется очень медленным и не использует векторизацию.
Я ищу метод, который хорошо работает с несколькими большими файлами. Является ли использование xslt для создания текстовых файлов лучшим решением? я бы запустил его n раз — один раз для каждой таблицы / вложенной таблицы или можно создать несколько таблиц с помощью одного скрипта xslt?
<record id=100>
<name>richard<name>
<years>
<yearly index=0>A</yearly>
<yearly index=1>B</yearly>
</years>
</record>
Итак, в этом случае я хотел бы сгенерировать две таблицы — фрейм данных записи с идентификатором индекса и столбцом ‘name’ и фрейм данных ‘yearly’ с индексом (id, index) и один столбец со значениями ‘A’, ‘B’
Комментарии:
1. Что вы имеете в виду подтаблицы? Pandas не имеет такой структуры. Вы имеете в виду другие фреймы данных со связанными идентификаторами. Кроме того, можем ли мы увидеть пример XML, чтобы проиллюстрировать вашу точку зрения?
2. Я перефразировал вопрос, чтобы использовать ‘dataframes’, а не ‘table’ Вот пример структуры — я не хотел ее вводить, потому что меня интересует общее решение.
3. XML — это открытый тип данных, оставленный на усмотрение разработчика, который может иметь от одного до нескольких вложенных узлов с несколькими атрибутами или без них, тогда как txt / csv, таблицы БД, электронные таблицы, фреймы данных являются строго двумерными (строка за столбцом). Таким образом, универсальное, универсальное решение для всех может быть неосуществимым или надежным.
4. И XSLT — хороший выбор для преобразования текста в плоские файлы, которые можно импортировать в pandas, а lxml может запускать динамические скрипты XSLT 1.0, передавая переменные. Но известно, что XSLT неэффективно использует память для больших файлов, поскольку он одновременно считывает весь документ (более новые процессоры XSLT 3.0 могут выполнять потоковую передачу). Но 150 МБ не слишком большой, и при правильной среде процессора XSLT 1.0 должен быть достаточно хорошим.