Основы работы в Jupyter/Jupiter Notebook и JupyterLab — Python Tutorial

Содержание страницы

Что такое Jupyter Notebook (JupyterLab)?

Jupyter Notebook — это среда разработки для написания и выполнения кода Python. Некоммерческая организация Project Jupyter с открытым исходным кодом поддерживает программное обеспечение. Он состоит из последовательности ячеек, каждая из которых содержит небольшой пример кода или документацию в формате Markdown. Разработчики могут выполнить ячейку и увидеть ее вывод сразу под кодом. Гениальный дизайн создает мгновенную петлю обратной связи, позволяя программисту запускать свой код и вносить в него соответствующие изменения.

Ячейки Jupyter Notebook также поддерживают аннотации, аудиофайлы, видео, изображения, интерактивные диаграммы и многое другое. Это еще одно важное преимущество программного обеспечения; вы можете рассказать историю с вашим кодом. Читатели могут видеть шаги, которые вы выполнили, чтобы получить результат.

Вы можете импортировать пакеты Python, такие как pandas, NumPy или TensorFlow, прямо в Блокнот.

Jupyter Notebook – это веб-оболочка для Ipython (ранее называлась IPython Notebook). Это веб-приложение с открытым исходным кодом, которое позволяет создавать и обмениваться документами, содержащими живой код, уравнения, визуализацию и разметку.
Первоначально IPython Notebook ограничивался лишь Python в качестве единственного языка. Jupyter Notebook позволил использовать многие языки программирования, включая Python, R, Julia, Scala и F#.

Установка/инсталляция Jupyter Notebook — pip3 install jupyter

Install Jupyter Notebook на Ubuntu 20.14

Установка классического блокнота Jupyter без виртуальной среды осуществляется очень просто. Для этого необходимо запустить 2 команды:

pip install notebook

После этого на вашей рабочей машине установится jupyter notebook. Теперь его необходимо запустить командой:

jupyter notebook

Откроется окно по адресу localhost:8888/

Install Jupyter Notebook на Windows

Аналогично без виртуальной среды блокнот Jupyter можно установить и на винду. Запускаем команду:

pip install notebook

и после завершения установки запускаем команду:

jupyter-notebook

Установка Jupyter Notebook в Docker через Docker-Compose

todo

Установка Jupyter Notebook через virtual env на Windows

Создаем директорию проекта, например:

D:\#python#\#env\jupyter\

Далее в этой директории создаем виртуальную среду с помощью команды:

python3 -m venv venv

или

python -m venv venv

Далее переходим в директорию D:\#python#\#env\jupyter\venv\Scripts и запускаем activate. Должна активироваться среда venv:

D:\#python#\#env\jupyter\venv\Scripts>activate 
(venv) D:\#python#\#env\jupyter\venv\Scripts>

Далее запустите в активированной виртуальной среде venv установку jupyter notebook:

(venv) D:\#python#\#env\jupyter\venv\Scripts>pip install notebook
Collecting notebook
  Using cached notebook-6.4.10-py3-none-any.whl (9.9 MB)
Collecting jupyter-client>=5.3.4
  Downloading jupyter_client-7.2.2-py3-none-any.whl (130 kB)
     |████████████████████████████████| 130 kB 128 kB/s
Collecting nbconvert>=5
  Using cached nbconvert-6.4.5-py3-none-any.whl (561 kB)
.....
.....
.....
Installing collected packages: .....
Successfully installed .....

После завершения установки внутри venv нужно подняться в корень директории jupyter и запустить jupyter-notebook:

(venv) D:\#python#\#env\jupyter\venv\Scripts>cd ..

(venv) D:\#python#\#env\jupyter\venv>cd ..

(venv) D:\#python#\#env\jupyter>jupyter-notebook

[I 06:14:46.674 NotebookApp] Serving notebooks from local directory: D:\#python#\#env\jupyter
[I 06:14:46.674 NotebookApp] Jupyter Notebook 6.4.10 is running at:
[I 06:14:46.678 NotebookApp] http://localhost:8888/?token=443ed7feca651de8172b6f043ea0cf42645ddbc406a784d1
[I 06:14:46.681 NotebookApp]  or http://127.0.0.1:8888/?token=443ed7feca651de8172b6f043ea0cf42645ddbc406a784d1
[I 06:14:46.682 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 06:14:46.835 NotebookApp]
    To access the notebook, open this file in a browser:
        file:///C:/Users/Ivan/AppData/Roaming/jupyter/runtime/nbserver-1952-open.html
    Or copy and paste one of these URLs:
        http://localhost:8888/?token=443ed7feca651de8172b6f043ea0cf42645ddbc406a784d1
     or http://127.0.0.1:8888/?token=443ed7feca651de8172b6f043ea0cf42645ddbc406a784d1

Выглядит это так:

Откроется окно в браузере:

Повторный запуск среды осуществляется из виртуальной среды (сначала ее нужно активировать).

Установка Jupyter Notebook через virtual env на Ubuntu 20.14

# Создаем директорию проекта с виртуальной средой
mkdir jupyter-env

# Переходим внутрь проекта
cd jupyter-env

# Создаем среду myenv
python3 -m venv myenv

# Активируем среду
source myenv/bin/activate

# Запускаем установку jupyter 
pip install notebook

# Запускаем jupyter notebook внутри venv
jupyter notebook

Как устроен Jupyter Notebook. Как работает Jupyter Notebook

Общий вид Jupyter Notebook

Сначала пользователь взаимодействует с браузером, после чего на сервер Notebook отправляется запрос. Это может быть запрос HTTP или WebSocket.

Если код пользователя должен быть выполнен, сервер ноутбука отправляет его ядру (kernel) в сообщениях ZeroMQ. Ядро возвращает результаты выполнения.

Затем сервер Notebook возвращает пользователю HTML-страницу. Когда пользователь сохраняет документ, он отправляется из браузера на сервер Notebook. Сервер сохраняет его на диске в виде файла JSON с .ipynb расширением. Этот файл блокнота содержит код, выходные данные и примечания в формате markdown.

Ядро (Kernel) ничего не знает о документе блокнота: оно просто получает отправленные ячейки кода для выполнения, когда пользователь запускает их.

Блокноты Jupyter — это структурированные данные, которые представляют ваш код, метаданные, контент и выходные данные.

IPython Kernel (Ядро IPython)

Когда мы обсуждаем IPython, мы говорим о двух основных ролях:

  • Terminal IPython как знакомый REPL.
  • Ядро IPython, которое обеспечивает вычисления и связь с внешними интерфейсами, такими как ноутбук.

REPL – это форма организации простой интерактивной среды программирования в рамках средств интерфейса командной строки (REPL, от англ. Read-Eval-Print-Loop — цикл «чтение — вычисление — вывод»), которая поставляется вместе с Python. Чтобы запустить IPython, просто выполните команду ipython из командной строки/терминала.

Terminal IPython

Когда вы набираете ipython, вы получаете исходный интерфейс IPython, работающий в терминале. Он делает что-то вроде этого (упрощенная модель):

while True:
    code = input(">>> ")
    exec(code)

Эту модель часто называют REPL или Read-Eval-Print-Loop.

IPython Kernel

Все остальные интерфейсы — notebook, консоль Qt, ipython console в терминале и сторонние интерфейсы — используют Python Kernel.

Python Kernel — это отдельный процесс, который отвечает за выполнение пользовательского кода и такие вещи, как вычисление possible completions (возможных завершений). Внешние интерфейсы, такие как блокнот или консоль Qt, взаимодействуют с ядром IPython, используя сообщения JSON, отправляемые через сокеты ZeroMQ (протокол, используемый между интерфейсами и ядром IPython).

Основной механизм выполнения ядра используется совместно с терминалом IPython:

Jupyter Lab

Проект Jupyter приобрел большую популярность не только среди специалистов по данным, но и среди инженеров-программистов. На тот момент Jupyter Notebook был предназначен не только для работы с ноутбуком, поскольку он также поставлялся с веб-терминалом, текстовым редактором и файловым браузером. Все эти компоненты не были объединены вместе, и сообщество пользователей начало выражать потребность в более интегрированном опыте.

На конференции SciPy 2016 был анонсирован проект JupyterLab. Он был описан как естественная эволюция интерфейса Jupyter Notebook.

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

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

Ценность Jupyter Notebook/JupyterLab для аналитиков данных

Разница между профессией data analyst/data scientist от разработки ПО заключается в отсутствии чёткого ТЗ на старте. Правильная постановка задачи в сфере анализа данных — это уже половина решения.

Первым этапом производится детальный анализ Initial Data (исходных данных) или Exploratory Data Analysis (Разведочный анализ данных), затем выдвигается одна или несколько гипотез. Эти шаги требуют значительных временных ресурсов.

Поэтому, понимание, как организовать процесс разработки (что нужно делать в первую очередь и чем можно будет пренебречь или исключить), начинает приходить во время разработки.

Исходя из этих соображений тратить силы на скурпулёзное и чистый код, git и т.д. бессмысленно — в первую очередь становится важным быстро создавать прототипы решений, ставить эксперименты над данными. Помимо этого, достигнутые результаты и обнаруженные инсайты или необычные наблюдения над данными приходится итерационно презентовать коллегам и заказчикам (внешним или внутренним). Jupyter Notebook или JupyterLab позволяет выполнять описанные задачи с помощью доступного функционала без дополнительных интеграций:

По факту, JupyterLab — это лабораторный журнал 21 века с элементами интерактивности, в котором вы можете оформить результаты работы с данными в формате markdown с использованием формул из latex. Также в JupyterLab можно писать и запускать код, вставлять в отчет картинки, отрисовывать графики, таблицы, дашборды.

Установка JupyterLab на Ubuntu 20.14

Установка производится одной командой

pip install jupyterlab

После инсталляции запустите команду

jupyter-lab

И откроется интерфейс:

Установка JupyterLab на Windows

Инсталляция и запуск на винде производится аналогично, как и на Ubuntu, командой pip instal jupyterlab.

В чем разница между Jupyter Notebook и JupyterLab?

Jupyter Notebook — это интерактивная вычислительная среда с веб-интерфейсом для создания документов Jupyter Notebook. Он поддерживает несколько языков, таких как Python (IPython), Julia, R и т.д., и в основном используется для анализа данных, визуализации данных и дальнейших интерактивных исследовательских вычислений.

JupyterLab — это пользовательский интерфейс нового поколения, включая ноутбуки. Он имеет модульную структуру, в которой вы можете открыть несколько записных книжек или файлов (например, HTML, Text, Markdowns и т.д.) в виде вкладок в одном окне. Он предлагает больше возможностей, подобных IDE.

Новичку я бы посоветовал начать с Jupyter Notebook, так как он состоит только из файлового браузера и представления редактора (Notebook). Это проще в использовании. Если вам нужны дополнительные функции, переключитесь на JupyterLab. JupyterLab предлагает гораздо больше функций и улучшенный интерфейс, который можно расширить с помощью расширений: JupyterLab Extensions.

Начиная с версии 3.0, JupyterLab также поставляется с визуальным отладчиком, который позволяет интерактивно устанавливать точки останова, переходить к функциям и проверять переменные.

JupyterLab — это совершенно фантастический инструмент как для создания plotly фигур, так и для запуска полных приложений Dash как встроенных, в виде вкладок, так и внешних в браузере.

Основы работы и обзор функциональности Jupyter Notebook

Из чего состоит Jupiter Notebook

Если щелкнуть по файлу с расширением .ipynb, откроется страница с Jupiter Notebook.

Отображаемый Notebook представляет собой HTML-документ, который был создан Jupyter и IPython. Он состоит из нескольких ячеек, которые могут быть одного из трех типов:

  • Сode (активный программный код),
  • Markdown (текст, поясняющий код, более развернутый, чем комментарий),
  • Raw NBConvert (пассивный программный код).

Jupyter запускает ядро IPython для каждого Notebook.

Ячейки, содержащие код Python, выполняются внутри этого ядра и результаты добавляются в тетрадку в формате HTML.

Двойной щелчок по любой из этой ячеек позволит отредактировать ее. По завершении редактирования содержимого ячейки, нажмите Shift + Enter, после чего Jupyter/IPython проанализирует содержимое и отобразит результаты.

Если выполняемая ячейка является ячейкой кода, это приведет к выполнению кода в ячейке и отображению любого вывода непосредственно под ним. На это указывают слова «In» и «Out», расположенные слева от ячеек.

Магические функции Jupiter Notebook

Все magic-функции (их еще называют magic-командами) начинаются

  • со знака %, если функция применяется к одной строке,
  • и %%, если применяется ко всей ячейке Jupyter.

Чтобы получить представление о времени, которое потребуется для выполнения функции, приведенной выше, мы воспользуемся функцией %timeit.

%timeit

%timeit – это magic-функция, созданная специально для работы с тетрадками Jupyter. Она является полезным инструментом, позволяющим сравнить время выполнения различных функций в одной и той же системе для одного и того же набора данных.

%matplotlib inline

%matplotlib inline позволяет выводит графики непосредственно в тетрадке.

На экранах с высоким разрешением типа Retina графики в тетрадках Jupiter по умолчанию выглядят размытыми, поэтому для улучшения резкости используйте

%config InlineBackend.figure_format = 'retina'

после %matplotlib inline.

jupyter markdown

туду

jupyter server

туду

jupyter config

туду

jupyter hub

JupyterHub: позволяет предоставлять нескольким пользователям (группам сотрудников) доступ к Notebook и другим ресурсам. Это может быть полезно для студентов и компаний, которые хотят, чтобы группа (группы) имела доступ к вычислительной среде и ресурсам и использовала их без необходимости установки и настройки. Управление которыми могут осуществлять системные администраторы. Доступ к отдельным блокнотам и JupyterLab можно получить через Hub. Hub может работать в облаке или на собственном оборудовании группы.

jupyter команды

туду

pycharm jupyter

туду

Виджеты Jupyter

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

Jupyter Widgets — это событийные объекты Python, которые имеют представление в браузере, часто в виде элемента управления, такого как ползунок, текстовое поле и т. д.

Вы можете использовать виджеты для создания интерактивных графических интерфейсов для своих ноутбуков.
Вы также можете использовать виджеты для синхронизации информации с сохранением состояния и без сохранения состояния между Python и JavaScript.
Чтобы использовать структуру виджетов, вам необходимо импортировать файлы ipywidgets.

Почему отображение одного и того же виджета дважды работает?

Виджеты представлены в бэкенде одним объектом. Каждый раз, когда отображается виджет, во внешнем интерфейсе создается новое представление того же объекта. Эти представления называются представлениями.

Несколько самых популярных виджетов:

Чтобы начать использовать библиотеку, нам нужно установить расширение ipywidgets. Для pip это будет двухэтапный процесс:

  1. установить и
  2. включить
pip install ipywidgets
jupyter nbextension enable --py widgetsnbextension

Tips & Tricks / Советы, рекомендации и фишки при работе с Jupyter Notebook

todo

Подборка видео по Jupyter

Как использовать Jupyter (ipython-notebook) на 100%

Jupyter Notebook Tutorial (Eng)

  • 00:00 Introduction
  • 01:35 Jupyter notebook example
  • 04:11 Installing Python and Jupyter notebooks
  • 09:23 Launching Jupyter notebooks
  • 11:08 Basic notebook functionality
  • 20:58 The kernel, and variables
  • 28:38 Other notebook functionality
  • 34:45 The menu
  • 35:52 Jupyter notebook keyboard shortcuts
  • 36:57 Load and display data using pandas
  • 40:33 Using terminal commands inside a Jupyter notebook
  • 42:30 Jupyter notebook magic commands
  • 45:07 Other features outside of the notebooks
  • 46:41 Shutting down Jupyter notebooks
  • 48:02 Jupyter notebook extensions and other libraries
  • 52:47 Conclusion, and thank you

Jupyterlab — STOP Using Jupyter Notebook! Here’s the Better Tool

5 3 голоса
Рейтинг статьи
Шамаев Иван
Разработчик аналитических решений QlikView/Qlik Sense/Power BI; Python Data Scientist; Разработчик интеграционных решений на PHP, Python, JavaScript.
1
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x