Обложка канала

Ivan Begtin

3903 @begtin

I am focused on Open Data, Procurement, e-Government, Open Government and other tech stuff

Ivan Begtin

4 года назад
Открыть в
Я ранее писал про библиотеку кода Iterable data для Python предназначенную для потоковой обработки файлов с данными [1] и наконец-то нашёл время обновить её в Github'е [2] и залить в Python packages [3]. Теперь установить код можно командой "pip install iterabledata". Про то зачем это нужно я писал ранее. Основная задача в том унифицировать обработку файлов данных так чтобы не было заметной разницы работаешь ли ты с файлом JSON, CSV, NDJSON, BSON, Parquet или другим. Сейчас поддерживаются 11 форматов файлов и 5 кодеков (алгоритмов) сжатия. Это даёт возможность не только упростить и унифицировать обработку файлов, но и достаточно просто делать преобразования между файлами в разных форматах. Всё это рождается из реальных задач с которыми приходится сталкиваться когда работаешь с файлами в "дикой среде", а то есть не можешь управлять тем в каком первичном виде они существуют. По сути это код выделенный из утилиты undatum и доработанный для универсальной поддержки разных форматов. Он альтернативен к использованию pandas и датафреймов, потому что датафреймы не поддерживают JSON/NDJSON, а уплощение данных (flattening) допустимо и удобно далеко не всегда. Что добавилось։ 1. Универсальная функция open_iterable("название файла") которая на вход может получать файл в формате csv, json, ndjson, bson, parquet и тд и возвращать итератор 2. Класс Pipeline и функция Pipeline для очень простой перегонки данных из одного файла в другой с промежуточной обработкой. 3. Обновлены многие типы форматов, добавлен кодек lz4. 4. Практически все основные функции покрыты тестами 5. Добавлено множество вспомогательных функций для работы с разными типами данных, они будут уже в документации Ссылки։ [1] https://t.me/begtin/4476 [2] https://github.com/apicrafter/pyiterable [3] https://pypi.org/project/iterabledata/ #opensource #dataengineering #data #datatools
Ivan Begtin

Я всё забыл написать, ещё пару месяцев начал и почти доделал небольшую программную библиотеку для Python для чтения данных из файлов в любых форматах с данными։ csv, json, json lines, xml, parquet, orc, xls, xlsx и в перспективе других. Называется pyiterable [1] и воспроизводит и улучшает код который был в утилите командной строки undatum [2] и в ETL движке datacrafter [3]. По сути библиотека позволяет одинаковым образом читать любые табличные и не-табличные данные и возвращать их в виде словарей для Python (python dict). Причём файлы могут быть, например, сжатыми разными архиваторами и это тоже поддерживается. Аналогично, для ряда форматов, поддерживается не только чтение, но и запись, опять же в виде записей в виде python dict. Мне эта библиотека нужна была чтобы в итоге заменить код внутри Undatum и сделать универсальную утилиту преобразования данных из любого в любой формат которые могут быть контейнерами для данных. На картинке изначальная модель библиотеки, сейчас реализовано около 70% возможностей. Ошибки, предложения можно отправлять в issues, исправления в код в pull request Ссылки։ [1] https://github.com/apicrafter/pyiterable [2] https://github.com/datacoon/undatum [3] https://github.com/apicrafter/datacrafter #datatools #opensource #apicrafter #data

Telegram