Jupyter

Руководство для начинающих о том, как сделать Jupyter Notebook быстрее, мощнее и круче

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

Вам, к примеру, может казаться, что одной установки и запуска Jupyter Notebook вполне достаточно. Если все заработало, то и отлично! Но вы вряд ли знаете, что существует множество способов по настройке этой оболочки. А установка программы или пакета — это всего лишь начало!

Почему бы не потратить пару минут на то, чтобы сделать свой Jupyter Notebook удобнее для работы: быстрее, круче, мощнее и даже интереснее?

Данное руководство рассчитано на новичков в Jupyter Notebook. Мы начнем с самых основ, а затем перейдем к интересным примерам.

Сначала — о главном

После установки запустить Jupyter Notebook можно из терминала по команде:

jupyter notebook

теперь все готово для работы!

Изменение темы блокнота

Обычно первое, что люди хотят изменить в блокнотах Jupyter Notebook, — это тема оформления. Люди сходят с ума по темной теме! Изменить тему можно в любое время, и делается это довольно просто.

Для начала перейдите в терминал и установите jupyterthemes:

pip install jupyterthemes

Теперь можно установить мега-популярную темную тему:

jt -t chesterish

Восстановить основную тему можно через

jt -r

Вот здесь можно найти GitHub-репозиторий jupyterthemes.

Основные команды

  • Список горячих клавиш доступен из палитры команд, которая открывается по нажатию Ctrl + Shift + P или Cmd + Shift + P. Появившееся диалоговое окно очень похоже на Spotlight Search в Mac и позволяет выполнять команды по названию. Это очень удобно, если вы не знаете нужного сочетания клавиш.
  • Shift + Enter запускает текущую ячейку;
  • Esc открывает командный режим. Переходить по блокноту можно с помощью клавиш со стрелками.

В командном режиме можно пользоваться следующими клавишами:

  • A — добавляет новую ячейку над текущей;
  • B — добавляет новую ячейку под текущей;
  • M — изменяет текущую ячейку на Markdown;
  • Y — возвращает к ячейке с кодом;
  • D + D — удаляет текущую ячейку (двойное нажатие клавиши);
  • Enter — переход из командного режима в режим редактирования.

Дополнительно:

  • Shift + Tab — показывает документацию для объекта, который вы только что добавили в ячейку кода (продолжайте нажимать эти клавиши для переключения между режимами);
  • Esc + F — помогает найти и заменить информацию в коде (кроме выходных значений);
  • Esc + 0 — переключает вывод ячеек;
  • Shift + J или Shift + Down — выделяет ячейку ниже текущей. Shift + K или Shift + Up выделяет ячейку выше текущей. После выделения (выбора) ячеек можно выполнять пакетное удаление/копирование/вырезание/вставку/запуск. Это очень удобно, если нужно перенести часть документа.
  • Shift + M — объединяет несколько ячеек (простой клик по нужным ячейкам ничего вам не даст. Для объединения ячеек их следует выделять с зажатым Shift, а затем, не отпуская Shift, нажать M).
  • В Jupiter Notebook можно запускать bash-команды. Для этого добавьте в начало строки восклицательный знак. Например: !pip install numpy
  • Вы можете подавить вывод функции в последней строке кода, добавив в конце этой строки точку с запятой.

Комментирование/ удаление комментариев в блоках кода

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

Для добавления комментариев в код выделите нужные строки и нажмите cmd + /.

LaTex

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

LaTex заменяет это:

$P(A \mid B) = \frac{P(B \mid A)P(A)}{P(B)}$

на это:

Вывод всех значений ячейки

Как правило, в ячейке отображается только последний вывод. Для всего остального нужно прописывать print(). В принципе, ничего сложного, но это не всегда удобно. Изменить ситуацию можно, добавив вверху блокнота следующее:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = “all”

Несмотря на то, что по умолчанию выводится только последний результат:

… вы увидите их все!

Если захотите вернуться к обычному представлению, то выполните следующее:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = “last_expr”

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

Расширения

Jupyter Notebook — это веб-приложение с открытым кодом, поэтому для него написано множество расширений. Все поддерживаемые расширения можно найти в официальном списке iPython-расширений или популярной подборке расширений.

Установить Nbextensions из командной строки довольно просто.

С помощью pip:

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install — user

или Anaconda:

conda install -c conda-forge jupyter_contrib_nbextensions
conda install -c conda-forge jupyter_nbextensions_configurator
jupyter contrib nbextension install — user

Сразу после их установки вы увидите вкладку Nbextensions. Пользуйтесь на здоровье!

Здесь подробно написано про расширения: как подключить, отключить и т.д.

В самом Jupyter Notebook детально описано, как добавлять, включать и работать с расширениями. Кликните по Nbextensions вверху экрана, нажмите на нужное расширение, пролистайте информацию о нем и посмотрите GIF-файл с его возможностями.

Популярные расширения

  • Scratchpad — очень классное расширение. Генерирует временные ячейки для выполнения быстрых вычислений без создания новой ячейки в рабочей книге. Отлично экономит время!
  • Hinterland — добавляет меню автозаполнения кода в ячейке для каждого нажатия клавиши, а не только для клавиши Tab.
  • Snippets — добавляет выпадающее меню для включения ячеек с фрагментами кода (сниппетами) в текущий блокнот.
  • Autopep8 — автоматически форматирует Python-код в соответствии с руководством по оформлению кода PEP 8. Это очень удобно! Проследите, чтобы на локальной машине была выполнена команда pip install autopep8 — user. Так вы точно будете следовать правильным соглашениям по написанию кода на Python.
  • Split Cells Notebook — позволяет разделять ячейки в Jupyter Notebook. Перейдите в командный режим, а затем с помощью Shift + S переключайтесь между полноразмерной или разделенной ячейкой.
  • Table of Contents — собирает все выполняемые заголовки и отображает их в плавающем окне, в формате боковой панели или в меню навигации.
  • A Code Prettifier — подчищает, форматирует и проставляет отступы за вас.
  • Notify — отображает уведомления на рабочем столе при простое ядра. Особенно удобно, если выполняется код, на завершение которого уходит более пары секунд.
  • Code Folding — в режиме редактирования добавляет иконку-треугольник для скрытия кода. Удобно при длинных функциях, которые лучше скрыть для читабельности.
  • Zen mode — убирает все лишнее. Проверьте, что отключили фоны в настройках.

Читайте также:


Перевод статьи Anne Bonner: Tips, Tricks, Hacks, and Magic: How to Effortlessly Optimize Your Jupyter Notebook