Ivan Begtin
7.98K subscribers
1.81K photos
3 videos
101 files
4.52K links
I write about Open Data, Data Engineering, Government, Privacy, Digital Preservation and other gov related and tech stuff.

Founder of Dateno https://dateno.io

Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Secure contacts ivan@begtin.tech
Download Telegram
Из любопытных инструментов, в Hex, онлайн сервисе тетрадок для машинного обучения, появились no-code cells [1], это когда вместо написания Python или SQL можно выбрать интерактивно параметры, а сервис сам сгенерирует код.

Выглядит удобно как гибридный инструмент, и для тех кто напишет код сам, и для тех кому угодно не в виде кода, и для тех кто поправит за вторыми, то что они не могут сами.

Наступает время гибридных инструментов!

Ссылки:
[1] https://hex.tech/blog/introducing-no-code-cells

#datatools #sql #python
В журнале IEEE Spectum вышел обзор Top Programming Languages 2022 [1] о самых популярных языках программирования по категориям сводного рейтинга (spectrum), вакансий и трендов.

Там же у них методика [2] на основе частотности упоминаемости на различных ресурсах и

Python на 3-м месте в вакансиях и на первом в остальных. Чему я лично рад, поскольку Python вот уже много лет мой любимый язык программирования, не удивительна популярность Java, а вот SQL резко выбился в лидеры востребованности у работодателей.

В том же журнале об этом отдельная статья The Rise of SQL [3], но там даже не упоминают Modern Data Stack, унификацию языка запросов, восхождение dbt и тд. В общем у меня нет ощущения значительной глубины понимания из той заметки, но, их взгляд на происходящее имеет право на существование.

Для сравнения в исследовании JetBrains за прошлый год на первом месте был Javascript [4] и мне лично, наоборот, это не нравится, JS вообще не вызывает у меня симпатии с самого его зарождения. И у JetBrains в исследованиях гораздо популярнее и востребованнее Go и Rust и другие молодые языки разработки.

Поэтому к публикации в IEEE Spectrum надо бы относится с долей осторожности, но изучать и преподавать Python никогда не поздно;)

Ссылки:
[1] https://spectrum.ieee.org/top-programming-languages-2022
[2] https://spectrum.ieee.org/top-programming-languages-methods
[3] https://spectrum.ieee.org/the-rise-of-sql
[4] https://www.jetbrains.com/lp/devecosystem-2021/

#python #languages #programming
В качестве регулярных напоминаний, хотя и разработка кода не основное моё занятие, я довольно много публикую открытого кода, более всего для обработки данных. В первую очередь для поддержания собственных навыков в Python и для того чтобы были инструменты для того что сам же делаешь.

Работа с данными
- datacrafter - ETL движок для NoSQL данных с обработкой их с помощью конфигурационных файлов написанных на YAML. Заход на аналог Meltano или Dagster, но для NoSQL. Используется в datacrafter.ru
- apicrafter - автоматизированная оболочка для генерации REST API для доступа к данным в базах MongoDB. Используется в datacrafter.ru
- metacrafter - утилита по автоматической идентификации семантических типов данных. Используется для идентификации персональных данных в наборах данных. Поддерживает базы данных с SQL, файлы JSON, CSV, JSON lines, BSON и MongoDB
- undatum - утилита для командной строки для обработки иерархических данных в JSON lines и BSON. Поддерживает также CSV, но это не основная возможность. Позволяет считать статистику, извлекать частоты значений, уникальные значения, преобразовывать данные
- mongorefine - экспериментальная библиотека для Python по обработке данных в MongoDB как если бы MongoDB была бы колоночной, а не документальной базой. Позволяет проводить операции над коллекциями данных на колоночном уровне: добавлять, удалять, преобразовывать. Функции похожи на функции OpenRefine, известного открытого инструмента для подготовки данных
- mongo2md - утилита и библиотека для Python по автоматическому документированию коллекций для MongoDB
- diffmongo - библиотека для Python по сравнению данных в коллекциях MongoDB

Парсинг и сбор данных
- newsworker - библиотека для Python по автоматическому извлечению текстов новостей из сайтов где нет RSS лент. Работает полностью автоматически, разбирает структуру страницы, идентифицирует картинки, даты, тексты и формирует новостную ленту. Использует библиотеку qddate
- qddate - библиотека для Python для автоматической идентификации дат в любом написании. Умеет распознавать более 300 форматов на многих языках. Используется во многих других репозиториях и проектах.
- russiannames - библиотека для Python по автоматическому парсингу имён на русском языке, идентификации гендера и немножко национальных признаков. Умеет идентифицировать ФИО в форматах "Иван Петров", "Сидоров Иван Петрович", "Иванов В.А.", "Иванова А." и тд. Включает большую базу фамилий, имен и отчеств.
- docx2csv - библиотека для Python и утилита извлечения таблиц из файлов docx. Очень удобна для генерации CSV файлов из разного рода корпоративных и госотчетов. Но только для docx
- lazyscraper - утилита командной строки по быстрому извлечению таблиц и иных данных из веб-страниц с минимальными усилиями кодирования. Фактически только через написание xpath запроса. Изначально хотелось сделать её ещё более умной, но и это оказалось полезным.

Работа с веб-архивами и цифровая архивация
- metawarc - утилита для автоматизации обработки WARC файлов. Изначально создавалась в целях расследований для автоматизации извлечения свойств файлов MS Office и PDF из веб-архивов. Когда ты вначале всё архивируешь, а потом уже из веб архива собираешь метаданные. Я с её помощью проводил исследования использования пиратского ПО в российских госорганах несколько лет назад.
- apibackuper - утилита по автоматизации выгрузки данных из общедоступных API. Используется в Национальном цифровом архиве и в datacrafter.ru для формирования наборов данных
- ydiskarc - утилита для архивации данных по публичным ссылкам на Яндекс диск. Используется в Национальном цифровом архиве для архивации папок с Яндекс Диска
- wparc - утилита по архивации контента сайтов на Wordpress и медиа файлов с этих сайтов посредством встроенного в Wordpress REST API. Используется в Национальном цифровом архиве
- spcrawler - утилита по выгрузке данных из сайтов на базе Sharepoint используя их общедоступное API. Не завершена, но в работе.

#opensource #datatools #data #commandline #python
Особенно интересное на конференции Coalesce - это публичный анонс моделей данных на Python. Об этом в презентации их продуктовой команды [1] и можно найти на сайте конференции [2] запись выступления, по ключевым словам "Announcing dbt's Second Language: When and Why We Turn to Python". По моему, пока доступно только после регистрации на сайте, но может уже выложили или скоро выложат для всех.

Хотя и поддержка моделей данных на Python там в зачаточном уровне, новость эта замечательна для тех кто не любит SQL или любит его сильно меньше чем программировать на Python. Например, я языки запросов к данным вроде SQL люблю сильно меньше чем обработать данные на скриптовом или ином языке программирования. Это сила привычки и вопрос доступности инструментов.

Авторы пока заявляют о том что эти модели в самом зачаточном виде, но с ними уже можно работать.

По ним уже есть документация [3], чат и дорожная карта.

Лично для меня главным недостатком dbt остаётся то что это инструмент, как и pandas, для работы с табличными (плоскими) моделями данных.

И, важно, конечно, помнить что самые продвинутые возможности по удобству они реализуют в своём dbt cloud IDE которое постепенно превращается в облачную среду подготовки данных [4].

Ссылки:
[1] https://docs.google.com/presentation/d/1e3wB7EQ0EXugGhfCjVCp_dDFEbY_uKyVjMqG1o7alnA/edit?usp=sharing
[2] https://coalesce.getdbt.com/
[3] https://docs.getdbt.com/docs/building-a-dbt-project/building-models/python-models
[4] https://docs.google.com/presentation/d/11-71MIh9ASGM2n-i0KxXc_yf6w1tq0l1bUobWdnfloY/edit?usp=sharing

#data #datatools #dbt #python #datamodelling
Полезное чтение про данные, технологи и не только:
- Restfox [1] аналог Postman с открытым кодом, позволяет настраивать и тестировать работу с API. До уровня Postman не дотягивает, но выглядит неплохо
- Python 3.11.0 is released — Impacts to Data Science and Engineering [2] - коротко о том почему надо прямо сейчас обновлять Python до 3.11. Если кратко: быстрее на 10-60%, лучше управление ошибками и много изменения затрагивающих работу с данными.
- Hertz [3] фреймворк для Go по созданию микросервисов. Давно пора переводить микросервисы на Go и Rust.
- Data Catalogs Are Dead; Long Live Data Discovery [4] очередной текст в копилку хайпа про смерть корпоративных каталогов данных и развитие data discovery. Будем честными, ещё каталоги то мало где внедрены, а тут сразу data discovery. Автор Barr Moses, CEO стартапа Monte Carlo, так что текст нельзя считать независимым. Но почитать стоит
- Open Source Law, Policy & Practice [5] вышла вторая редакция книжки про регуляторное регулирование открытого кода. Книга полезная, но как же она далека от госполитики в постсоветских странах! В открытом доступе, к сожалению, нет. Только заказывать за деньги, но если интересуетесь законами про open source, то читать стоит.

Ссылки:
[1] https://github.com/flawiddsouza/Restfox
[2] https://medium.com/codex/python-3-11-0-is-released-impacts-to-data-science-and-engineering-2d6c474611f4
[3] https://github.com/cloudwego/hertz
[4] https://medium.com/towards-data-science/data-catalogs-are-dead-long-live-data-discovery-a0dc8d02bd34
[5] https://global.oup.com/academic/product/open-source-law-policy-and-practice-9780198862345?cc=gb&lang=en&#the

#opensource #datatools #data #python #datacatalogs #datadiscovery
Для тех кто любит программировать на Python и не любит Javascript не могу не рассказать о таком проекте как PyScript [1], код для исполнения кода Python'а на стороне браузера. Включает как простые, так и сложные примеры [2], а также по нему есть огромное руководство с кучей подробностей [3].

Признаюсь, я лично, никогда не любил разработку фронтэнда именно из-за Javascript'а, какое-то сильное чувство отторжение у меня вызывало его использование, так что не только Javascript'у проникать на сервер, но и Python'у в браузер.

А их свежего и любопытного - руководство по написанию расширений для Google Chrome с помощью PyScript [4].

Почему это важно? Многие продукты по обработке и визуализации данных не сервере написаны на Python. Если PyScript будет работать с хорошей производительностью, то часть задач обработки можно будет перенести в браузер и поддерживать единую кодовую базу.

Пока единственное ограничение в том что PyScript более-менее оттестирован в Chrome, но даже в Firefox'е его активно не проверяли.

Тем не менее, экспериментировать можно уже сейчас.

Ссылки:
[1] https://pyscript.net
[2] https://pyscript.net/examples/
[3] https://realpython.com/pyscript-python-in-browser/#modules-missing-from-the-python-standard-library
[4] https://medium.com/@petefison/write-chrome-extensions-in-python-6c6b0e2e1573

#opensource #python #programming
В рубрике полезного чтения про данные, технологии и не только:
- Generating income from open source [1] автор перечисляет успешные бизнес модели на открытом коде, вроде ничего нового, но и систематизация вполне неплохая. Полезное чтение для всех кто об этом думает.
- Data Documentation 101: Why? How? For Whom? [2] зачем, как и для кого описывать данные и связанную с ними инфраструктуру. Мысли более чем разумные, а я добавлю что автоматизация - это то без чего не выжить в мире документации. Жду не дождусь когда сделают ИИ который за тебя задокументирует код, API, данные и оставит пояснения где ещё надо вручную поправить потому что непонятно.
- The Data Journey Manifesto [3] 22 принципа из мира дата-аналитики. Все как бальзам на душу: не тестируй качество данных вручную, не доверяй поставщикам своим, знай как должно быть и как не должно быть, находи проблемы быстро. Хорошие тезисы, стоит на разные языки их перевести
- DashQL -- Complete Analysis Workflows with SQL [4] научная статья про DashQL язык интегрированный с SQL для построения цельных аналитических конвейеров данных. Статья любопытная, но хочется сразу ненаучного, а так чтобы примеры можно было посмотреть и эксперименты поделать
- Survey reveals AI’s impact on the developer experience [5] исследование от Github о том как разработчикам нравятся ИИ инструменты. Тут есть, конечно, некоторая циничность. Это примерно как если бы Google делал исследование о том как люди любят пользоваться поиском или Microsoft о том как люди любят писать тексты. Тем не менее любопытное там есть, области применения ИИ инструментов и ожидания от них.
- StackOverflow 2023 developer survey [6] результаты опроса разработчиков от StackOverflow, в случае данных два главных навыка остаются критично важными - это Python и SQL. Они же лидируют в общем зачёте, уступая только HTML/CSS и Javascript. Обратите внимание что у профессиональных разработчиков SQL важнее и чаще нужен чем Python, а у начинающих наоборот, Python с большим отрывом. Учите SQL если кратко;)

Ссылки:
[1] https://vadimdemedes.com/posts/generating-income-from-open-source
[2] https://towardsdatascience.com/data-documentation-101-why-how-for-whom-927311354a92
[3] https://datajourneymanifesto.org
[4] https://arxiv.org/abs/2306.03714
[5] https://github.blog/2023-06-13-survey-reveals-ais-impact-on-the-developer-experience/
[6] https://survey.stackoverflow.co/2023/

#readings #python #data
Прекрасная история преподавателя на Python у которого навсегда забанили аккаунт для рекламы его курсов на Facebook [1] предположив что курсы про Python и Pandas - это курсы про работу с живыми питонами и пандами. Причём сделали это даже после ревью его аккаунта который однозначно показывал что его владелец учит программированию за деньги, а не дрессирует диких животных.

Что интересно так это то что из текста можно узнать о том что Facebook придерживается политики удаления данных в течении 180 дней и поэтому когда через год он через знакомых в Facebook'е попросил узнать за что же его забанили и как разбанить, оказалось что этих сведений уже нет. Пожизненная блокировка есть, а обоснований её уже нет.

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

Ссылки:
[1] https://lerner.co.il/2023/10/19/im-banned-for-life-from-advertising-on-meta-because-i-teach-python/

#python #stories #facebook
Данные которые не скачать напрямую, но которые всё ещё открытые данные.

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

Те кто занимается задачами по 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
Хорошая статья [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