Ivan Begtin
7.98K subscribers
1.8K photos
3 videos
101 files
4.51K 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
О секретах популярности языка Python в сентябрьском исследовании от StackOverflow [1]. В качестве спойлера - главная причина в pandas [2], проекте поддерживаемом NUMFocus [3], организации поддерживающей качественные open source проекты полезные для науки.

В исследовании Stack Overflow это хорошо заметно, значительный прирост пользователей у Python происходит из аудитории "Academics" - это преподаватели, студенты и исследователи из университетской среды. Что и говорить, pandas - это отличный продукт по работе данными и полезный для любых задач анализа и обработки данных.

Ссылки:
[1] https://stackoverflow.blog/2017/09/14/python-growing-quickly/
[2] http://pandas.pydata.org/
[3] https://www.numfocus.org/open-source-projects/

#opendata #python #data
Jetbrains и Python Software Foundation опубликовали результаты опроса разработчиков на языке Python [1] в котором получили множество ответов и сформировали картину-образ сообщества.

Из интересного и ожидаемого - Python наиболее активно используется для веб-разработки и анализа данных.

В задачах Data Analysis и Machine Learning наиболее заметный рост. На сегодняшний день Python - это язык с невысоким порогом входа для обучения и огромным числом готовых пакетов для обработки данных.

И, конечно же, первичные анонимизированные данные опроса также опубликованы [2].

Если Вы хотите поучиться программировать, но не знаете чему, то попробуйте начать с Python. Это очень хороший стартовый язык, после него несложно учить более тяжелые языки вроде Java и C++, а для задач в обработке данных он годится сразу же.

Ссылки:
[1] https://www.jetbrains.com/research/python-developers-survey-2017/
[2] http://jb.gg/pythondevsurvey2017raw

#python #polls #data
Для тех кто работает с данными, полезная визуализация и база знаний по библиотекам на Python для работы с данными [1].

Ссылки:
[1] https://community.ibm.com/community/user/datascience/blogs/paco-nathan/2019/03/12/a-landscape-diagram-for-python-data

#python #data
Вышла новая версия Jupiter Notebook, под новым названием Jupiter Book [1]
Из новых возможностей:
- переход на язык разметки MyST Markdown [2]
- новая система сборки с поддержкой Jupiter Cache [3], запускающая исполнение notebook'а только при изменении кода
- больше интерактивности
- возможность сборки с командной строки

Jupiter Book - это стандарт де-факто для работы аналитиков и специалистов по data science и изменения в нём важны для всех кто работает с данными на регулярной основе.

UPD. Как меня поправляют читатели, это не новая версия версия Jupiter Notebook, но возможность преобразовывать .ipynb в книжке в виде новой версии инструмента. Что, впрочем, не отменяет его полезность.

Ссылки:
[1] https://blog.jupyter.org/announcing-the-new-jupyter-book-cbf7aa8bc72e
[2] https://myst-parser.readthedocs.io/en/latest/
[3] https://jupyter-cache.readthedocs.io/

#data #datascience #python
Те кто работал когда-либо с многочисленными библиотеками в языке Python знают про то как часто там одними и теми же словами называется разное или разными словами одинаковое и как оно часто несовместимо между собой.

Команда из Quansight Labs [1] сформировала консорциум по унификации API по работе с данными в языке Python [2], при поддержке таких компаний как Intel, Microsoft, Tensorflow, Google Research и других. О том почему это так важно и сколько накопилось отличий между библиотеками numpy, cupy, dask.array, jax, mxnet, pytorch и tensorflow они пишут в блоге этого консорциума [3]

Это хорошая инициатива, с открытым кодом [4] и полезными результатами для сообщества.

Ссылки:
[1] https://labs.quansight.org/
[2] https://data-apis.org
[3] https://data-apis.org/blog/announcing_the_consortium/
[4] https://github.com/data-apis

#python #data
В рубрике интересных инструментов по работе с данными Mercury [1], утилита по преобразованию тетрадок с Python в веб приложения и возможностью запуска их с определёнными параметрами.

Выглядит любопытно и есть живое демо [2], может быть полезно для разного рода способов публикации, например, студенческих работ или работ на хакатонах/конкурсах.

А может и другие применения есть.

Ссылки:
[1] https://github.com/mljar/mercury
[2] http://mercury-demo-1.herokuapp.com/

#datatools #notebooks #python #opensource
В рубрике интересные продукты с открытым кодом Grist, открытая альтернатива Airtable, инструмент работы с таблицами [1].
Функции очень похожи:
- быстро и с нуля построить базы данных (аналог Access, только в вебе)
- гибкое управление правами доступа к данным
- визуализировать данные, строить отчеты
- делиться данными с другими

Ну и конечно замена Excel во всём что касается редактирования таблиц. Авторы также подготовили обзора сравнений в Airtable [2] и кроме открытого кода предлагают облачный сервис GetGrist [3] где можно его потестить. Конечно из России использовать облако затруднительно, оплата там в долларах США.

Из больших плюсов продукта поддержка формул на Python с полной поддержкой Python’s standard library [4]

Ссылки:
[1] https://github.com/gristlabs/grist-core
[2] https://www.getgrist.com/blog/grist-v-airtable/
[3] https://www.getgrist.com/
[4] https://support.getgrist.com/formulas/#python

#data #tools #spreadsheets #opensource
Из любопытных инструментов, в 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