JupyterLab и Jupyter Notebook — мощные инструменты Data Science

Подробно рассказываем об инструментах семейства Jupyter – эффективных средствах разработки для задач Data Science и смежных областей.

JupyterLab и Jupyter Notebook — мощные инструменты Data Science

В конце февраля был выпущен релиз JupyterLab – гибкой, интегрируемой и легко расширяемой среды, поддерживающей одновременную работу с несколькими блокнотами Jupyter, текстовыми файлами, датасетами, терминалами и другими компонентами. Аналогично классическим IDE в JupyterLab можно упорядочивать документы в рабочей области в удобном порядке при помощи вкладок и разделителей.

JupyterLab поддерживает отображение и редактирование множества форматов данных: изображений, CSV, JSON, Markdown, PDF, Vega, Vega-Lite и так далее. Для быстрой навигации по документам в JupyterLab есть настраиваемые горячие клавиши, а также возможность использования стандартных сочетаний из vim, emacs и Sublime Text.

JupyterLab может быть дополнен при помощи расширений, позволяющих настроить под себя различные части JupyterLab, включая темы, редакторы файлов и дополнительные компоненты.

Если вы уже знакомы с Jupyter Notebook, то вы очень быстро освоитесь с JupyterLab, которая в существенной мере обогащает возможности классического блокнота Jupyter. Не устанавливая JupyterLab, вы можете ознакомиться с демо-примером на странице Binder – инструменты Jupyter поддерживают запуск на сторонних серверах.

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

Среда JupyterLab может быть установлена при помощи conda, pip или pipenv:

conda

pip

Если вы устанавливаете JupyterLab при помощи pip install —user, вам необходимо добавить директорию bin в вашу переменную окружения PATH, чтобы использовать краткий способ запуска JupyterLab.

pipenv

или из репозитория git:

При использовании pipenv для запуска при помощи jupyter lab вам необходимо предварительно активировать виртуальное окружение проекта.

Запуск сервера JupyterLab из терминала производится следующей простой командой:

При этом интерфейс JupyterLab автоматически открывается в используемом вами браузере. Также вы можете получить доступ к запущенному серверу, введя в адресную строку браузера соответствующую ссылку (по умолчанию это http://localhost:8888). Вы можете открыть классический интерфейс блокнота Jupyter, выбрав “Launch Classic Notebook” из меню Help, или переключаться между интерфейсами, заменяя окончание строки: /lab для интерфейса JupyterLab или /tree для классического интерфейса.

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

Интерфейс JupyterLab состоит из основной рабочей области, содержащей вкладки документов и инструментов, скрываемой левой боковой панели и меню.

JupyterLab и Jupyter Notebook — мощные инструменты Data Science

Меню

Меню по умолчанию выглядит следующим образом:

  • File: действия, касающиеся файлов и директорий
  • Edit: действия, касающиеся редактирования документов и инструментов
  • View: действия, изменяющие внешний вид JupyterLab
  • Run: действия по запуску кода в различных инструментах
  • Kernel: действия над отдельными процессами запущенного кода
  • Tabs: список открытых документов и инструментов с возможностью переключения
  • Settings: общие настройки и редактор продвинутых настроек
  • Help: список ссылок на справочные документы по JupyterLab и ядру

Расширения JupyterLab позволяют создавать дополнительные вкладки в панели меню.

Боковая панель

Боковая панель содержит браузер файлов (Files), список запущенных инструментов (Running), палитру команд (Commands), инспектор инструментов ячеек блокнота (Cells) и списка вкладок (Tabs).

JupyterLab и Jupyter Notebook — мощные инструменты Data Science

Процесс «схлопывания» боковой панели происходит по клику на открытой вкладке, как это проиллюстрировано в коротком видео ниже.

[embedded content]

Использование расширений JupyterLab также позволяет добавлять в боковую панель дополнительные вкладки.

Основная рабочая область

Основная рабочая область позволяет группировать документы (блокноты, текстовые файлы и пр.) и другие инструменты (терминалы, консоли и т. д.) в виде панелей с вкладками, размер и расположение которых можно изменить перетаскиванием.

[embedded content]

Вкладки и режим работы с отдельным документом

Вкладка Tabs в боковой панели показывает список открытых документов и инструментов в рабочей области:

JupyterLab и Jupyter Notebook — мощные инструменты Data Science

Эта же информация доступна на вкладке Tabs в menu:

JupyterLab и Jupyter Notebook — мощные инструменты Data Science

Часто полезно сфокусироваться на отдельном документе и инструменте без того, чтобы закрывать все остальные вкладки в рабочей области. Для этого в JupyterLab есть режим работы с отдельным документом. Его можно запустить из панели View («Single-Document Mode») или воспользоваться сочетанием горячих клавиш (по умолчанию Ctrl+Shift+Enter).

[embedded content]

Контекстные меню

Многие составляющие JupyterLab, такие как блокноты, текстовые файлы, консоли и вкладки, имеют собственные контекстные меню.

[embedded content]

Для использования оригинального контекстного меню браузера при вызове контекстного меню зажимайте Shift.

Горячие клавиши

Аналогично классическому Jupyter Notebook, вы можете использовать для навигации и запуска инструментов горячие клавиши, которые можно настроить при помощи Advanced Settings Editor в меню в панели Settings.

[embedded content]

Вы также можете настроить текстовый редактор так, чтобы использовать сочетания горячих клавиш из vim, emacs или Sublime Text. Для этого в меню в панели Settings выберите строку Text Editor Key Map.

[embedded content]

Браузер файлов и меню File позволяют открывать, создавать, удалять, переименовывать, скачивать, копировать и делиться файлами и директориями. Файлы открываются стандартно – двойными кликом в браузере файлов из боковой панели.

[embedded content]

Также вы можете перетащить файл в рабочую область, создав таким образом дополнительную вкладку сразу в нужном вам месте.

[embedded content]

Для некоторых типов файлов поддерживаются множественные представления. Например, вы можете открыть файл Markdown в текстовом редакторе или в форме HTML-страницы. Расширения JupyterLab позволяют использовать дополнительные методы просмотра/редактирования различных файлов, добавляя в контекстное меню новые строки «Open With…».

[embedded content]

Удобная особенность JupyterLab заключается в том, что разные представления файла синхронизируются между собой.  То есть, работая, например, с тем же файлом Markdown в редакторе, вы сразу же видите как он отрисовывается в HTML.

[embedded content]

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

[embedded content]

Того же результата можно добиться на вкладке New в меню File.

JupyterLab и Jupyter Notebook — мощные инструменты Data Science

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

[embedded content]

Новый файл создается с именем по умолчанию. Переименовывается файл из контекстного меню браузера файлов или вкладки, на которой открыт файл.

[embedded content]

Файлы также могут быть загружены в текущую директорию переносом их в панель браузера файлов или при помощи кнопки «Upload files» в верхней части браузера файлов.

[embedded content]

Текстовый редактор JupyterLab имеет инструмент подсветки синтаксиса, настройки отступов (табы/пробелы) и сочетаний горячих клавиш.

[embedded content]

Все редакторы Jupyter поддерживают множественный курсор, аналогично, например, Sublime Text. Таким образом, можно существенно быстрее править однотипные части текста и кода.

Блокноты Jupyter (также часто в российском сообществе называемые ноутбуками) представляют собой документы, комбинирующие блоки запускаемого кода с текстом в Markdown-разметке, формулами (LaTeX), изображениями, интерактивными визуализациями и другими форматами выходных данных.

JupyterLab и Jupyter Notebook — мощные инструменты Data Science

Остановимся подробнее на основной особенностях блокнотов Jupyter, сделавших их такими популярными.

Блокноты Jupyter позволяют интерактивно работать с кодом непосредственно в браузере. Блокнот Jupyter состоит из независимо запускаемых ячеек с кодом, которые в результате запуска выполняют содержащийся в ячейке программный код и добавляют в пространство имен соответствующие имена переменных, функций, классов и т. д. Ячейки с кодом можно перемежать ячейками с Markdown-разметкой и, как будет показано далее, ячейками с кодом на различных языках программирования и разметки. Код можно запускать как отдельно для каждой ячейки, так и последовательно от первой ячейки к последней. Вы можете попробовать работу с блокнотами Jupyter на одном из языков Python, Julia или R так же на Binder, независимо от Jupyter Lab и без установки.

Магические функции

Одна из крайне удобных составляющих Jupyter Notebook – это специальные магические функции, облегчающие задачи при добавлении их в начало соответствующих ячеек. Так, например, вставка  %matplotlib inline приводит к автоматическому выводу изображений matplotlib непосредственно в вывод ячейки. Примеры других команд представлены ниже, с полным списком магических функций вы можете ознакомиться здесь.

Тайминг

  • %time – определяет время выполнения команды
  • %timeit – определяет среднее время выполнения команды, многократно повторяя ее
  • %%time – определяет время выполнения ячейки
  • %%timeit – определяет среднее время выполнения ячейки

Профилирование

  • %prun – показывает как много времени подпрограмма тратит в каждой из функций
  • %mprun – трэкинг использования памяти

Логирование

  • %logstart, %logstop – начало и завершение логирования соответственно
  • %logoff, %logon – временная остановка и рестарт логирования
  • %logstate – статус логирования
  • %history – выводит список введенных команд в хронологическом порядке

Дебаггинг

  • %debug – собственный интерфейс для ipdb
  • %pdb – управление автоматическим вызовом pdb

Общие методы магических функций

  • %lsmagic – список доступных магических функций
  • %automagic – включает/выключает возможность вызова магических функций без начального знака процента
  • %magic – выводит информацию о магических функциях системы

Работа с директориями

  • %pwd – вывод текущей рабочей директории
  • %cd – изменить текущую рабочую директорию
  • %bookmark – создание закладок к какой-либо директории (по умолчанию – к текущей)
  • %dhist – вывод истории посещенных директорий
  • %dirs – возвращает текущий стек директорий

Псевдонимы и замены стандартного использования

  • %alias alias_name cmd – определяет псевдоним alias_name для системной команды cmd
  • %alias_magic – создает псевдоним для магической функции, например, %alias_magic t timeit
  • %autocall – делает возможным вызов функций без использования скобок
  • %unalias – удаление псевдонима
  • %macro – позволяет задать имя для последующего перезапуска или сохранения нескольких ячеек

Импорт и экспорт кода

  • %run – выполнение кода из файлов Python и блокнотов Jupyter
  • %load – загрузка кода напрямую в ячейку с использованием локального или сетевого файла
  • %pastebin – загрузка кода ячейки на Github Gist
  • %pfile – печать файла в ячейке
  • %psource – вывод программного кода объекта
  • %save – запись набора строк или macro в файл с заданным именем
  • %%writefile [-a] filename – запись содержимого ячейки в файл filename (опционально -a при добавлении текста в конец файла вместо перезаписи)

Переменные среды и пространство имен

  • %env – управление переменными среды без перезапуска сервера
  • %reset – очистка пространства имен
  • %who – анализ доступных переменных глобального пространства имен
  • %who_ls – вывод отсортированного списка доступных переменных

Вывод документации и поиск информации

  • %pdoc – печать строки документации объекта
  • %pinfo – детализированная информация об объекте (аналог ?object или object?)
  • %pinfo2 – еще более развернутая информация об объекте (аналог ??object или object??)
  • %psearch – поиск объекта в пространстве имен, в том числе по нестрогим правилам

Другие

  • %pprint – включение/выключение pprint
  • %precision – задание точности  и способа отображения чисел
  • %pylab – загрузка numpy и matplotlib для интерактивной работы

Выполнение shell-команд

Блокноты позволяют вызвать любую shell-команду прямо из ячейки. Например, так можно быстро установить недостающую библиотеку:

Запись формул в LaTeX

Markdown ячейки поддерживают отрисовку LaTeX, записываемого стандартным образом при помощи знаков $$.

Использование разных языков

В одном блокноте можно использовать сразу несколько языков программирования. Обозначив это при помощи двух знаков процента в начале ячейки, например, %%python2, %%python3, %%R, %%bash и т. д. Идентичным образом можно получать отрисовку ячеек с кодом в LaTeX, поставив в начале ячейки %%latex. Аналогично служат команды %%html, %%javascript (или %%js), %%markdown, %%ruby, %%sh.

Блокноты Jupyter (.ipynb файлы) полностью поддерживаются в JupyterLab. Формат документов идентичен классическому Jupyter Notebook. Имеющиеся у вас блокноты будут аналогичным образом отображаться в JupyterLab.

[embedded content]

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

[embedded content]

Для удобства работы вы можете временно скрывать и отображать большие куски вывода данных при помощи соответствующей кнопки слева от каждой ячейки.

[embedded content]

Альтернативный вариант просмотра – использование скроллинга или вывода результатов ячейки в отдельную вкладку.

[embedded content]

[embedded content]

Автодополнения по клавише Tab в сравнении с Jupyter Notebook включают дополнительную информацию о типах соответствующих объектов.

[embedded content]

Подсказки, активируемые при помощи Shift Tab содержат дополнительную информацию об объектах.

[embedded content]

Вы также можете подключить консоль, чтобы вести лог сделанных вычислений в том порядке, в каком они были сделаны в блокноте. Консоль можно использовать как место для интерактивной проверки различных небольших идей без изменения блокнота. Для этого из консольного меню блокнота выберите «Create Console for Notebook».

[embedded content]

Терминалы JupyterLab обеспечивают полную поддержку для системных оболочек (bash, tcsh и т. д.) на Mac/Linux и PowerShell на Windows. Через терминал вы можете запустить практически любую программу, включая vim или emacs.

JupyterLab и Jupyter Notebook — мощные инструменты Data Science

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

JupyterLab и Jupyter Notebook — мощные инструменты Data Science

Как и в классическом Jupyter Notebook, когда вы закрываете вкладку документа, консоли или терминала, соответствующее ядро или терминал продолжают работу на сервере, и у вас остается возможность подключиться к ним позже. Вкладка Running позволяет вам заново открыть соответствующий инструмент или выключить его.

[embedded content]

[embedded content]

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

[embedded content]

В архитектуре Jupyter ядра представляют собой отдельные процессы, запускаемые сервером, которые работают с определенным кодом при помощи соответствующего языка и окружения. JupyterLab позволяет запускать код из любого открытого текстового документа, вызвав из контекстного меню команду «Create Console for Editor». Наиболее частым примером такой необходимости служат вкрапления кода, включенные в Markdown-разметку, которые можно запустить в консоли еще более просто по горячей клавише Shift Enter.

[embedded content]

В архитектуре JupyterLab существенное внимание уделено отображению и редактированию данных в самых разных форматах – и загружаемым в качестве входных данных, и выгружаемым на выходе. Формат файлов автоматически определяется по расширению файла или его имени при отсутствии расширения. Как было упомянуто выше, файлы могут открываться в нескольких представлениях, например, в редакторе и средстве просмотра.

JupyterLab и Jupyter Notebook — мощные инструменты Data Science

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

приведет к отображению соответствующего HTML-коду блока.

JupyterLab и Jupyter Notebook — мощные инструменты Data Science

Кратко опишем какие еще форматы в текущий момент поддерживаются (соответствующие видеоиллюстрации можно посмотреть на странице документации):

    • Markdown. При этом работает в том же духе, что и внутри ячеек, то есть, в частности отображаются формулы, записанные в LaTeX.
    • Изображения. Поддерживаемые форматы: .bmp, .gif, .jpeg, .jpg, .png, .svg. Можно использовать плюс и минус, чтобы производить зум изображения, [ и ] для поворота изображения, H и V для горизонтального и вертикального отражения, I – для инвертирования цветов. Для svg изображений есть также соответствующий редактор.
    • Файлы с разделением столбцов разделителями. То есть .csv файлы (и .tsv при изменении расширения). Также имеется и средство просмотра с возможностью выбора разделителя, и редактора. JupyterLab в зависимости от ограничения используемого браузера умеет открывать работать через эти интерфейсы с довольно большими файлами, для Chrome это порядка 730 Мб.
    • JSON-файлы. Отображает данные в виде соответствующей древовидной структуры, также есть возможность редактирования.
    • HTML, LaTeX, PDF, Vega/Vega-Lite, Virtual DOM.

Архитектура JupyterLab построена с возможностью дальнейшего расширения среды. Расширения позволяют добавлять новые темы, средства просмотра других файлов или отрисовки других форматов внутри блокнотов, добавляют дополнительные вкладки в меню и команды в Command Pallete, создают возможности дополнительной настройки системы.

Расширения JupyterLab представляют собой npm-пакеты (стандартные пакеты для JavaScript-разработки). Многие из них разработаны самим сообществом на GitHub, соответственно вы можете найти их в этом топике. Также вам могут быть интересны старые решения для расширения магических функций.

Основной способ для включения расширений выглядит следующим образом:

где my-extension – имя того расширения, что вы хотите установить. Можно использовать как расширения, находящиеся среди пакетов в npm, так и созданные вами. Дополнительно об этом читайте на странице документации.

Среди интересных расширений стоит обратить внимание, в частности, на расширение RISE, позволяющее показывать блокнот Jupyter в виде презентации (интересный пример).

Сервис mybinder предоставляют доступ к Jupiter Notebook и JupyterLab со всеми установленными библиотеками, так что пользователь может изучать и запускать созданный вами проект, имея под рукой только браузер.

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

В качестве примера использования JupyterHub как преднастроенной среды для совместной работы множества пользователей посмотрите видео о применении этого инструмента в аналитике Яндекса.

proglib.io

Добавить комментарий

Ваш e-mail не будет опубликован.

одиннадцать + тринадцать =