0
40542

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

conda install -c conda-forge jupyterlab

pip

pip install jupyterlab

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

pipenv

pipenv install jupyterlab
 pipenv shell

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

pipenv install git+git://github.com/jupyterlab/jupyterlab.git#egg=jupyterlab
 pipenv shell

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

Запуск

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

jupyter lab

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

Интерфейс

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

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

Меню

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

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

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

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

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

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

https://www.youtube.com/watch?v=PlJGecfetek

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

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

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

https://www.youtube.com/watch?v=Ka8qS7CO1XQ

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

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

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

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

https://www.youtube.com/watch?v=DO7NOenMQC0

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

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

https://www.youtube.com/watch?v=y30fs6kg6fc

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

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

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

https://www.youtube.com/watch?v=rhW3kAExCik

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

https://www.youtube.com/watch?v=COheO7sA4-U

Работа с файлами

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

https://www.youtube.com/watch?v=Rh-vwjTwBTI

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

https://www.youtube.com/watch?v=uwMmHeDmRxk

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

https://www.youtube.com/watch?v=1kEgUqAeYo0

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

https://www.youtube.com/watch?v=87ALbxm1Y3I

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

https://www.youtube.com/watch?v=QL0IxDAOEc0

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

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

https://www.youtube.com/watch?v=OfISSOTiGTY

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

https://www.youtube.com/watch?v=y3xzXelypjs

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

https://www.youtube.com/watch?v=1bd2QHqQSH4

Текстовый редактор

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

https://www.youtube.com/watch?v=IuqmxkHsS7o

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

Jupyter Notebook

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

Остановимся подробнее на основной особенностях блокнотов 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-команду прямо из ячейки. Например, так можно быстро установить недостающую библиотеку:

!pip install numpy

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

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

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

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

Блокноты (ноутбуки) в JupyterLab

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

https://www.youtube.com/watch?v=J9xoTGdqWIo

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

https://www.youtube.com/watch?v=SQn9aRc050w

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

https://www.youtube.com/watch?v=WgiX3ZRaTiY

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

https://www.youtube.com/watch?v=U4usAUZCv_c

https://www.youtube.com/watch?v=Asa_ML45HP8

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

https://youtu.be/MuNr0i8LgpM

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

https://www.youtube.com/watch?v=TgqMK1SG7XI

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

https://www.youtube.com/watch?v=eq1l7DBngQQ

Терминалы

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

Управление ядрами и терминалами

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

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

https://youtu.be/gDM5lwU6Dmo

https://youtu.be/PBDN9AJWBlw

Палитра команд

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

https://www.youtube.com/watch?v=lPuj57UkxYs

Перенаправление кода консоли

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

https://www.youtube.com/watch?v=Kz3e7SgqTnI

Файлы различных форматов

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

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

from IPython.display import display, HTML
display(HTML('<h1>Hello World</h1>'))

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

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

    • 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, соответственно вы можете найти их в этом топике. Также вам могут быть интересны старые решения для расширения магических функций.

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

jupyter labextension install my-extension

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

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

Серверы и совместная работа

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

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

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

Другие статьи по теме:

РУБРИКИ В СТАТЬЕ

МЕРОПРИЯТИЯ

05 декабря Санкт-Петербург Бесплатно
05 декабря Москва Бесплатно
04 декабря Москва Бесплатно
28 ноября Онлайн 48000 RUB

Комментарии 0

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

BUG