Секрет оптимизации процесса написания кода на Python в Jupyter Notebook, который все знают, но мало кто использует
Время – самый ценный ресурс, а также невосполнимый. Чаще всего осознание этого приходит в момент, когда истекает крайний срок выполнения поставленной задачи. Тогда мы начинаем анализировать, на что было оно потрачено, насколько рационально и была ли возможность сделать быстрее. Если данную ситуацию рассматривать с позиции IT-специалиста, то, на мой взгляд, поставленную задачу можно поделить на три этапа:
6.6K открытий
- «План» – разработать алгоритм решения и определить необходимые ресурсы;
- «Кодинг» – написать скрипт или SQL-запрос в зависимости от поставленной задачи;
- «Результат» – получить и проанализировать результат, в случае ошибки или медленной работы, провести отладку или оптимизацию.
Для каждого этапа существуют методы и инструменты, с помощью которых можно сократить временные трудозатраты, но более подробно хочу остановиться на этапе кодинга. Ведь на скорость, кроме высокого уровня владения языком программирования и наличие опыта, влияет уровень знания инструмента, в котором пишется код. Поэтому, IT-специалисты, которые не изучают доступный функционал своих рабочих приложений, упускают возможность повысить свою производительность.
Далее хочу поделиться своим опытом оптимизации процесса написания кода на Python в Jupyter Notebook.
Начнем с самого простого, что не требует дополнительной настройки, а именно с горячих клавиш (комбинаций кнопок на клавиатуре, при нажатии которых выполняются команды без использования мыши).
Часто используемые команды:
«Alt» + «Enter» – Выполнение текущей ячейки и перевод фокуса на новую ячейку, созданную ниже
«Shift» + «Enter» – Выполнение текущей ячейки и перевод фокуса на следующую
«Ctrl» + «Enter» – Выполнение текущей ячейки и сохранение фокуса на текущей ячейке
«Esc» => Переход из режима редактирования (edit mode) в командный (command mode):
«Esc» => «A» – Добавление пустой ячейки сверху или «B» – Добавление пустой ячейки снизу
«Esc» => «C» – Копирование ячейки и «V» её вставка
«Esc» => «X» – Вырезание ячейки и «V» её вставка
«Esc» => «DD» – Удаления ячейки
«Esc» => «Z» – Отмена удаления ячейки
Для применения к нескольким ячейкам:
«Esc» => «Shift» + «K» или «Up» – Выделение ячеек выше текущей
«Esc» => «Shift» + «J» или «Down» – Выделение ячеек ниже текущей
Для максимального исключения использования мыши:
«Esc» => «Shift» + «M» – Объединение нескольких ячеек
«Ctrl» + «Shift» + «–» – Разделение на несколько ячеек (поставьте курсор перед линией, с которой должна начаться вторая ячейка)
«Esc» => «00» – Перезапуск блокнота
«Esc» => «F» – Поиск и замена информации в ячейках
«Esc» => «Space» – Прокрутка блокнота вниз
«Esc» => «Shift + Space» – Прокрутка блокнота вверх
«Esc» => «1, 2, 3, 4, 5, 6» – Определение заголовка в markdown
«Esc» => «Y, M, R» – Конвертация типов ячеек (Code, Markdown, Raw)
«Esc» => «O» – Включение/Выключение вывода результата в ячейке
«Esc» => «L» – Включение/Выключение номеров строк в ячейке
На случай, если забыли и необходимо подсмотреть:
«Esc» => «H» – Вызывает окно помощь со списком горячих клавиш
«Esc» => «Ctrl + Shift +P» – Вызывает командную панель со списком горячих клавиш
Это не все команды, но, на мой взгляд, необходимый минимум для начала оптимизации процесса написания скрипта. И если вы ранее, при работе в программе, особенно с часто повторяющимися действиями, не использовали горячие клавиши, начинайте, так как отпадет необходимость выцеливать команды на панели инструментов и увеличится скорость создания скрипта за счет сокращения количества взаимодействий с мышью.
Перейдем к более тонкой настройки Jupyter Notebook с помощью расширений «Nbextensions», они улучшат функционал и существенно модифицируют пользовательский интерфейс.
Для этого необходимо установить пакет «jupyter_contrib_nbextensions» с помощью двух команд:
Pip install jupyter_contrib_nbextensions Jupyter contrib nbextension install —user
После в Jupyter Notebook на стартовой странице появится вкладка «Nbextensions» с перечнем расширений.
При выборе одного из них, ниже подгружается описание и поле для настройки доступных параметров.
На текущий момент для себя выделил три расширения:
- Hinterland – для первого введенного символа выпадает меню автозаполнения кода, для функции выводится описание, что исключает необходимость нажатия клавиши «Tab»
2. Autopep8 – преобразует код Python в соответствии со стилевым руководством PEP8. Перед активацией расширения, дополнительно из командной строки запустить
Pip install autopep8 —user
Для преобразования написанного кода на панели инструментов появиться иконка в виде молота.
3. Code Folding – в код добавляются метки в виде треугольников для скрытия, удобно при объемных функциях
Общего списка какие расширения необходимо ставить нет, так как задачи, решаемые в Jupyter Notebook, разнообразны и лучше всего на собственном опыте его определять.
В дополнении предлагаю подумать о будущих задачах и создать свою базу знаний с помощью магических команд (magics).
Для создания и наполнения информацией используем команду «%%writefile» указываем в параметрах «—a» для добавления в файл, иначе будет перезаписываться и указываем имя файла «C:\Users\ … \Documents\MyBase.py», включив в него полный путь места хранения, после вставляем код, который хотим записать.
%%writefile -a C:\Users\ . \Documents\MyBase.py >>>»»»#Определяем список файлов для обработки import os #Путь к папке на ПК path_file = r’\Users\. \Documents\ ‘[:-1] #Собираем имена файлов для обработки list_file = [] for file in os.listdir(path_file): if file.endswith((‘.csv’)): list_file «»»
Если сохранять в том формате, который указан в примере, а именно после magics-команды пропустить строку и после «>>>»»»» прописать краткое пояснение, а со следующей строки вставить сохраняемый скрипт до ««»»», то при открытии файла в текстовом редакторе Notepad++ и выборе синтаксиса Python, вся сохраненная информация будет разбита на блоки.
MyBase.py открытый в Notepad++
Для вывода данных из созданной базы знаний используем команду «%pycat» и указываем имя файла «C:\Users\ … \Documents\MyBase.py», включив в него полный путь места хранения.
Как оптимизировать работу в Jupyter Notebook
Оптимизируем работу в Jupyter Notebook с помощью основных команд и расширений и добавляем немного магии, чтобы всё стало ещё быстрее и проще.
Jupyter Notebook (ранее известный как IPython Notebook) — веб-оболочка для нескольких языков программирования: Julia, Python и R. Это одна из множества технологий, которые позволяют делать жизнь людей проще и лучше. Но установка пакета — только начало, есть множество вещей, которые можно доработать, чтобы сделать процесс разработки ещё удобнее.
В этой статье предполагается, что вы мало знакомы с Jupyter Notebook. Прежде чем мы перейдём к более хитрым трюкам, речь пойдёт о базовых вещах.
Если вы только открываете для себя эту тему, лучше сначала изучить вопрос с установкой и работой Anaconda.
Начало работы
После установки можно сразу приступить к работе. Для этого необходимо выполнить следующее:
$ jupyter notebook
Смена темы оформления
Чтобы настроить многими любимый тёмный режим, нужно зайти в терминал и установить Jupyterthemes:
$ pip install jupyterthemes
Теперь можно установить тёмную тему:
$ jt -t chesterish
Восстановить основную тему можно в любое время:
$ jt -r
Найти Jupyterthemes можно в репозитории на GitHub.
Основные команды
Быстро получить доступ к сочетаниям клавиш можно с помощью комбинаций Ctrl+Shift+P или Cmd+Shift+P , тогда откроется диалоговое окно, похожее на Spotlight Search на Mac. Это поможет вам запустить любую команду по имени, что очень удобно, когда ещё не знаешь нужного сочетания клавиш.
Shift+Enter позволяет запустить текущую ячейку.
Esc переводит в командный режим. Он позволяет перемещаться по документу с помощью клавиш-стрелок.
В командном режиме можно использовать:
- А , чтобы вставить новую ячейку над текущей ячейкой;
- B , чтобы вставить новую ячейку под текущей ячейки;
- M , чтобы изменить текущую ячейку на Markdown;
- Y , чтобы перейти обратно в кодовую ячейку;
- D+D (двойное нажатие клавиши), чтобы удалить текущую ячейку;
- Enter , чтобы вернуться из командного режима в режим редактирования.
Shift+Tab — покажет документацию для объекта, который вы только что ввели в ячейку кода. Для переключения между несколькими режимами продолжайте нажимать это сочетание клавиш.
Esc+F — поможет найти и заменить информацию в коде (кроме выходных данных).
Esc+0 — переключает вывод ячейки.
Shift+J (или Shift+Down ) — выделяет ячейки ниже текущей. Shift+K (или Shift+Up ) выделяет ячейки выше текущей. Как только ячейки выбраны, их можно удалить/скопировать/вырезать/вставить/запустить как пакет. Это удобно, когда нужно переместить только часть документа.
Shift+M — позволяет объединить несколько ячеек.
Кроме того, в документе можно запускать bash-команды, если в начале поставить восклицательный знак:
!pip install numpy
Чтобы отключить отображение результата выражения в последней строчке ячейки, добавьте в конце последней строчки точку с запятой ( ; ).
Комментирование/раскомментирование блока кода
Добавить новые строки кода и закомментировать старые можно сочетанием клавиш. Выделите все нужные строки и нажмите Cmd + / , это закомментирует выделенный код.
LaTex
Вы можете писать на LaTex в Markdown-ячейках, и они будет отображены в виде формулы.
$P(A \mid B) = \frac$
Данная строка будет преобразована в следующую формулу:
Отображение данных из всех ячеек
По умолчанию отображается только последний вывод в ячейке. Для всего остального необходимо вручную добавить 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 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.
В этом репозитории можно узнать больше о расширениях, об их включении в ваш документ и исключении из него.
Для работы просто нажмите «Nbextensions» в верхней части экрана, выберите интересующее вас расширение, а затем прокрутите вниз, чтобы найти нужную информацию.
Популярные расширения
- Scratchpad — позволяет создать временную ячейку для выполнения быстрых вычислений без создания новой ячейки в workbook.
- Hinterland — делает доступным меню автозаполнения кода для каждого нажатия клавиши в ячейке кода, а не только для клавиши Tab.
- Snippets — добавляет раскрывающееся меню для вставки фрагментов в текущий документ.
- Autopep8 — автоматически форматирует код на Python в соответствии со стилевым руководством PEP 8. Убедитесь, что на локальной машине выполнена команда $ pip install autopep8 —user . Это гарантирует, что вы будете следовать правильным соглашениям о написании кода в Python.
- Split Cells Notebook — позволяет разделять ячейки. Войдите в командный режим и используйте Shift+S , чтобы переключить текущую ячейку между разделённой и полной шириной.
- Table of Contents — позволяет собирать все запущенные заголовки и отображать их в плавающем окне, в виде боковой панели или с помощью меню навигации.
- A Code Prettifier — очищает, форматирует и выравнивает ваш код за вас.
- Notify — отображает уведомление на рабочем столе, когда ядро бездействует. Это удобно, когда вы запускаете код, выполнение которого занимает больше пары секунд.
- Code Folding — в режиме редактирования сбоку появляется треугольник, который позволяет скрывать блоки кода. Удобно, когда есть большие функции, которые вы хотите скрыть.
- Zen mode — делает детали менее загроможденными. Убедитесь, что фоны в настройках отключены.
Магия
Магия — это удобные команды, которые облегчают жизнь, когда вы хотите выполнить определённые задачи. Они часто выглядят как команды Unix, но все они реализованы на Python.
Есть два вида магии: строчная магия (применяется к одной строке) и магия ячейки (применяется ко всей ячейке). Строчная магия начинается с символа процента ( % ), а магия ячейки — с двух таких символов ( %% ).
Чтобы увидеть доступную магию, нужно запустить следующее:
%lsmagic
Настройка среды разработки
Можно легко управлять переменными среды вашего документа с помощью %env без перезагрузок. Выполните эту команду без каких-либо переменных, она отобразит все ваши переменные среды.
Вставка кода
С помощью %load можно вставить код из внешнего скрипта.
%load basic_imports.py
Данная команда возьмёт файл basic_imports.py и загрузит его в ваш документ.
Экспорт содержимого ячейки
Это очень удобная функция. Она позволяет в любое время экспортировать содержимое ячейки с помощью %%writefile .
%%writefile thiscode.py Здесь мог бы быть какой-нибудь ваш код или функция, которые вы хотите экспортировать и, возможно, использовать позже.
Это очень полезно, если вы используете один и тот же импорт в каждом документе или постоянно добавляете одну и ту же функцию. Теперь вы можете написать код один раз и использовать его везде.
Например, вы можете написать файл basic_imports.py , содержащий следующий код:
%%writefile basic_imports.py import pandas as pd import numpy as np import matplotlib.pyplot as plt
Это создаст файл .py , содержащий ваши основные импорты.
Дальше можно его загрузить в любое время, написав:
%load basic_imports.py
Выполнение этой команды заменяет содержимое ячейки загруженным файлом.
# %load imports.py import pandas as pd import numpy as np import matplotlib.pyplot as plt
Теперь вы можете снова запустить ячейку, чтобы импортировать все ваши модули.
Сохранение и повторное использование кода
Как и у большинства людей, у вас периодически могут быть одни и те же задания. Возможно, есть несколько уравнений, которые вы постоянно решаете, или несколько строк кода, которые вы создавали много раз. Jupyter позволяет сохранять фрагменты кода как исполняемые макросы. Поскольку макросы — это просто код, он может содержать переменные, которые должны быть определены перед выполнением.
name = 'Kitten'
Теперь, чтобы определить макрос, нужен код для использования. Можно сохранить практически всё, от строки до функции.
print('Hello, %s!' % name) Hello, Kitten!
Для настройки макроса используется магия %macro и %load . Обычно принято имена макросов начинать с двойного подчеркивания, чтобы отличать их от других переменных.
%macro -q __hello_you 32
Магия %macro принимает имя и номер ячейки (или несколько номеров), а специальный ключ -q делает магию менее подробной. %store позволяет сохранить любую переменную для использования в других сессиях. В коде выше передаётся имя созданного макроса, чтобы можно было использовать его снова после выключения ядра или в других документах.
Чтобы загрузить макрос, достаточно выполнить следующее.
%load __hello_you
Чтобы выполнить макрос, можно просто запустить ячейку, которая содержит имя макроса.
__hello_you Hello, Kitten!
Для наглядного примера измените переменную, использованную в макросе.
name = 'Muffins'
При запуске макроса захватывается измененное значение.
__hello_you Hello, Muffins!
Это работает, потому что макросы выполняют сохраненный код в пространстве имён ячейки. Если name будет не определено, вы получите ошибку.
Если вы хотите использовать один и тот же макрос во всех своих документах, в этом может помочь %store .
%store позволяет хранить макрос и использовать его во всех Jupyter Notebook.
%store -r __hello_you name = 'Rambo' %load __hello_you Hello, Rambo!
Магия run
%run выполнит ваш код и отобразит любые выводные данные, включая графики Matplotlib. Таким образом можно выполнять даже целые документы. Также %run может выполнить код Python из файлов .py .
Магия pycat
Использование %pycat покажет содержимое скрипта, если вы не уверены, что в нём находится.
%pycat basic_imports.py
Автосохранение
%autosave определяет, как часто ваш документ будет автоматически сохранять контрольные точки в файл.
%autosave 60
После данной команды автосохранение будет происходить каждые 60 секунд.
Отображение графиков
%matplotlib inline
Эта команда отобразит графики Matplotlib прямо в выводе ячейки. Это означает, что диаграммы и графики Matplotlib можно включать прямо в свои документы. Имеет смысл запустить команду в начале вашего документа, прямо в первой ячейке.
Измерение времени
Для измерения времени используются две магические команды IPython: %%time и %timeit . Они очень полезны, когда ваш код медленно выполняется и вы пытаетесь определить, в чём проблема. Они обе имеют как строковый режим, так и режим запуска из ячейки.
Основное различие между %timeit и %time состоит в том, что первая выполняет указанный код много раз и вычисляет среднее значение.
%%time даст вам информацию о единичном запуске кода в вашей ячейке.
%%timeit использует Python-модуль timeit, который выполняет выражение множество раз, а затем выдаёт среднее значение результатов. Вы можете указать количество запусков с помощью опции -n , количество повторов с помощью -r и т. д.
Запуск кода из другого ядра
Можно запустить выполнение ячейки с использованием указанного языка. Существуют расширения для нескольких языков. Есть опции вроде:
- %%HTML ,
- %%python ,
- %%python2 ,
- %%python3 ,
- %%ruby ,
- %%perl ,
- %%capture ,
- %%javascript ,
- %%js ,
- %%latex ,
- %%markdown ,
- %%pypy .
Например, для рендеринга HTML в вашем документе вы должны выполнить следующее:
%%HTML This is really neat!
Вы также можете использовать LaTeX напрямую когда угодно:
%%latex This is an equation: $E = mc^2$
Магия who
Команда %who без аргументов выводит список всех переменных, существующих в глобальной области видимости. При передаче параметра, например str , будут перечислены только переменные этого типа:
%who str
Если набрать данную команду, результат будет следующим.
Магия prun
%prun показывает, сколько времени ваша программа потратила на каждую функцию. Использование %prun statement_name даёт упорядоченную таблицу, показывающую, сколько раз каждая внутренняя функция была вызвана в блоке. А также время, которое потребовалось на каждый вызов, и суммарное время всех запусков функции.
Магия отладчика в Python
Jupyter имеет собственный интерфейс для отладчика Python. Это позволяет заглянуть внутрь функции и посмотреть, что там происходит. Включить эту магию можно, запустив %pdb в начале ячейки.
Графики высокого разрешения
Одна простая магическая строка IPython может предоставит вам на выводе график с двойным разрешением для экранов Retina. Стоит отметить, что на других экранах график может не отображаться.
%config InlineBackend.figure_format ='retina'
Пропуск ячейки для выполнения
Просто добавьте %%script false в начале ячейки:
%%script false Можете поместить здесь длинный код, который вхотите исключить из выполнения прямо сейчас
Оповещения
Оповещения могут пригодиться, когда вы запускаете код, требующий долгого выполнения. Вы можете настроить уведомление, которое будет отправлено, когда код выполнится.
На Linux и Mac
import os duration = 1 # секунды freq = 440 # Гц os.system('play --no-show-progress --null --channels 1 synth %s sine %f' % (duration, freq))
На Windows
import winsound duration = 1000 # миллисекунды freq = 440 # Гц winsound.Beep(freq, duration)
Чтобы использовать такое оповещение, у вас должен быть установлен sox . Установить его можно с помощью следующей строки:
$ brew install sox
Но это сработает, только если вы пользуетесь Homebrew.
Выводы
Изложенного в этой статье должно быть достаточно для успешного начала работы в Jupyter Notebook. Если вы знаете какие-либо советы и рекомендации, которые могут помочь другим новичкам, напишите об этом в комментариях ниже.
Если вы хотите подняться на уровень повыше, вас может заинтересовать другая статья по оптимизации Jupyter Notebook.
Изучаем управление в Google Colab
Если не хотите мучиться с установкой среды для программирования на Python, можете воспользоваться учетной записью gmail и бесплатным инструментом Google Colab. Это аналог Jupyter Lab от американской компании. Однако как новичку, так и опытному data scientist-у очень пригодятся знания о горячих клавишах, упрощающих работу в данной среде, так как они отличаются от привычных комбинаций. Для наиболее популярных манипуляций вам понадобится знать следующие сочетания:
CTRL M A — вставить кодовую ячейку выше;
CTRL M B — вставить кодовую ячейку ниже;
CTRL M D — удалить ячейку;
CTRL M — — разбить ячейку;
CTRL V — вставить скопированную ячейку;
CTRL F8 — выполнить все ячейки выше;
CTRL F9 — выполнить все ячейки;
CTRL F10 — выполнить ячейки от текущей и ниже;
CTRL M . — перезапустить kernel;
CTRL SHIFT P — показать палитру команд;
CTRL M H — показать сочетания клавиш;
Z — отмена последней манипуляции с ячейками (надо выйти из режима редактирования ячейки посредством нажатия ESC);
CTRL M M — преобразовать в текстовую ячейку;
CTRL M Y — преобразовать в кодовую ячейку;
CTRL ENTER — исполнить активную ячейку;
SHIFT ENTER — исполнить активную ячейку с перемещением курсора на следующую.
Еще полезные команды, для которых сочетание потребуется задать самому (CTRL M H):
CTRL SHIFT U — объединить выделенную ячейку с предыдущей (курсор в активной ячейке);
CTRL SHIFT D — объединить сфокусированную ячейку со следующей;
CTRL SHIFT C — скопировать ячейку или выделенный текст;
CTRL SHIFT X — вырезать ячейку.
Не пропустите ничего интересного и подписывайтесь на страницы канала в других социальных сетях:
Блокнот Jupyter: Введение
Jupyter Notebook — это веб-приложение с открытым исходным кодом, которое можно использовать для создания и обмена документами, содержащими живой код, уравнения, визуализации и текст. Jupyter Notebook поддерживается программистами из Project Jupyter.
Jupyter является преемником более раннего проекта IPython Notebook. Название Jupyter происходит от основных поддерживаемых языков программирования, которые он поддерживает: Julia, Python и R. Jupyter снабжаемые ядром IPython, которое позволяет вам писать свои программы на Python. В настоящий момент, существует более 100 других ядер, которые вы можете использовать.
Начало работы с Jupyter Notebook
Jupyter Notebook изначально не входит в состав Python, поэтому Вам потребуется установка Jupyter.
Существует множество дистрибутивов языка Python, но особое внимание мы уделим только 2 основным. Самым популярным из них является CPython — это базовая версия Python, которую вы можете найти на их веб-сайте. Рекомендуем использовать Python 3.
Установка
Чтобы начать работать с Jupyter Notebook, библиотеку Jupyter необходимо установить для Python. Проще всего это сделать с помощью pip:
$ pip install jupyter
Следующим по популярности дистрибутивом Python является Anaconda . У Anaconda есть собственный установщик под названием conda, который вы можете использовать для установки стороннего пакета. Однако Anaconda установлена со многими предустановленными научными библиотеками, включая Jupyter Notebook, поэтому вам не нужно ничего делать, кроме установки самой Anaconda.
Запуск Jupyter Notebook Server
Теперь, когда у вас установлен Jupyter, давайте узнаем, как его использовать. Для начала все, что вам нужно сделать, это открыть приложение и перейти в папку по вашему выбору. Для начала, рекомендуем использовать что-то вроде папки «Documents» и создать в ней подпапку под названием « Notebooks» или что-то еще, что легко запомнить.
Затем просто перейдите в это место в своем терминале и выполните следующую команду:
$ jupyter notebook
Это запустит сервер Jupyter, а браузер откроет новую вкладку со следующим URL: http: // localhost: 8888 / tree
Теперь ваш браузер должен выглядеть примерно так:
Отлично! Обратите внимание, что прямо сейчас вы фактически не используете Notebook, а просто запускаете сервер Notebook. Теперь пришло время создать первый notebook и заполнять его кодом.
Создание записной книжки
Теперь, когда вы знаете, как запустить сервер Notebook, вам, вероятно, следует научиться создавать настоящий документ Notebook.
Для создания notebook выберите «New» в верхнем меню, а потом «Python 3». Теперь страница в браузере будет выглядеть вот так:
Название вашего Notebook
Вы заметите, что вверху страницы есть слово Untitled . Это заголовок страницы и имя вашей записной книжки. Его лучше поменять на что-то более понятное. Просто наведите мышью и кликните по тексту. Теперь можно выбрать новое название:
Вывод кода
Ячейка Notebook по умолчанию использует код всякий раз, когда вы создаете его впервые, и эта ячейка использует ядро, которое вы выбрали при запуске Notebook.
Перед первой строкой написано In [] . Это ключевое слово значит, что дальше будет ввод. Попробуйте написать простое выражение вывода. Не забывайте, что нужно пользоваться синтаксисом Python 3. После этого нажмите «Run». Если вы предпочитаете использовать клавиатуру, вы можете просто нажать Shift + Enter .
Попробуем добавить в эту ячейку следующий код:
print('Hello Jupyter!')
При запуске кода, результат должен выглядеть таким образом:
Вывод должен отобразиться прямо в notebook. Это и позволяет заниматься программированием в интерактивном формате, имея возможность отслеживать вывод каждого шага. Также обратите внимание на то, что In [] изменится и вместо нее станет In [1] . Число в скобках означает порядок, в котором эта ячейка будет запущена. В первой цифра 2 , потому что она была второй запущенной ячейкой. Каждую ячейку можно запускать индивидуально и цифры в скобках будут менять соответственно. Если есть несколько ячеек, то между ними можно делиться переменными и импортами. Это позволяет проще разбивать весь код на связанные блоки, не создавая переменную каждый раз. Главное убедиться в запуске ячеек в правильном порядке, чтобы переменные не использовались до того, как были созданы.
Меню
В Jupyter Notebook есть несколько меню, которые вы можете использовать для взаимодействия с вашим Notebook.. Вот список текущих меню:
На сервере Jupyter есть несколько меню, с помощью которых от проекта можно получить максимум. С их помощью можно взаимодействовать с notebook, читать документацию популярных библиотек Python и экспортировать проект для последующей демонстрации
Первое меню — это меню «Файл». В нем вы можете создать новый блокнот или открыть уже существующий. Здесь также можно переименовать Блокнот. Думаю, самый интересный пункт меню — это опция « Сохранить и проверить» . Это позволяет вам создавать контрольные точки, к которым вы можете откатиться, если вам нужно.
Далее идет меню « Правка» . Здесь вы можете вырезать, копировать и вставлять ячейки. Это также то место, куда вы должны пойти, если хотите удалить, разделить или объединить ячейку. Вы также можете изменить порядок ячеек здесь.
Обратите внимание, что некоторые элементы в этом меню неактивны. Причина в том, что они не применяются к текущей выбранной ячейке. Например, в ячейку кода нельзя вставить изображение, а в ячейку Markdown можно. Если вы видите пункт меню серого цвета, попробуйте изменить тип ячейки и посмотрите, станет ли этот элемент доступным для использования.
Вид меню полезно для переключения видимости заголовка и панели инструментов. Вы также можете включить или выключить номера строк в ячейках. Это также то место, куда вы должны пойти, если хотите возиться с панелью инструментов ячейки.
Меню « Вставка» предназначено только для вставки ячеек выше или ниже текущей выбранной ячейки.
Меню « Ячейка» позволяет запускать одну ячейку, группу ячеек или все ячейки. Отсюда можно запускать ячейки в определенном порядке или менять их тип. Другая удобная функция в этом меню — это возможность очистить вывод ячейки.
Jupyter Notebook использует Ядро с привязкой к языкам, компьютерную программу, которая запускает и проводит внутренний анализ кода.
Вероятно, вы не будете так часто работать с ядром, но бывают случаи, когда вы отлаживаете Notebook, и вам нужно перезапустить ядро. Когда это произойдет, вы отправитесь именно сюда.
Widgets меню для сохранения и очистки состояния виджета. Виджеты — это в основном виджеты JavaScript, которые вы можете добавлять в свои ячейки для создания динамического содержимого с помощью Python (или другого ядра).
Наконец, у вас есть меню « Справка» , в котором вы можете узнать о сочетаниях клавиш Notebook, ознакомиться с пользовательским интерфейсом и множеством справочных материалов.
Пусковые терминалы и прочее
Jupyter Notebook также позволяет запускать больше, чем просто записные книжки. Вы также можете создать текстовый файл, папку или Терминал в своем браузере. Вернитесь на домашнюю страницу, которая открылась при первом запуске сервера Jupyter в http://localhost:8888/tree. Перейдите к кнопке New и выберите один из других вариантов.
Терминал, вероятно, является наиболее интересным из всех, поскольку он запускает терминал вашей операционной системы в браузере. Это позволяет запускать в браузере bash, Powershell и т. д. И запускать там любую команду, которая может вам понадобиться.
Просмотр того, что работает
Также на домашней странице вашего сервера Jupyter ( http://localhost:8888/tree) есть две другие вкладки: Запуск и Кластеры .
Running вкладка покажет вам , какие ноутбуки и терминалы вы в настоящее время работаете. Это полезно, когда вы хотите выключить сервер, но вам нужно убедиться, что вы сохранили все свои данные. К счастью, записные книжки автоматически сохраняются довольно часто, поэтому вы редко теряете данные. Но хорошо иметь возможность видеть, что работает, когда вам это нужно.
Еще одна приятная особенность этой вкладки заключается в том, что вы можете просмотреть свои запущенные приложения и закрыть их там.
Добавление описания к notebook
В Jupyter Notebook есть несколько инструментов, используемых для добавления описания. С их помощью можно не только оставлять комментарии, но также добавлять заголовки, списки и форматировать текст.
Типы ячеек
Технически существует четыре типа ячеек: Code, Markdown, Raw NBConvert и Heading.
Тип ячейки «Заголовок» больше не поддерживается и отобразит диалоговое окно, в котором говорится об этом. Вместо этого вы должны использовать Markdown для своих заголовков.
Тип ячеек Raw NBConvert предназначен только для особых случаев использования nbconvert инструмента командной строки. По сути, он позволяет вам управлять форматированием очень специфичным образом при преобразовании из записной книжки в другой формат.
Основные типы ячеек, которые вы будете использовать, — это типы ячеек Code и Markdown.
Вы уже узнали, как работают ячейки кода, поэтому давайте узнаем, как стилизовать текст с помощью Markdown.
Стилизация вашего текста
Jupyter Notebook поддерживает Markdown, язык разметки, являющийся надмножеством HTML. В этом руководстве будут рассмотрены некоторые основы того, что вы можете делать с Markdown.
Установите для новой ячейки значение Markdown, а затем добавьте в ячейку следующий текст:
Когда вы запустите ячейку, результат должен выглядеть так:
Если вы предпочитаете выделять текст жирным шрифтом, используйте двойное подчеркивание или двойную звездочку.
Заголовки
Создавать заголовки с помощью Markdown довольно просто.
Первым делом нужно поменять тип ячейки. Нажмите на выпадающее меню с текстом «Code» и выберите «Markdown». Это поменяет тип ячейки.
Попробуем несколько вариантов. Заголовки можно создавать с помощью символа # . Один такой символ создаст самый крупный заголовок верхнего уровня. Чем больше # , тем меньше будет текст.
Сделать текст курсивным можно с помощью символов * с двух сторон текста. Если с каждой стороны добавить по два * , то текст станет полужирным. Список создается с помощью тире и пробела для каждого пункта.
Затем, когда вы запустите ячейку, вы получите красиво отформатированный заголовок:
Создание списков
Вы можете создать список (маркеры), используя тире, знаки плюса или звездочки. Вот пример:
Подсветка кода и синтаксиса
Если вы хотите вставить пример кода, который не подразумевает дальнейший запуск пользователем, вы можете использовать Markdown, чтобы вставить его. Для выделения встроенного кода просто заключите код в обратные кавычки. Если вы хотите вставить блок кода, вы можете использовать тройные обратные кавычки, а также указать язык программирования:
Экспорт записных книжек
Когда вы работаете с Jupyter Notebooks, случаются моменты, когда вам нужно поделиться своими результатами с нетехническими специалистами. Когда вы столкнетесь с такой ситуацией, вам поможет nbconvert инструмент, устанавливаемый с Jupyter Notebook, для преобразования или экспорта вашего Notebook в один из следующих форматов:
- HTML
- LaTeX
- RevealJS
- Markdown
- ReStructured Text
- Executable script
nbconvert проект программного обеспечения с открытым исходным кодом, который поставляется в комплекте санаконда, Процитироватьnbconvert docs, это позволяет: презентация информации в знакомых форматах, таких как PDF.
Jinja — это язык шаблонов (или шаблонизатор), созданный для Python. Следует обратить внимание, что возможность экспорта во все вышеперечисленные форматы nbconvert также зависит от Pandoc и TeX. Если у вас нет ни одного из них, некоторые типы экспорта могут не работать.
Как использовать nbconvert
У nbconvert команды не так много параметров, что упрощает обучение ее использованию. Откройте терминал и перейдите в папку, содержащую записную книжку, которую вы хотите преобразовать. Основная команда преобразования выглядит так:
$ jupyter nbconvert —to
Пример использования
Представим, что у вас есть записная книжка с именем py_examples.ipynb и вы хотите преобразовать ее в PDF. Вот команда, которую вы бы использовали для этого:
$ jupyter nbconvert py_examples.ipynb --to pdf
Когда вы запустите эту команду, вы должны увидеть вывод, который расскажет вам о процессе преобразования.
nbconvert будет отображать предупреждения и ошибки, если они есть. Предполагая, что все идет по плану, теперь у вас будет py_examples.pdf файл в вашей папке.
Процесс преобразования для других типов файлов очень похож. Вам просто нужно указать, в nbconvert какой тип конвертировать (PDF, Markdown, HTML и т.д).
Использование меню
Вы также можете экспортировать текущий запущенный Блокнот, перейдя в меню « Файл» и выбрав « Загрузить как» .
Эта опция позволяет скачивать файлы во всех nbconvert поддерживаемых форматах . Преимущество использования меню в том, что вам совсем не нужно учить nbconvert, если вы этого не хотите. Однако я рекомендую сделать это, так как вы можете использовать его nbconvert для одновременного экспорта нескольких записных книжек, а это меню не поддерживает.
Расширения для Notebook
В этом разделе мы разберемся с расширениями Notebook.
Хотя в Jupyter Notebooks встроено множество функций, несмотря на это, вы можете добавлять новые, с помощью расширений. На самом деле Jupyter поддерживает четыре типа расширений:
- Kernel
- IPython kernel
- Notebook
- Notebook server
Что такое расширения?
Расширение Notebook ( nbextension ). С помощью nbconvert вы можете легко превратить ваш Jupyter в скрипт Python из командной строки. Это также позволяет вам превратить вашу записную книжку Jupyter в удобные для обмена форматы, такие как файлы .html и .pdf.
Где я могу найти расширения?
Вы можете использовать Google или искать расширения Jupyter Notebook. На самом деле их довольно много. Один из самых популярных наборов расширений называется jupyter_contrib_nbextensions , который вы можете получить на GitHub . На самом деле, это набор расширений, предоставляемых сообществом Jupyter и устанавливаемых с помощью pip .
Как их установить?
Большинство расширений Jupyter Notebook можно установить с помощью pip инструмента Python . Если вы обнаружите расширение, которое не может быть установлено pip , вам, вероятно, придется использовать следующую команду:
$ jupyter nbextension install EXTENSION_NAME
Это только установит расширение, но не сделает его активным. Вам нужно будет включить расширение после его установки, выполнив следующее:
$ jupyter nbextension enable EXTENSION_NAME
Возможно, вам потребуется перезапустить ядро Jupyter Notebook, чтобы увидеть расширение.
Есть хорошее мета-расширение под названием Jupyter NbExtensions Configurator , которое стоит приобрести для управления другими расширениями. Он позволяет вам включать и отключать ваши расширения из пользовательского интерфейса Jupyter Notebook, а также показывает все установленные в настоящее время расширения.
Заключение
Jupyter Notebook весьма полезен не только для изучения такого языка программирования, как Python, но и для обмена вашими данными.
Вы можете превратить свой Notebook в слайд-шоу или поделиться им в Интернете с помощью GitHub.
У Google и Microsoft есть собственная версия Notebook, которую вы можете использовать для создания и совместного использования Notebook в Google Colaboratory и Microsoft Azure Notebooks соответственно. На этих платформах вы также сможете найти что-то интересное для себя.
Project Jupyter недавно выпустил свой последний продукт — JupyterLab . JupyterLab включает Jupyter Notebook в интегрированный редактор типов разработки, который вы запускаете в своем браузере. Вы можете рассматривать JupyterLab как расширенную версию Jupyter Notebook. JupyterLab позволяет запускать терминалы, текстовые редакторы и консоли кода в вашем браузере в дополнение к записным книжкам.