Мы скачали 10 миллионов Jupyter-ноутбуков с Github — и вот что мы выяснили

Привет, Хабр!  

На связи команда Datalore by JetBrains. Хотим поделиться с вами результатами анализа нескольких миллионов публично доступных репозиториев Github с Jupyter-ноутбуками. Мы скачали ноутбуки, чтобы немного больше узнать в цифрах о текущем статусе, пожалуй, самого популярного инструмента для data science.

b7d9286fa0a13c9ada4b4ba0e5ef8b0d.png

Вдохновившись исследованием, проведенным командой Design Lab из UC San Diego, мы дважды скачали Jupyter-ноутбуки: в октябре 2019 и в октябре 2020. 

Два года назад в открытом доступе было 1,23 миллиона ноутбуков. В октябре 2020 года число ноутбуков выросло в 8 раз, и мы смогли скачать 9,72 миллиона файлов. Этот датасет мы сделали публичным — инструкцию по скачиванию можно найти в конце поста.

Все цифры и графики были подсчитаны в этом Datalore ноутбуке. Datalore — это онлайн Jupyter-ноутбуки с умной поддержкой кода, которые мы делаем в JetBrains. Вы можете создать копию ноутбука, перейдя по ссылке, и работать с данными в Datalore.

Мы будем рады, если вы захотите поработать с данными и провести собственный анализ. Делитесь с нами результатами, отмечая в Твиттере @JBDatalore или написав нам на contact@datalore.jetbrains.com. 

Теперь перейдем к цифрам.

Язык data science

Несмотря на большой рост популярности R и Julia в последние годы, Python остается лидирующим программным языком для Jupyter-ноутбуков.

Помимо этого встречаются ноутбуки, написанные на Bash, MatLab и Scilab, а также на языках, с которыми ноутбуки ассоциируются, пожалуй, в последнюю очередь: Scala, C++ и Java.

На графике можно посмотреть распределение языков программирования в ноутбуках. Ноутбуки, язык которых не был указан в метаданных, относятся к категории «nan».

0338e87ae13ad315989b0e2a2188e2ce.png

В табличке можно увидеть разницу в процентах использования Python 2 и Python 3 в ноутбуках в 2018, 2019 и 2020 годах.

Python 2

Python 3

Other languages

Исследование 2018

52,5%

43,8%

3,7%

Исследование 2019 (JetBrains Datalore)

18,1% (всего 1029 K)

72,6% (всего 4128 K)

9,3% (всего 529 K)

Исследование 2020 (JetBrains Datalore)

11,8% (всего 1154 K, +125 K к 2019)

79,3% (всего 7710 K, +3582 K к 2019)

10,8% (всего 1050 K, +521 K к 2019)

Количество ноутбуков, написанных на Python 3, увеличилось с 2019 года на 87%, а количество ноутбуков с Python 2 — на 12%.

На графике ниже можно увидеть распределение количества ноутбуков, написанных на Python и R, по версиям языков:

d69554240ae8e81548540e9d43addf39.png

Топ библиотек data science

Чтобы помочь пользователям Datalore начать работу с ноутбуками как можно быстрее, мы предустановили самые используемые Python-библиотеки. Для этого мы посчитали статистику импортов в скачанных Jupyter-ноутбуках.

Не оказалось неожиданностью, что 60% ноутбуков содержат в списке зависимостей Numpy, 47% импортируют Pandas и Matplotlib.

Более подробную информацию можно увидеть на графике:

e0559df7e78e703511144589d1bbda38.png

Самые популярные комбинации библиотек:

da0e306e4ecf52705dcc6dceba5b2d43.png

Рост PyTorch и TensorFlow

Члены нашей команды интересуются библиотеками для глубинного обучения, и мы решили сравнить рост библиотек PyTorch и TensorFlow.

Из таблицы ниже можно увидеть, что число импортов у PyTorch растет значительно быстрее, чем у TensorFlow.

В то же время нужно учитывать, что библиотека Keras может использовать TensorFlow в качестве транзитивной зависимости, а Fast.ai использует PyTorch в качестве зависимости. Это означает, что скорость роста TensorFlow, вероятно, выше, но мы не можем говорить с уверенностью, какая из библиотек больше использовалась в последние годы.

TensorFlow

Keras

PyTorch

Fastai

Исследование 2019 (JetBrains Datalore)

321 K

231 K

110 K

19 K

Исследование 2020

(JetBrains Datalore)

430 K (+34%)

367 K (+59%)

253 K (+130%)

25 K (+32%)

Содержание ячеек в ноутбуках

Немного общих цифр относительно ячеек (данные подсчитаны для ноутбуков, написанных на Python 3.6 и выше):

  • 71,90% ноутбуков содержат Markdown.

  • 42,13% ноутбуков содержат графики или картинки в output.

  • 12,34% ноутбуков содержат LaTex.

  • 19,77% ноутбуков содержат HTML.

  • 20,63% ноутбуков содержат код внутри Markdown.

Markdown очень широко используется в Jupyter-ноутбуках. 50% ноутбуков содержат более 4 ячеек Markdown и более 14 ячеек кода. 

Графики ниже показывают распределения Markdown-ячеек и ячеек с кодом:

9a31397c431a770c872a801e36f652f2.pngac1167a5981bdb03a9d056ad6bec4e4c.png

На графике ниже можно увидеть распределение количества строк кода. Хотя существуют отдельные экземпляры ноутбуков, имеющие более 25 000 строк кода, 95% ноутбуков содержат менее 465 строк:

99e01087bc3912a49346688e757b1fe6.png

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

6d72e0fa00d47c67a8676dd3dfdc6b3a.png

Воспроизводимость Jupyter-ноутбуков

Для Jupyter-ноутбуков существует проблема — не всегда готовый ноутбук можно воспроизвести. Зачастую это означает, что ячейки были выполнены автором не в прямой последовательности. Мы проверили порядок выполнения ячеек кода всех доступных Jupyter-ноутбуков и выяснили, что 36% Jupyter-ноутбуков выполнены в нелинейном порядке, т. е. при исполнении кода линейно результат выполнения может отличаться.

Мы стали смотреть детальнее, зависит ли порядок выполнения кода в ноутбуке от количества Markdown-ячеек и ячеек кода. Не удивительно, но оказалось, что, чем меньше ячеек кода в ноутбуке, тем меньше вероятность, что код выполнен в линейном порядке.

a776de899dd967aa902c02d39353c2d4.png

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

Мы надеемся, что статья была для вас интересной и вдохновила на дальнейший анализ. Посмотреть, как мы получили графики и цифры, можно в этом Datalore-ноутбуке.

Ссылки

Предыдущее исследование 2018 года

Ноутбук в Datalore с предобработанными данными

Инструкция по получению доступа к данным:

  1. Скачайте оригинальный датасет:

    1. Ссылка для скачивания исходных данных из бакета (10 млн файлов, 4,4 ТБ): https://github-notebooks-update1.s3-eu-west-1.amazonaws.com/

    2. Получение списка файлов c помощью AWS S3 API может занять время, поэтому воспользуйтесь этим JSON со всеми именами файлов: https://github-notebooks-samples.s3-eu-west-1.amazonaws.com/ntbslist.json

    3. Добавьте имя файла из JSON к адресу бакета, чтобы получить прямую ссылку, например: https://github-notebooks-update1.s3-eu-west-1.amazonaws.com/0000036466ae1fe8f89eada0a7e55faa1773e7ed.ipynb

  2. Или воспользуйтесь предобработанными данными из исследования (3 ГБ). Файлы доступны в этом Datalore-ноутбуке.

© Habrahabr.ru