Язык программирования Python пользуется большой популярностью благодаря своему простому синтаксису и широкому применению, а также наличию большого количества сторонних расширений пакетов, которые можно использовать для решения различных задач. Одним из таких пакетов является Jupyter Notebook — программа-блокнот, которую можно использовать в разных задачах от записи обычных заметок до запуска программного кода и работы с визуализацией. Сегодня мы подробно рассмотрим, что из себя представляет Jupyter Notebook и какие задачи он помогает решать.
Jupyter Notebook представляет собой интерактивную среду разработки для создания и работы с различными документами, создания исходного кода на одном из поддерживаемых языков программирования, текстовыми данными, визуализацией и математическими выражениями. Jupyter Notebook широко используется в научной области, а также при работе с аналитическими данными, машинным обучением и в образовательной среде благодаря своей гибкости и удобству.
Возникает вопрос — в чем же отличие Jupyter Notebook от других, стандартных IDE вроде Visual Studio Code, PyCharm или IntelliJ IDEA? Главное отличие заключается в интерактивности и пошаговом выполнении кода — любой фрагмент разрабатываемой программы можно разбить на отдельные части и запустить. Благодаря этому появляется возможность сразу видеть результаты выполнения отдельной части программы. В то время как в стандартных IDE код обычно пишется в виде целостных файлов и запускается целиком, в Jupyter Notebook код разбивается на ячейки, которые можно запускать по отдельности.
Jupyter Notebook обладает обширным функционалом, который выходит за рамки использования программы исключительно для ведения заметок и написания исходного кода. Среди расширенного функционала доступны следующие возможности:
Поддержка языка разметки Markdown и инструмента LaTeX
Помимо работы с исходным кодом, можно добавлять форматированный текст, используя язык разметки Markdown, а также производить математические операциями с уравнениями, используя синтаксис LaTeX.
Встроенный функционал по работе с визуализацией
Визуализация включает в себя графики, схемы и таблицы, которые встроены прямо в интерфейс программы и отображаются в нижней панели. Также поддерживаются популярные библиотеки Python для работы с визуализацией данных — Matplotlib и Seaborn.
Поддержка большинства языков программирования
Несмотря на то, что Jupyter Notebook первоначально был разработан специально для языков Python, R и Julia, программа поддерживает большинство современных языков программирования включая, C++, Java, Ruby, Go, Scala, Kotlin. Также поддерживаются языки для научных вычислений и специфических задач, включающие в себя MATLAB, Octave, Fortran, Haskell, SageMath. Дополнительно поддерживаются скриптовые языки Bash и PowerShell. Поддержка сторонних языков осуществляется через специальный компонент системы под названием «ядро». Перед началом работы с требуемым языком программирования необходимо установить ядро языка с помощью pip или вручную.
Встроенный веб-интерфейс
Взаимодействие с Jupyter Notebook осуществляется через встроенный веб-интерфейс. Соответственно, начать работу можно прямо в браузере, не устанавливая дополнительные инструменты.
Jupyter Notebook использует клиент-серверную архитектуру, которая разделяет интерфейс пользователя и вычислительную логику. Основные компоненты системы:
Встроенный веб-интерфейс для управления программой.
Сервер обрабатывает поступающие запросы от клиента, а также отвечает за управление ноутбуками — файлами с расширением .ipynb
, включая их хранение и взаимодействие с ядрами.
Сервер использует веб-сокеты (WebSockets) для связи между клиентом и ядром.
Под ядром понимают процесс, главной задачей которого является запуск и выполнение кода на поддерживаемом языке программирования. Каждое ядро связано с определенным языком программирования (JavaScript, C++, Java, Ruby, Go и другие).
Ядро запускается отдельно от сервера и общается с ним через протокол ZMQ (ZeroMQ), передавая код для выполнения и возвращая готовый результат выполнения.
Алгоритм работы Jupyter Notebook заключается в следующем:
jupyter notebook
.Jupyter Notebook является универсальным инструментом, который можно использовать в самых разных областях благодаря его интерактивности и поддержке множества языков программирования. Среди задач можно выделить следующие:
К таким задачам можно отнести загрузку данных из CSV, JSON, баз данных, преобразование типов данных. Также благодаря поддержке таких библиотек, как Pandas, NumPy, Matplotlib, Seaborn, Jupyter Notebook можно использовать для построения гистограмм, диаграмм рассеяния и вычислительной статистики.
Присутствует поддержка таких библиотек, как Scikit-learn, TensorFlow, PyTorch, что позволяет проводить обучение ИИ-моделей.
Возможность решения дифференциальных уравнений и работа с физическими симуляциями при помощи библиотек SciPy или SymPy. Также поддерживаются обработка экспериментальных данных включая анализ результатов экспериментов, построение графиков, и проверка гипотез.
Jupyter Notebook идеально подходит для изучения языка программирования Python и других поддерживаемых языков. Также можно создавать интерактивные материалы для обучения, где обучающиеся будут запускать код и сразу видеть результаты.
Создание скриптов для рутинных задач, включая обработку файлов, организацию резервного копирования, парсинга данных и т.д.
Работа с большими данными может осуществляться с такими библиотеками как Bokeh или Dash.
Рассмотрим процесс установки и запуска Jupyter Notebook на сервере с Ubuntu 24.04.
Чтобы установить и использовать Jupyter Notebook, нам понадобится следующее:
Один сервер или одна виртуальная машина с любым предустановленным дистрибутивом Linux. В данной статье в качестве примера мы будем использовать дистрибутив Ubuntu версии 24.04.
Сервер должен соответствовать следующим требованиям:
Минимум 1 ГБ оперативной памяти. Данный объем подойдет только для тестирования Jupyter Notebook и не предназначен для решения высокоресурсных задач. Для более серьезных задач необходимо минимум 2 ГБ оперативной памяти.
Минимум 1-ядерный процессор для базовой конфигурации. Для выполнения реальных задач (например, для работы с большим объемом данных, для работы с математическими и научными вычислениями) рекомендуется 2-ядерный процессор.
Наличие публичного IP-адреса, который можно арендовать на этапе создания сервера в разделе «Сеть».
Сервер можно создать в панели управления в разделе «Облачные серверы». В процессе рекомендуем выбрать регион с минимальным пингом для быстрой передачи данных. Остальные параметры можно оставить без изменений.
Сервер будет запущен через пару минут, и вы сможете найти IP-адрес, логин и пароль для подключения на Дашборде сервера.
python3 --version
Если Python все же не установлен, то для установки достаточно выполнить команды:
apt update && apt -y install python3
vds
pip
, а также пакет для работы с виртуальным окружением Python — python-venv
, который нам понадобится далее. Для этого выполняем команды:apt update && apt -y install python3-pip python3-venv
pip
:pip3 --version
Если команда вернула в ответ версию pip
, пакетный менеджер установлен.
mkdir my-jupyter-project && cd my-jupyter-project
Установим Jupyter-ноутбук при помощи виртуального окружения Python — специальной изолированной среды, которая позволяет управлять зависимостями и версиями используемых пакетов без конфликтов между собой. Для создания нового виртуального окружения с именем venv
необходимо выполнить команду ниже. Убедитесь, что находитесь в директории my-jupyter-project
, которую мы создали выше:
python3 -m venv venv
Далее активируем виртуальную среду:
source ./venv/bin/activate
После того как виртуальное окружение будет активировано, слева от приглашения к вводу будет отображено название виртуального окружения. Это означает что виртуальное окружение было успешно активировано:
Теперь можно установить Jupyter Notebook. Для этого используем следующую команду установки:
pip3 install jupyter
jupyter notebook --allow-root --ip=103.88.243.247
Рассмотрим команду подробнее:
--allow-root
разрешает запуск от имени пользователя root (ее необходимо использовать только при работе от имени root-пользователя, при работе из-под обычных пользователей она не требуется.--ip
позволяет задать IP-адрес или доменное имя, на котором будет запущен веб-интерфейс программы. Т.к. у нас сервер без графического интерфейса и запустить с локального хоста мы не сможем, то укажем публичный IP-адрес сервера. В нашем случае это 103.88.243.247, у вас он будет отличаться. Копируем ссылку из вывода команды, открываем браузер и переходим по ссылке. Отобразится веб-интерфейс программы:
y
:Также существует опция, позволяющая задать постоянный пароль вместо токена для запуска Jupyter Notebook. Для этого достаточно выполнить следующие шаги:
jupyter notebook --generate-config
jupyter notebook password
Программа попросит ввести пароль (Enter password) и повторить ввод пароля еще раз (Verify password).
jupyter notebook --allow-root --ip=103.88.243.247
Обратите внимание, что в выводе теперь отсутствует строка с токеном. Вместо нее отобразится адрес веб-интерфейса в формате http://<IP адрес>/tree
. Открываем строку с адресом в браузере:
В этой главе мы рассмотрим примеры практического использования Jupyter Notebook. Для этого сначала потребуется установить несколько пакетов Python: pandas
, matplotlib
и numpy
.
pip3 install pandas matplotlib numpy
jupyter notebook --allow-root --ip=103.88.243.210
Ipykernel — это пакет, который предоставляет ядро IPython для Jupyter и отвечает за выполнение кода на языке Python. При написании и запуске кода в ячейках ipykernel служит «движком», который интерпретирует этот код и возвращает результаты отображая их в веб-интерфейсе Jupyter.
Для начала запустим пару простейших примеров. Начнем с вывода фразы “Hello, world!”. В ячейке вводим точно такой же код, который используется в языке Python:
print ('Hello, world!')
Для запуска кода на панели сверху нажимаем на кнопку со стрелкой (Run this cell and advance):
Результат будет отображен ниже:
Выполним еще одну простейшую операцию — умножим цифры 5 на 3 и выведем результат:
a = 5
b = 3
result = a * b
result
Начнем с популярной библиотеки pandas, которая используется для работы с данными и их анализа. Код ниже демонстрирует базовую работу с библиотекой pandas
в Python: сначала происходит импорт pandas
, далее создается словарь с данными, содержащий имена и возраст трех человек. В дальнейшем словарь преобразуется в объект DataFrame — табличную структуру данных, и выводит результат в виде таблицы с двумя столбцами (Name и Age) и тремя строками, где каждая строка соответствует человеку с его именем и возрастом. Индексы строк (0, 1, 2) добавлены автоматически:
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
df
Следующий пример использует библиотеку matplotlib
, которая применяется для создания высококачественных графиков, диаграмм и визуализаций данных.
Программа ниже создает простой линейный график с помощью модуля pyplot
из библиотеки matplotlib
, где на горизонтальной оси X отображаются значения [1, 2, 3, 4]
, а на вертикальной оси Y — значения [10, 20, 25, 30]
. Точки соединены линиями, и каждая точка отмечена кружком благодаря параметру marker='o'
. График имеет заголовок «Simple Line Plot», подпись оси X — «X-axis», подпись оси Y — «Y-axis», а результат отображается на экране после вызова функции plt.show()
.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [10, 20, 25, 30]
plt.plot(x, y, marker='o')
plt.title('Simple Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()
Далее рассмотрим пример с использованием библиотеки numpy, которая предназначена для работы с многомерными массивами и матрицами и предоставляет набор математических функций для операций с ними.
Программа ниже создает массив цифр от 1 до 5, затем вычисляет квадраты этих цифр с помощью списочного включения (list comprehension) и выводит оба результата:
import numpy as np
numbers = np.arange(1, 6)
squares = [n**2 for n in numbers]
print("Numbers:", numbers)
print("Squares:", squares)
Надежные VDS/VPS для ваших проектов
Jupyter Notebook представляет собой мощный инструмент, который сочетает в себе среду для программирования и платформу для обработки данных. Помимо этого, Jupyter Notebook поддерживает множество языков программирования, что расширяет возможности программы до максимума. Это делает его удобным инструментом для обучения, экспериментов, документирования процессов и совместной работы.