Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions

Jupyter notebook - удобная среда для функционального программирования. В работе часто приходится писать код, который подходит под конкретную задачу (обработка информации, парсинг сайтов, process mining и т.д). Такие задачи проще выполнять с функциональным подходом, и среда Jupyter notebook идеально подходит для этого.

Однако использование notebook’ов можно сделать ещё более удобным и продуктивным с помощью Jupyter Notebook Extensions. Это расширения для notebook, которые позволяют добавить множество «фич» для удобства работы. Сегодня я хочу поделиться собственным топом таких расширений.

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

pip install jupyter_contrib_nbextensions jupyter contrib nbextension install

После этого при запуске Jupyter Notebook появится новая вкладка Nbextensions.

Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions

На ней представлен список всех расширений. Для их включения необходимо нажать галочку рядом с ними. При выборе определённого расширения снизу раскрывается информация о самом расширении и дополнительные параметры.

Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions

Например, расширение ExecuteTime. Пишется короткая справка о функционале, и можно развернуть параметры и readme.md.

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

  1. Autopep8

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

Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions

Напишу простенький алгоритм, принимающий на вход 3 значения и выводящий True или False.

Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions

Специально сделала код плохо читаемым. Теперь применю новую кнопку, которая отформатирует весь код согласно стандартам pep8.

Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions

2. Table of Contents

На втором месте для меня является создание заголовков в коде для быстрого перемещения между ними. Больше всего данная функция удобна при создании учебных notebook или демонстрационных.

Например, вот оглавление из моих личных учебных notebook’ов:

Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions

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

Создам пару заголовков в тренировочном notebook.

Для этого создаю ячейку markdown и напишу заголовок, используя «#» для обозначения уровня заголовка. Чем больше #, тем больше уровень заголовка.

# Test pep8 - это первый уровень заголовка. При нажатии на кнопку списков, слева высвечивается оглавление. Оно также автоматически нумеруется.

Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions

3. Codefolding

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

При их нажатии блок скрывается/раскрывается. Например, блок if и else.

Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions

Данный функционал удобен при значительном объёме кода для лучшего понимания, также при разборе чужого кода или когда необходимо сконцентрироваться на определенной «ветке» алгоритма.

4. Execute Time

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

5. Table_beatifier

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

Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions

Главное различие – возможность фильтрации значений по столбцам.

6. Variable Inspector

Расширение для просмотра всех переменных в памяти, их типа, занимаемого места и значения. При добавлении расширения добавляется значок, как на скриншоте снизу.

Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions

В notebook при нажатии кнопки Variable Inspector появляется окно, которое можно перемещать, изменять размер и сворачивать.

Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions

В окне отображаются все переменные в памяти, их названия, типы, занимаемый размер и значение (для объектов различных модулей также поддерживается).

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

33
6 комментариев

Всегда рассматривал JN как приблуду для сибаритов.
Шпашиба, у меня теперь в глазах двоится.

Автор

Благодарим за интерес!

Не нашел способа установить Nbextensions в JupyterLab.

Автор

Nbextensions добавляет функционал именно в Jupiter notebook.
Вроде бы существуют другие расширения (labextension).

А что если не появляется эта вкладка? Десятки страниц в интернете про это, вы друг у друга копируете текст, хоть один сделал это себе?

Автор

Помните, что установка производится на Jupyter notebook. Не забудьте включить в терминале расширения. Попробуйте переустановить с помощью терминала:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable varInspector/main
Надеемся вам поможет