Время прочтения: 5 мин.

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

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

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

pip install jupyter_contrib_nbextensions 
jupyter contrib nbextension install 

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

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

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

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

1. Autopep8

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

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

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

2. Table of Contents (2)

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

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

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

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

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

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

3. Codefolding

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

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

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

4. ExecuteTime

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

5. table_beautifier

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

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

6. Variable Inspector

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

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

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

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