Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions
Jupyter notebook - удобная среда для функционального программирования. В работе часто приходится писать код, который подходит под конкретную задачу (обработка информации, парсинг сайтов, process mining и т.д). Такие задачи проще выполнять с функциональным подходом, и среда Jupyter notebook идеально подходит для этого.
Однако использование notebook’ов можно сделать ещё более удобным и продуктивным с помощью Jupyter Notebook Extensions. Это расширения для notebook, которые позволяют добавить множество «фич» для удобства работы. Сегодня я хочу поделиться собственным топом таких расширений.
Чтобы установить расширения, необходимо запустить следующие команды в promt:
После этого при запуске Jupyter Notebook появится новая вкладка Nbextensions.
На ней представлен список всех расширений. Для их включения необходимо нажать галочку рядом с ними. При выборе определённого расширения снизу раскрывается информация о самом расширении и дополнительные параметры.
Например, расширение ExecuteTime. Пишется короткая справка о функционале, и можно развернуть параметры и readme.md.
Сегодня хочу поделиться собственным топом расширений, которыми я пользуюсь каждый день.
- Autopep8
Когда код пишется для разового использования, некритично не соблюдать различные стилистические правила «хорошего кодинга». Однако по опыту код просматривается и передается после его «разового» применения ещё много раз, поэтому для лучшей читаемости стоит приводить весь код в соответствие со стандартами, поэтому данный модуль крайне полезен.
Напишу простенький алгоритм, принимающий на вход 3 значения и выводящий True или False.
Специально сделала код плохо читаемым. Теперь применю новую кнопку, которая отформатирует весь код согласно стандартам pep8.
2. Table of Contents
На втором месте для меня является создание заголовков в коде для быстрого перемещения между ними. Больше всего данная функция удобна при создании учебных notebook или демонстрационных.
Например, вот оглавление из моих личных учебных notebook’ов:
Удобно, что при нажатии на интересующий заголовок тетрадь переходит к этому месту.
Создам пару заголовков в тренировочном notebook.
Для этого создаю ячейку markdown и напишу заголовок, используя «#» для обозначения уровня заголовка. Чем больше #, тем больше уровень заголовка.
# Test pep8 - это первый уровень заголовка. При нажатии на кнопку списков, слева высвечивается оглавление. Оно также автоматически нумеруется.
3. Codefolding
Внимательные читатели уже могли обратить внимание на серые стрелочки рядом с блоками кода на скриншотах выше.
При их нажатии блок скрывается/раскрывается. Например, блок if и else.
Данный функционал удобен при значительном объёме кода для лучшего понимания, также при разборе чужого кода или когда необходимо сконцентрироваться на определенной «ветке» алгоритма.
4. Execute Time
Также очень полезный инструмент, который позволяет отслеживать время выполнения ячейки без дополнительных импортов и применения функций. По умолчанию выводит данный параметр к каждой ячейке под ячейкой с кодом.
5. Table_beatifier
Инструмент для преобразования отображения таблиц. Очень удобен при работе с небольшими датасетами или отфильтрованными частями большого. На скриншотах ниже представлен обычный вариант numpy датасета (слева) и с использованием расширения table_beautifier (справа).
Главное различие – возможность фильтрации значений по столбцам.
6. Variable Inspector
Расширение для просмотра всех переменных в памяти, их типа, занимаемого места и значения. При добавлении расширения добавляется значок, как на скриншоте снизу.
В notebook при нажатии кнопки Variable Inspector появляется окно, которое можно перемещать, изменять размер и сворачивать.
В окне отображаются все переменные в памяти, их названия, типы, занимаемый размер и значение (для объектов различных модулей также поддерживается).
Таким образом, можно значительно упростить и оптимизировать процесс работы в Jupyter Notebook. Расширения будут полезны не только новичкам, но и опытным пользователям. Каждый сможет подобрать набор расширений под свои нужды.
Всегда рассматривал JN как приблуду для сибаритов.
Шпашиба, у меня теперь в глазах двоится.
Благодарим за интерес!
Не нашел способа установить Nbextensions в JupyterLab.
Nbextensions добавляет функционал именно в Jupiter notebook.
Вроде бы существуют другие расширения (labextension).
А что если не появляется эта вкладка? Десятки страниц в интернете про это, вы друг у друга копируете текст, хоть один сделал это себе?
Помните, что установка производится на Jupyter notebook. Не забудьте включить в терминале расширения. Попробуйте переустановить с помощью терминала:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable varInspector/main
Надеемся вам поможет