Разработка с Jupyter: примеры и настройка
Обзор Jupyter Notebook
Основное решение для интерактивной разработки на Python - использование Jupyter Notebook. Это веб-приложение, позволяющее создавать и делиться документами, содержащими живой код, уравнения, визуализации и текст.
Как установить и запустить Jupyter Notebook?
Установка выполняется через pip:
pip install jupyterVisual studio python библиотеки (visual studio и библиотеки python)
Затем запуск:
jupyter notebookGiga ide python (giga ide для python)
Откроется интерфейс в браузере по адресу http://localhost:8888. Можно создать новый ноутбук (Python 3) и начать работу.
Типичные проблемы:
- Ошибка "jupyter: command not found" - добавьте директорию Python Scripts в PATH.
- Ноутбук не открывается. Проверьте, не занят ли порт 8888, используйте jupyter notebook --port 8889.
Как измерять время выполнения кода и отображать графики прямо в ноутбуке?
Магические команды: %timeit для замера времени, %matplotlib inline для встраивания графиков.
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.title('Синусоида')
plt.show()
Python idle linux (idle на linux)
[график отображается в ячейке]
Notebook python (jupyter notebook в python)
Также доступны %time, %prun для профилирования.
Возможные ошибки:
- График не отображается. Убедитесь, что %matplotlib inline выполнен в отдельной ячейке перед импортом.
- Использование %timeit с функциями, изменяющими состояние, может давать некорректные результаты из-за кэширования.
Как оформлять документацию и математические формулы в ноутбуке?
Ячейки Markdown позволяют форматировать текст, вставлять заголовки, списки, ссылки, а также LaTeX-формулы с помощью $...$ или $$...$$.
# Заголовок Markdown
Это **жирный** текст и *курсив*.
Формула Эйлера: $e^{i\pi}+1=0$
Более сложная формула:
$$ \int_{0}^{\infty} e^{-x^2} dx = \frac{\sqrt{\pi}}{2} $$Jupiter notebook python (jupyter notebook с python)
Результат отобразится в виде отформатированного текста и формул.
Проблемы:
- Формулы не отображаются. Проверьте, что ячейка выбрана как Markdown (не Code).
- Синтаксическая ошибка LaTeX - используйте онлайн-проверку формул.
Как создавать интерактивные элементы управления (слайдеры, кнопки)?
Библиотека ipywidgets предоставляет виджеты, которые взаимодействуют с кодом.
import ipywidgets as widgets
from IPython.display import display
slider = widgets.FloatSlider(value=5.0, min=0, max=10, step=0.1)
display(slider)
def on_value_change(change):
print(f'Новое значение: {change["new"]}')
slider.observe(on_value_change, names='value')Spyder python ide (среда разработки spyder для python)
[отображается слайдер; при перемещении печатается значение]
Wing python ide (среда разработки wing для python)
Можно комбинировать виджеты для создания панелей управления.
Ошибки:
- Виджеты не отображаются. Установите ipywidgets: pip install ipywidgets и выполните jupyter nbextension enable --py widgetsnbextension.
- Проблемы с версиями. Используйте последнюю стабильную версию Jupyter.
Как обрабатывать большие наборы данных, не помещающиеся в оперативную память?
Библиотека Dask позволяет выполнять параллельные вычисления с массивами и датафреймами, которые превышают объём ОЗУ.
import dask.dataframe as dd
# Чтение большого CSV файла по частям
df = dd.read_csv('large_dataset.csv')
# Агрегация
result = df.groupby('category').value.sum().compute()
print(result)Dask создаёт граф задач, выполняемых параллельно, используя несколько ядер или кластер.
Проблемы:
- Ошибка "module not found" - установите dask: pip install dask[complete].
- Неверное использование .compute() может привести к загрузке всех данных в память. Используйте чанки.
Расширенные примеры работы с Jupyter Notebook
Магические команды для отладки и профилирования
Команда %debug активирует отладчик после исключения. Пример:
def faulty_function(x):
return 1 / x
try:
faulty_function(0)
except:
%debug[открывается интерактивный отладчик, позволяющий исследовать стек]
Команда %lprun (из line_profiler) показывает время выполнения каждой строки функции. Установка: pip install line_profiler, затем загрузка расширения: %load_ext line_profiler.
%load_ext line_profiler
def my_func():
a = [i**2 for i in range(1000)]
b = sum(a)
return b
%lprun -f my_func my_func()[таблица с временем по строкам]
Создание интерактивного дашборда с виджетами
Совместное использование ipywidgets и matplotlib для обновления графика при изменении параметров.
import ipywidgets as widgets
import matplotlib.pyplot as plt
import numpy as np
from IPython.display import display
def plot_func(freq, amp):
x = np.linspace(0, 2*np.pi, 100)
y = amp * np.sin(freq * x)
plt.figure()
plt.plot(x, y)
plt.title(f'freq={freq}, amp={amp}')
plt.show()
freq_slider = widgets.FloatSlider(value=1, min=0.1, max=5, step=0.1, description='Частота')
amp_slider = widgets.FloatSlider(value=1, min=0.1, max=3, step=0.1, description='Амплитуда')
widgets.interactive(plot_func, freq=freq_slider, amp=amp_slider)[отображаются два слайдера и график, обновляющийся при их изменении]
Конвертация ноутбука в другие форматы с помощью nbconvert
Команда jupyter nbconvert --to html notebook.ipynb создаёт HTML-версию. Можно конвертировать в PDF, LaTeX, Markdown, Python скрипт и др.
jupyter nbconvert --to script my_notebook.ipynb[создаётся файл my_notebook.py с извлечённым кодом]
Для конвертации в PDF требуется LaTeX. Установка: pip install nbconvert[pdf].
Типичные ошибки:
- Конвертация в PDF завершается ошибкой из-за отсутствия TeX-дистрибутива. Установите MiKTeX или TeX Live.
- Кодировка символов: в HTML могут некорректно отображаться не-ASCII символы. Укажите кодировку в параметрах.
Использование расширений для повышения продуктивности
Расширения, такие как jupyter_contrib_nbextensions, добавляют оглавление, автодополнение кода, проверку орфографии и многое другое.
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --userПосле установки в интерфейсе Jupyter появится вкладка Nbextensions, где можно активировать нужные модули.
[отображение панели конфигурации расширений]
Проблемы:
- Некоторые расширения конфликтуют с другими. Отключайте по одному.
- Не работает автодополнение. Проверьте, включено ли расширение Hinterland.
Удаленный доступ к Jupyter Notebook (на сервере)
Запуск на сервере с указанием IP и пароля для доступа из браузера по сети.
jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --NotebookApp.password=''Для установки пароля:
from notebook.auth import passwd
passwd()
# введите пароль, скопируйте хеш и вставьте в конфигурациюЗатем используйте хеш в jupyter notebook --NotebookApp.password='sha1:...'.
Проблемы:
- Доступ по сети блокируется брандмауэром. Откройте порт 8888.
- Не рекомендуется использовать --ip=0.0.0.0 без аутентификации. Настройте SSL или используйте туннель SSH.