Ivan Begtin
9.11K subscribers
2.47K photos
4 videos
113 files
5.21K links
I write about Open Data, Data Engineering, Government, Privacy, Digital Preservation and etc.

CTO&Founder of Dateno https://dateno.io

Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Email ivan@begtin.tech

Ads/promotion agent: @k0shk
Download Telegram
Данные которые не скачать напрямую, но которые всё ещё открытые данные.

Есть такая особенность у данных машинного обучения что каталоги и реестры для их публикации часто не содержат прямых ссылок на файлы или же доступ по прямым ссылкам не является основнным. Это кажется очень странным, но это так. Вместо этого они содержат ... код для доступа к датасетам.

Те кто занимается задачами по data science к такому привычны давно, те кто использует другие инструменты могут находить это весьма необычным.

Вот несколько примеров:
- Tensorflow Catalog [1] каталог наборов данных к продукту Tensorflow, по каждому датасету есть информация о первоисточнике, объёму и способу подключения используя Tensorflow
- UC Irvine Machine Learning Repository [2] каталог датасетов для машинного обучения. Кроме ссылки на выгрузку, генерируется код для Python, а для каталога есть специальная открытая библиотека
- аналогично с каталогом датасетов Pytorch [3], сразу код для импорта и это логично ведь он часть библиотеки

Не говоря уже о Kaggle и HuggingFace, там такой режим доступа по умолчанию. Можно сказать что это code - first стратегия для работы с данными.

Один из интересных вопросов в том как индексировать такие датасеты. Помимо того что все такие каталоги написаны очень по своему, так ещё и получается что у них нет такого понятия как ресурсы, файлы или ссылки, в ситуации когда доступ только через API. Зато есть автогенерация кода, причём, в основном сразу в Python.

Это одна из причин почему в Dateno пока ещё мало датасетов по Machine Learning, все каталоги в этой области очень специфичны и не все дают возможность индексировать их просто и давать ссылки на файлы.

Но, конечно, вскоре и они будут добавлены

Ссылки:
[1] https://www.tensorflow.org/datasets/catalog/overview
[2] https://archive.ics.uci.edu/
[3] https://pytorch.org/vision/stable/datasets.html
[4] https://paperswithcode.com/dataset/cityscapes

#opendata #datasets #datacatalogs #ml #datascience #python
5👍2🤔2
Хорошая статья [1] о том как добиться высокой производительности Python при обработке очень больших файлов с данными на примере данных конкурса One Billion Row Challenge [2].

Ключевое что можно из статьи вынести:
- да, по умолчанию Python медленный, но есть много способов его очень сильно ускорить
- Polars и DuckDB дают сильнейшее ускорение, буквально 30кратное и делают обработку данных особенно быстрой
- Pandas - это медленно, пора отказываться от него где возможно
- замена CPython на PyPy заметно ускоряет процесс
- всё это без использования GPU, на ноутбуке

А я не могу не вспомнить что уже есть One Trillion Rows Challenge [3] где Dask претендуют на лучшую скорость обработки данных [4]

Больше соревнований хороших и разных!

Ссылки:
[1] https://towardsdatascience.com/python-one-billion-row-challenge-from-10-minutes-to-4-seconds-0718662b303e
[2] https://1brc.dev
[3] https://t.me/begtin/5529
[4] https://docs.coiled.io/blog/1trc.html

#data #dataengineering #contests #python
🔥15👍21❤‍🔥11🎉1
Полезные ссылки про данные, технологии и не только:
- Kreuzberg [1] библиотека для Python по извлечению текста из документов, поддерживает множество форматов, внутри использует Pandoc и Tesseract OCR. Создано как раз для использования в задачах RAG (Retrieval Augmented Generation) с прицелом на локальную обработку данных и минимумом зависимостей. Лицензия MIT
- Validoopsie [2] другая библиотека для Python для валидации данных. Использует библиотеку Narwhals благодаря которой подключается к почти любым видами дата-фреймов. Выглядит полезной альтернативой Great Expectations, лично для меня в валидации данных глобальный нерешённый вопрос в том что тут правильнее, код или декларативное программирования. Иначе говоря, правила проверки должны ли быть отчуждаемыми от языка разработки. Здесь валидация встроена в код, но поверх можно сделать и декларативный движок. Лицензия MIT
- Scripton [3] коммерческое IDE для Python с необычной фичей визуализации данных в реальном времени. Есть только скриншоты, записи экрана и коммерческая версия для macOS. Для тех кто занимается алгоритмической визуализацией может быть удобно, для остальных задач пока нет такой уверенности.
- New horizons for Julia [4] по сути статья о том что язык программирования Julia ещё жив и развивается. Правда медленно, на мой взгляд, но вроде как есть позитивное движение за пределами научных областей. Лично я почти не сталкивался с Julia кроме как на уровне примеров кода, но хорошо если он кому-то нравится и полезен.
- Data-Driven Scrollytelling with Quarto [5] визуализация дата-историй с помощью движка Quarto, итоги конкурса таких визуализаций с большим числом примеров и победителей. Примеры все от команды компании Posit которая этот open-source движок Quarto и разрабатывает. Скажу отдельно что это очень правильно. Если ты делаешь любой движок по визуализации, то просто обязательно надо проводить такие конкурсы.
- The Best Way to Use Text Embeddings Portably is With Parquet and Polars [6] ещё один обзор о том насколько эффективен Parquet в связке с Polars для работы с данными, в данном случае данными карт Magic of the Gathering. Автор тоже задаётся вопросом о том почему Parquet не поддерживается в MS Excel.
- How to Make Superbabies [7] особенно длинный лонгрид о том как генетическими изменениями можно улучшать человека, создавать супер детей или "оптимизированных детей", как ещё пишет автор. Читать и думать об этом надо потому что всё идёт к тому что скоро это станет ещё одной острой социальной и геополитической темой.

Ссылки:
[1] https://github.com/Goldziher/kreuzberg
[2] https://github.com/akmalsoliev/Validoopsie
[3] https://scripton.dev/
[4] https://lwn.net/Articles/1006117/
[5] https://posit.co/blog/closeread-prize-winners/
[6] https://minimaxir.com/2025/02/embeddings-parquet/
[7] https://www.lesswrong.com/posts/DfrSZaf3JC8vJdbZL/how-to-make-superbabies

#opensource #data #datatools #dataviz #genetics #python
👍9❤‍🔥2
Полезное чтение про данные, технологии и не только:
- DuckLake standard 0.2 обновлённая спецификация озера данных на базе DuckDB, любопытно, всё жду обзоров сравнения нескольких технологий построения подобных озер. Они больше для корпоративной аналитики чем для работы со статическими данными, но тем не менее.
- What CoPilot Won’t Teach You About Python (Part 1) полезные трюки для тех кто программирует на Python и хочет знать новые лайфхаки. Заголовок, конечно, так себе ибо LLM многое из этого умеют
- Finding a job as a product engineer про культуру работы продуктовых инженеров и компании которые продвигают и реализуют такой подход. Если кратко то это совмещение ролей product owner'а и developer'а. Идея мне нравится, вот только найти таких людей непросто
- Notate.so ИИ помощник для рассуждений над любым текстом в сети, работает как расширение для браузера и интегрирован с Obsidian. Идея любопытная, в идеале бы local first версию интегрированную с локальной версией Obisidian

#python #readings #daata #datalake #products #notes
71🤔1
The State of Python 2025 результаты исследования на основе опросов Python разработчиков от команды PyCharm.

Ключевые выводы:
1. 51%+ разработчиков используют Python для работы с данными
2. Существенный рост использования FastAPI
3. Каждый третий разработчик контрибьютит в открытый код
4. Существенный рост числа модулей на Python написанных на Rust
5. Среди баз данных доминирует PostgreSQL
6. Почти половина разработчиков уже используют или планируют использовать AI агентов

#opensource #python #trends
👍81
Вышел Python 3.14.0 — это новая крупная версия языка программирования Python, выпущенная официально в октябре 2025 года. Она включает множество новых функций и оптимизаций по сравнению с Python 3.13:

- Официально поддерживается free-threaded режим (PEP 779), который снимает необходимость глобальной блокировки интерпретатора (GIL), что существенно улучшает многопоточную производительность.
- Введены шаблонные строковые литералы (PEP 750) для кастомной обработки строк, похожие на f-строки.
- Аннотации теперь вычисляются отложенно (PEP 649), улучшая работу с импортами.- Добавлен новый модуль compression.zstd с поддержкой алгоритма сжатия Zstandard (PEP 784).
- Улучшена поддержка UUID, добавлены версии 6-8, и генерация версий 3-5 стала до 40% быстрее.
- Встроенная реализация HMAC с формально проверенным кодом.
- Добавлен безопасный интерфейс для внешнего отладчика без накладных расходов (PEP 768).
- Появился экспериментальный JIT-компилятор в официальных сборках для macOS и Windows.
- Появились официальные бинарные сборки для Android.
-- Улучшения в работе с несколькими интерпретаторами и новый тип интерпретатора для современных компиляторов с ростом производительности.
- Улучшены сообщения об ошибках и стандартные библиотеки.

Всё выглядит как полезные изменения, переходить на эту версию пока рано, но скоро будет возможно

#python #datatools #dataengineering
👍11🔥2
Возвращаюсь к взгляду на Python как на медленный язык уже взглядом технического директора и человека формирующего технические команды я бы сказал так что специалисты способные писать на нём оптимизированный код стоят столько же сколько специалисты владеющие Rust и другими оптимизированными языками разработки, более заточенными на высокопроизводительные решения.
Для обработки данных сейчас Python совсем не медленный язык, он становится гораздо быстрее в связке с библиотеками на Rust и знанием некоторых архитектурных подходов которые помогают в работе.

Python сейчас - это основной язык работы для дата инженеров и дата аналитиков, знание способов его оптимизации даёт много возможностей по его ускорению.

#python #thoughts #memories
217👍4👏432
Тем временем политика добралась и до Python Software Foundation (PSF). На днях от отказались от $1.5 миллионого гранта NSF (National Science Foundation) в США поскольку по условиям NSF потребовали отказаться от любой поддержки инициатив DEI, причем не только в рамках гранта, но и в любой другой активности фонда.

Лично мне активное продвижение DEI никогда не нравилось, но тут про разные крайности этого политического маятника. При демократах в США DEI всячески поощрялось в том числе через условия в грантах, при Трампе наоботот, DEI активно неодобряется.

И промежуточных вариантов нет, или налево, или направо, и в PSF решили что идти направо для них будет слишком и лишились $1.5 миллиона на 2 года, а это немало ибо их общий годовой бюджет составляет около $5 миллионов, а грант предполагалось потратить на повышение безопасности репозитория пакетов PyPi.

Да, политика добирается до всех нас, где бы мы не находились.

#python #dei #politics
😢1132👍2😱1
Я на днях также решил проверить на практике вайб-кодирование применение ИИ в разработке и с помощью Cursor обновил и выпустил новую версию iterabledata библиотеки для Python с помощью которой можно можно одинаковым образом читать файлы csv, json, bson, parquet, xls, xlsx и xml так что ты перебираешь объекты возвращается как Python dict. Для тех кто пользовался csv.DictReader или библиотекой jsonlines это должно быть очень понятно.

Я эту библиотеку когда-то делал как ядро для утилит metacrafter и undatum с помощью которой с их помощью можно было анализировать условно любые файлы с данными сжатыми чем-угодно.

В этом собственно отчасти и есть задумка. Наборы данных часто распространяются сжатыми Gzip, Bzip2, LZMA, Brotli или Zstandard, а инструменты для датафреймов или движки вроде duckdb имеют ограничения на поддержку форматов. Также часто данные имеют не utf8 кодировку и вообще удобнее работать в унифицированном интерфейсе.

Так что я написал унифицированные интерфейсы для кодеков сжатия и для типов данных. Заодно написал пример того как преобразовать дампы Википедии из сжатого XML в JSON lines.

Оговорюсь что это пример практического интрумента, то есть реально делаешь то чем пользуешься повсеместно. Для не самых высокопроизводительных задач где нужна многопоточность он весьма полезен.

А теперь с помощью Cursor'а:
- обновил документацию, переформатировал, добавил примеров
- добавил примерно +30% тестов
- исправил несколько ошибок
- проанализировал каких тестовых данных нехватает, запланировал их добавить чтобы покрыть тестами почти все кейсы

Первое что я могу сказать это то что Cursor даёт очень хорошие результаты во всех задачах написания тестов, документирования и анализа кода. Неидеально, но очень неплохо.

Второе что писать сам код я бы не доверил поскольку бывает разная сложность и архитектурная логика и ИИ агенты понимают её лишь отчасти. Я пока не понимаю когда произойдет качественный переход ИИ агентов к пониманию архитектуры программных приложений и основных принципов их построения, но это не кажется нереалистичным.

Третье, следующая эволюция ИИ агентов для разработки явно должна быть на уровне снижения сложности тех задач которые реально требуют заморочится и часто это не задачи разработки. ИИ агент может проводить "оценку разумности" создаваемого и глубже понимать стратегические цели, а не только тактические решения. Например, ИИ агент может посмотреть на код и понять что это библиотека для Python, подтянуть рекомендации для этих библиотек, проанализировать зависимости, предложить автоматизировать тестирование под разные платформы и так далее.

#ai #coding #python #datatools #opensource
👍13❤‍🔥1