перейти к содержанию

Что такое Jupyter Notebook: подробное введение

Jupyter Notebook — одна из самых популярных интерактивных веб-платформ с открытым исходным кодом, которую используют более 2 миллионов пользователей в различных областях, таких как наука о данных, машинное обучение и научные вычисления.

В этом подробном руководстве содержится подробное описание Jupyter Notebook и того, как он обеспечивает интерактивные исследовательские вычисления.

Что такое блокнот Jupyter?

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

Некоторые ключевые компоненты, составляющие Jupyter Notebook:

  • Веб приложение: Jupyter Notebook — это клиент-серверное веб-приложение, которое обеспечивает доступ к документам записной книжки через современный веб-браузер.
  • Документы для ноутбука: Автономные документы с живым кодом, текстом, визуализацией и многим другим. Хранится в виде файлов JSON с .ipynb расширение.
  • Ядра: Фоновые процессы, которые запускают и анализируют различные языки программирования, такие как Python, R, Julia и т. д.
  • Панель управления ноутбука: Интерфейс целевой страницы для управления файлами и ядрами вашего блокнота.

Под капотом Jupyter Notebook работают:

  • Юпитер-сервер: Отвечает за управление ядрами и предоставление API для внешнего доступа. Написано на Python.
  • Ядро IPython: Ядро Python по умолчанию с магией и вспомогательными функциями.
  • Веб-фреймворк Торнадо: Предоставляет веб-сервер Python, используемый блокнотом Jupyter.
  • Интерфейс ноутбука: Интерфейс интерфейса написан на JavaScript, HTML и CSS. Взаимодействует с сервером с помощью AJAX.

Эта архитектура позволяет Jupyter Notebook обеспечивать интерактивные вычисления в современных веб-браузерах. Интерфейс документа сочетает в себе входные и выходные данные многих языков.

Для чего используется блокнот Jupyter?

Блокноты Jupyter предоставляют невероятно полезный инструмент для самых разных случаев использования:

1. Очистка и преобразование данных

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

# Load pandas and numpy
import pandas as pd
import numpy as np

# Import dataset 
data = pd.read_csv(‘data.csv‘)

# Inspect data
data.head() 

# Drop missing values
data = data.dropna()

# Data cleaning and filtering
data = data[data[‘Column‘] > 100]

2. Визуализация и исследование данных

Jupyter легко интегрирует выполнение кода для визуализации данных с помощью таких библиотек, как Matplotlib, Seaborn, Plotly и т. д.

# Plot histogram 
plt.hist(data[‘Column‘])
plt.title(‘Histogram‘)
plt.show()

Гистограмма

Богатые интерактивные виджеты можно использовать для создания мощных информационных панелей для исследования данных.

3. Построение модели машинного обучения

Notebook позволяет итеративно разрабатывать и оценивать модели машинного обучения локально или интегрировать их с такими платформами, как AWS SageMaker:

# Load data
X_train, X_test, y_train, y_test = train_test_split(data)

# Train model
model = LogisticRegression() 
model.fit(X_train, y_train)

# Evaluate model
print("Accuracy:", model.score(X_test, y_test))

Построенные модели также можно экспортировать и внедрить в производство.

4. Развертывание модели

Модели, созданные в Notebook, можно экспортировать в такие форматы, как ONNX, и развертывать на облачных платформах:

# Export trained model
onnx_model = onnxmltools.convert_sklearn(model)
onnxmltools.utils.save_model(onnx_model, ‘model.onnx‘)

5. Разработка приложений

Notebook поддерживает разработку полноценных приложений с виджетами Jupyter, Voila и т. д.:

# Slider widget
slider = widgets.IntSlider(min=0, max=100) 

# Display widget
widgets.interact(f, x=slider)

Виджет Юпитера

6. Анализ больших данных

Jupyter Notebook может подключаться к механизмам больших данных, таким как PySpark, для крупномасштабной обработки данных:

# PySpark session
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName(‘App‘).getOrCreate()

# Read CSV
df = spark.read.csv(‘data.csv‘)

# Display DataFrame
df.show()

7. Научные вычисления

Ноутбук поддерживает множество популярных библиотек числовых и научных вычислений, таких как NumPy, SciPy, AstroPy, Chaospy, SymPy и т. д.

# Polynomial curve fitting
import numpy as np
from scipy import optimize

def error(coeffs, x, y):
    return y - np.polyval(coeffs, x)

coeffs = optimize.leastsq(error, [0, 0, 0], args=(x, y))[0]

Это позволяет исследователям и учёным использовать Notebook для своих приложений.

8. Образование и обучение

Аннотированные документы в блокноте чрезвычайно ценны для преподавания тем по программированию и науке о данных. Во многих курсах для выполнения заданий и учебных пособий используются блокноты Jupyter.

Обучение

9. Быстрое прототипирование

Notebook обеспечивает рабочий процесс, способствующий быстрой итеративной разработке, что имеет решающее значение для быстрого прототипирования — настройка кода, повторный запуск, обновление, повторение.

10. Сотрудничество

Блокнотами можно легко делиться, позволяя командам сотрудничать с контекстом, предоставляемым через код, визуализации, повествование Markdown и т. д.

По Отчет Kaggle о состоянии науки о данных за 2021 год, более 60% специалистов по обработке данных и специалистов по машинному обучению ежедневно используют Jupyter Notebook. Он занимает второе место по популярности среди инструментов разработки после Google Colab.

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

Далее давайте рассмотрим шаги, необходимые для начала работы с Jupyter Notebook.

Настройка блокнота Jupyter

Jupyter Notebook прост и быстр в установке. Вот как это настроить:

Установка

Сначала убедитесь, что установлен Python 3.6 или более поздней версии. Затем установите пакет Jupyter, используя pip:

pip install jupyter

При этом будет установлен Jupyter Notebook и его зависимости, такие как iPython и IPython.

Запуск ноутбука Jupyter

Запустите Jupyter Notebook, выполнив:

jupyter notebook

Это запустит сервер Jupyter Notebook и запустит веб-приложение:

Панель управления Jupyter

Вот и все! Вы готовы создать свой первый блокнот.

Параметры установки

Некоторые другие варианты установки Jupyter Notebook включают:

  • анаконда: Установите Jupyter через дистрибутив Anaconda Python.
  • пипенв: pipenv install jupyter установить в виртуальной среде
  • Докер: docker run jupyter/notebookзапускает контейнер с Jupyter

Настройка ядер

Доступно более 100 ядер Jupyter для разных языков:

ядра

Вы можете установить дополнительные ядра, например:

pip install ijavascript  # JS kernel
pip install jupyter_R_kernel # R kernel

И установите ядро ​​по умолчанию в конфигурации ноутбука.

Это позволяет Jupyter Notebooks поддерживать многие языки помимо Python.

Как использовать блокнот Jupyter

Теперь давайте рассмотрим ключевые компоненты веб-интерфейса Jupyter Notebook и способы работы с блокнотами:

Файлы блокнота

Файлы блокнота имеют .ipynb расширение и хранятся в формате JSON, содержащем текст, код, метаданные и выходные данные. Блокноты можно экспортировать в другие форматы, такие как HTML, Markdown, PDF и т. д.

Панель управления ноутбука

Панель управления Jupyter позволяет создавать новые блокноты, управлять существующими, работать с ядрами и просматривать файловую систему:

Аккаунт

Пользовательский интерфейс ноутбука

Пользовательский интерфейс блокнота представляет документы блокнота и позволяет взаимодействовать с ними:

ui

Клетки

Блокноты содержат последовательность ячеек, которые могут содержать код или текст Markdown. Каждая ячейка выводит результаты независимо при запуске.

Кодовые ячейки

Ячейки кода позволяют писать и выполнять исходный код на языке ядра:

Кодовая ячейка

Ячейки уценки

Ячейки Markdown содержат отформатированный текст описания с использованием синтаксиса Markdown:

уценка

Ярлыки ячеек

Удобные сочетания клавиш повышают производительность ноутбука:

  • Shift + Enter – Запустить ячейку
  • Alt + Enter – Запуск ячейки на месте
  • Esc + A – Вставить ячейку выше
  • Esc + B – Вставьте ячейку ниже
  • Esc + D + D – Удалить ячейку

Управление ядром

Ядра выполняют ячейки кода и анализируют языки:

ядра

Переключайте или настраивайте ядра через панель управления Jupyter.

Статический и динамический контент

  • Выходные данные ячеек кода являются динамическими и обновляются при повторном выполнении.
  • Содержимое Markdown статично и не меняется при повторном запуске.

Это позволяет смешивать статическое повествование с динамическим кодом и результатами.

Смешивание контента

Документы Notebook позволяют легко смешивать код, выходные данные, визуализации, повествование Markdown и т. д.:

смешанный

Аннотированная записная книжка фиксирует контекстуальный мыслительный процесс вместе с кодом.

Расширения

Расширения для ноутбуков добавляют такие функции, как оглавление, свертывание кода, автосохранение и т. д.:

Расширения

Более 150 расширений обеспечивают более глубокую настройку.

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

Использование Jupyter Notebook для парсинга веб-страниц

Вот обзор того, как Jupyter Notebook можно использовать для задач веб-скрапинга:

Импорт библиотек

Импортируйте необходимые библиотеки Python для очистки и анализа данных:

from bs4 import BeautifulSoup
import requests
import pandas as pd

Отправить запросы

Используйте requests модуль для загрузки HTML-контента веб-страницы:

url = ‘http://example.com‘
response = requests.get(url)
html = response.text

Анализ содержимого

Используйте BeautifulSoup для анализа HTML и извлечения данных в списки/диктанты Python:

soup = BeautifulSoup(html, ‘html.parser‘)

names = []
for name in soup.find_all(‘span‘, class_=‘name‘):
  names.append(name.text)

data = {‘name‘: names}
df = pd.DataFrame(data)

Чистить и анализировать

Очистите извлеченные данные и проанализируйте их с помощью Pandas, Matplotlib и т. д.:

# Data cleaning
df = df[df[‘name‘].str.len() > 3]

# Visualization
df[‘name‘].hist()

Экспорт в файл

Наконец, данные можно экспортировать в файлы таких форматов, как CSV, для хранения:

df.to_csv(‘data.csv‘, index=False)

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

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

Блокноты обеспечивают правильный баланс интерактивности для сбора данных на этапах исследования и обучения.

Альтернативы ноутбукам Jupyter

Некоторые популярные альтернативные интерфейсы ноутбуков, похожие на Jupyter, включают:

  • Апач Цеппелин: Блокнот для приложений, управляемых данными, с поддержкой SQL, Scala, Python, R и т. д. Интегрируется со Spark.
  • Блокноты Kaggle: Управлял блокнотами на базе Jupyter для соревнований по науке о данных и обучения.
  • Ноутбук Apache Spark: На основе Apache Zeppelin для кластеров Spark.
  • Ноутбуки Azure: Облачные блокноты на базе Jupyter для образования и обучения.
  • Наблюдаемый: Ноутбуки, интегрированные с реактивным интерфейсом блокнотов JavaScript.
  • Гугл Колаб: Jupyter размещал блокноты в Google Cloud. Предоставляет бесплатные графические процессоры.

Хотя эти предложения имеют свои преимущества, Jupyter остается наиболее широко используемым решением для ноутбуков с открытым исходным кодом.

Проблемы с ноутбуками Jupyter

Несмотря на огромную популярность, ноутбуки Jupyter имеют и некоторые недостатки:

  • Контроль версий: В ноутбуках сложно контролировать версии и объединять изменения. Сложное сотрудничество.
  • Воспроизводимость: Вывод зависит от среды выполнения. Трудно воспроизвести ноутбуки достоверно.
  • Тестирование: Нет простого способа провести модульное тестирование блоков кода изолированно.
  • Нейминг: Переименование функций между ноутбуками вызывает проблемы из-за отсутствия модулей.
  • Масштаб: Издержки пользовательского интерфейса вызывают проблемы с производительностью для больших наборов данных или моделей.
  • Безопасность: Ноутбуки позволяют удаленно выполнять произвольный код на серверах.
  • Управление данными: Минимальная поддержка подключения к корпоративным источникам данных и инструментам бизнес-аналитики.

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

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

Заключение

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

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

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

Часто задаваемые вопросы

Вот несколько распространенных вопросов о блокнотах Jupyter:

Q: Могут ли несколько пользователей одновременно редактировать один и тот же файл Jupyter Notebook?

A: Нет, одновременное редактирование записной книжки несколькими пользователями напрямую не поддерживается. Ноутбуки соответствуют однопользовательской модели на одной машине. Однако пользователи могут самостоятельно открывать блокноты и позже объединять изменения. Некоторые расширения пытаются предоставить многопользовательские возможности, но могут содержать ошибки.

Q: Как экспортировать блокнот Jupyter в PDF?

A: Существует два основных варианта:

  1. HTML в PDF – используйте jupyter nbconvert экспортировать блокнот в PDF через HTML
  2. LaTeX в PDF – сначала конвертируйте блокнот в LaTeX с помощью nbconvert, затем скомпилируйте файл LaTeX в PDF.

Подход LaTeX обычно обеспечивает наилучшее форматирование математических уравнений.

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

A: JupyterLab предоставляет интерфейс нового поколения для Jupyter. Он предлагает гибкий интерфейс, подобный IDE, с модульным пользовательским интерфейсом, встроенными терминалами, расширяемостью с помощью расширений и поддержкой нескольких вкладок/редакторов в одном окне. JupyterLab призван в конечном итоге заменить классический интерфейс ноутбука.

Q: Могу ли я запустить Jupyter Notebook в облаке?

A: Да, Jupyter Notebook можно запускать на многих облачных платформах, таких как AWS, GCP, Azure, Databricks, SageMaker и т. д. Облачное выполнение позволяет использовать масштабируемую облачную инфраструктуру без настройки локальной среды.

Q: Подходит ли Jupyter Notebook для очистки больших сайтов?

A: Для крупномасштабного парсинга веб-страниц автономные скрипты Python лучше оптимизированы для производительности, чем блокноты. Ноутбуки полезны для экспериментов, но требуют дополнительных затрат на пользовательский интерфейс.

Присоединяйтесь к беседе

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *