Ноутбук jupiter что это
Руководство по Jupyter Notebook для начинающих
Jupyter Notebook — это мощный инструмент для разработки и представления проектов Data Science в интерактивном виде. Он объединяет код и вывод все в виде одного документа, содержащего текст, математические уравнения и визуализации.
Такой пошаговый подход обеспечивает быстрый, последовательный процесс разработки, поскольку вывод для каждого блока показывается сразу же. Именно поэтому инструмент стал настолько популярным в среде Data Science за последнее время. Большая часть Kaggle Kernels (работы участников конкурсов на платформе Kaggle) сегодня созданы с помощью Jupyter Notebook.
Этот материал предназначен для новичков, которые только знакомятся с Jupyter Notebook, и охватывает все этапы работы с ним: установку, азы использования и процесс создания интерактивного проекта Data Science.
Настройка Jupyter Notebook
Чтобы начать работать с Jupyter Notebook, библиотеку Jupyter необходимо установить для Python. Проще всего это сделать с помощью pip:
Теперь нужно разобраться с тем, как пользоваться библиотекой. С помощью команды cd в командной строке (в Linux и Mac) в первую очередь нужно переместиться в папку, в которой вы планируете работать. Затем запустите Jupyter с помощью следующей команды:
Это запустит сервер Jupyter, а браузер откроет новую вкладку со следующим URL: https://localhost:8888/tree. Она будет выглядеть приблизительно вот так:
Отлично. Сервер Jupyter работает. Теперь пришло время создать первый notebook и заполнять его кодом.
Основы Jupyter Notebook
Для создания notebook выберите «New» в верхнем меню, а потом «Python 3». Теперь страница в браузере будет выглядеть вот так:
Теперь напишем какой-нибудь код!
Вывод должен отобразиться прямо в notebook. Это и позволяет заниматься программированием в интерактивном формате, имея возможность отслеживать вывод каждого шага.
Если есть несколько ячеек, то между ними можно делиться переменными и импортами. Это позволяет проще разбивать весь код на связанные блоки, не создавая переменную каждый раз. Главное убедиться в запуске ячеек в правильном порядке, чтобы переменные не использовались до того, как были созданы.
Добавление описания к notebook
В Jupyter Notebook есть несколько инструментов, используемых для добавления описания. С их помощью можно не только оставлять комментарии, но также добавлять заголовки, списки и форматировать текст. Это делается с помощью Markdown.
Первым делом нужно поменять тип ячейки. Нажмите на выпадающее меню с текстом «Code» и выберите «Markdown». Это поменяет тип ячейки.
Интерактивная наука о данных
Соорудим простой пример проекта Data Science. Этот notebook и код взяты из реального проекта.
Также обратите внимание на то, как переменные из предыдущих ячеек, содержащие данные из CSV-файла, используются в последующих ячейках в том случае, если по отношению к первым была нажата кнопка «Run».
Это простейший способ создания интерактивного проекта Data Science!
На сервере Jupyter есть несколько меню, с помощью которых от проекта можно получить максимум. С их помощью можно взаимодействовать с notebook, читать документацию популярных библиотек Python и экспортировать проект для последующей демонстрации.
Редактировать (Edit): используется, чтобы вырезать, копировать и вставлять код. Здесь же можно поменять порядок ячеек, что понадобится для демонстрации проекта.
Вставить (Insert): для добавления ячеек перед или после выбранной.
Ячейка (Cell): отсюда можно запускать ячейки в определенном порядке или менять их тип.
Помощь (Help): в этом разделе можно получить доступ к важной документации. Здесь же упоминаются горячие клавиши для ускорения процесса работы. Наконец, тут можно найти ссылки на документацию для самых важных библиотек Python: Numpy, Scipy, Matplotlib и Pandas.
Введение в Jupyter Notebook для начинающих
Почти любой специалист по данным согласился бы с тем, что вы вряд ли сможете обойтись без использования Jupyter Notebook в какой-то момент времени, ну, если не каждый раз. Широкий круг инженеров ИИ приняли использование Jupyter Notebook в качестве инструмента, который они используют для написания и тестирования алгоритмов / моделей.
Но что такое Jupyter? И почему это называется Notebook (блокнотом)?
Таким образом, по сути, мы могли бы сказать, что блокнот используется для выражения определенного контекста, идеи или знаний с помощью текста, диаграмм, рисунков, рисунков, уравнений, таблиц и т.д.
Почему тогда Jupyter называют блокнотом?
Потому что он делает именно то, что сказано выше! Он используется для составления документов, кодов, текстов, рисунков, уравнений, диаграмм и визуализаций и даже для составления таблиц.
Что такое Jupyter Notebook?
Он использует очистку и преобразование данных, численное моделирование, статистическое моделирование, визуализацию данных, машинное обучение и многое другое.
Чаще всего Jupyter Notebook используется в среде Python. Они имеют очень интерактивные выходы и могут быть легко переданы, как обычный блокнот.
Для чего можно использовать Jupyter Notebook?
Написание кода на нескольких языков программирования
Система Jupyter поддерживает более 100 языков программирования (называемых «ядрами» в экосистеме Jupyter), включая Python, Java, R, Julia, Matlab, Octave, Scheme, Processing, Scala и многие другие. Вы можете поделиться кодом, написанным в блокноте, с другими.
Вот несколько языков, которые можно написать в Jupyter Notebook.
Python
Из всех языков, которые могут быть написаны с помощью Jupyter, python является самым популярным. Почти каждый, кто пишет код в среде Jupyter, пишет Python. По умолчанию Jupyter поддерживает Python в своей среде без использования специальных магических команд.
JavaScript
JavaScript является популярным языком и может быть написан на Jupyter. В отличие от Python, JavaScript не поддерживается по умолчанию. Вы должны использовать определенную специальную команду, чтобы сообщить ячейке, в которой вы ее выполняете, что это код JavaScript. Эти команды часто называют магическими командами.
Существует также ограничение на то, какой код JavaScript вы можете запускать в Jupyter Notebook, в отличие от python.
В нашем случает будет делана интеграция языка Java.
Matlab
Чтобы использовать Matlab в Jupyter Notebook, сначала необходимо установить Jupyter-Matlab. Первое, что нам нужно сделать, это создать виртуальную среду.
После запуска должна появиться опция для Matlab и python.
Markdowns
Jupyter Notebook пригодится, для написания разметки, и это может быть очень полезно, если вы хотите дать подробное объяснение фрагмента кода, написать документацию или словарь для определенного набора данных.
Введите приведенный ниже код в Jupyter Notebook.
Вывод должен быть следующим:
Чтобы проверить, давайте создадим папку в вашем текущем рабочем каталоге. Введите следующий код в ячейку Jupyter.
Запустите код, теперь проверьте ваш рабочий каталог, набрав код
Вы увидите, что папка Test_Folder была добавлена в нее. Вы также можете перейти к папке физически, чтобы проверить.
Визуализация данных
С использованием библиотек Python, таких как matplotlib, вы можете запускать и отображать визуализации данных прямо в вашем браузере.
Давайте попробуем сделать очень простую визуализацию, используя matplotlib.
Сначала мы импортируем библиотеку
Затем введите следующее
Наш вывод должен выглядеть так:
Еще более интригующим является то, что мы можем сделать 3D визуализации.
Сначала нам нужно импортировать библиотеку 3D визуализации
Затем сделайте 3D-проекцию
Наш вывод должен выглядеть так:
Теперь запустите следующий скрипт:
Математические и научные обозначения
Мы можем использовать такие инструменты, как Latex, прямо в наших математических и научных уравнениях типа Jupyter Notebook.
Давайте попробуем запустить несколько простых кодов LaTex. Введите следующую команду:
Вывод должен быть таким:
Если вы интересуетесь Data Science, советуем прочитать Введение в анализ данных на Python для начинающих
Что такое jupyter-ноутбук и зачем он нужен
Рассказываем о необычной среде разработки
Если вы хотите писать на Python или заниматься дата-сайенсом, вот классная штука для вас. Это уже, считай, стандарт для огромного числа питонистов, наслаждайтесь.
Что такое jupyter-ноутбук
Jupyter-ноутбук — это среда разработки, где сразу можно видеть результат выполнения кода и его отдельных фрагментов. Отличие от традиционной среды разработки в том, что код можно разбить на куски и выполнять их в произвольном порядке. Представьте, что вы можете написать кусочек кода на салфетке и сказать салфетке: «Выполнись».
В такой среде разработки можно, например, написать функцию и сразу проверить её работу, без запуска программы целиком. А ещё можно поменять порядок выполнения кода. Можно отдельно загрузить файл в память, отдельно проверить его содержимое, отдельно обработать содержимое.
А ещё в jupyter-ноутбуках есть вывод результата сразу после фрагмента кода. Например, можно прямо в середине кода увидеть построенный график, получить предварительные цифры или любую другую визуализацию.
Какие языки поддерживаются
Чаще всего, когда говорят о jupyter-ноутбуках, имеют в виду работу с Python. Но на самом деле можно работать и с другими:
Для этого используют специальные магические команды, которые так и называются — magic-команды. Они позволяют запускать код на других языках, а ещё существенно расширяют возможности обычного Python. Про эти команды мы поговорим в отдельной статье.
Ноутбук в облаке
Jupyter-ноутбуки запускаются на компьютере или в облаке.
Проще всего начать работать с ноутбуком в облаке, например Google Colab. Это значит, что вам достаточно запустить браузер и открыть нужную страницу. После этого облачная система выделит для вас ресурсы и позволит выполнять любой код.
Плюс подхода в том, что вам не нужно ничего устанавливать на компьютер — облако всё берёт на себя, а вы просто пишете и запускаете код.
Минус — программа может работать не так быстро, как на локальной машине. Ещё если вам нужны какие-то экзотические библиотеки, в облаке их может не оказаться.
Ноутбук на компьютере
Если вы сами хотите контролировать всё, что происходит с кодом и со средой разработки, тогда нужно установить jupyter-ноутбук себе на компьютер.
Так как основная среда в таком ноутбуке — это Python, то для работы у вас уже должен быть установлен Python, после сам ноутбук ставится так:
pip3 install jupyter
После установки ноутбук готов к запуску:
Эта команда откроет браузер, запустит локальный сервер для работы ноутбука и покажет нам готовую среду разработки:
Альтернативный способ — установить «Анаконду», и там будет всё: и Python, и Jupyter, и куча других нужных и полезных инструментов.
Как работать с ноутбуком
Самый простой способ — писать в нём код и сразу видеть, что получается после запуска. Например, возьмём код из статьи про рулетку и казино, вставим его в ноутбук и запустим. Ноутбук сразу же после кода покажет все данные и нарисует график:
Где применяются jupyter-ноутбуки
Основная область применения ноутбуков — машинное обучение, нейросети, визуализация данных и статистика.
Ещё такую среду часто используют для поэтапной разработки, когда нужно по шагам проверять работу разных фрагментов кода. Дело в том, что код в ноутбуках хранится в независимых ячейках и его можно запускать в любом порядке или поодиночке. Это позволяет быстро экспериментировать с алгоритмами и находить оптимальное решение.
Также jupyter-ноутбуки используются при обучении программированию на Python, чтобы писать код и сразу видеть результат его работы.
Что дальше
В следующий раз освоим ноутбуки на практике — сделаем свой ноутбук с красивыми графиками и блоками кода.
Особенности Jupyter Notebook, о которых вы (может быть) не слышали
Jupyter Notebook – это крайне удобный инструмент для создания красивых аналитических отчетов, так как он позволяет хранить вместе код, изображения, комментарии, формулы и графики:
Ниже мы расскажем о некоторых фишках, которые делают Jupyter очень крутым. О них можно прочитать и в других местах, но если специально не задаваться этим вопросом, то никогда и не прочитаешь.
Jupyter поддерживает множество языков программирования и может быть легко запущен на любом сервере, необходим только доступ по ssh или http. К тому же это свободное ПО.
Основы
Список хоткеев вы найдете в Help > Keyboard Shortcuts (список периодически дополняется, так что не стесняйтесь заглядывать туда снова).
Отсюда можно получить представление о взаимодействии с блокнотом (notebook). Если вы будете постоянно работать c Jupyter, большинство комбинаций вы быстро выучите.
Экспорт блокнота
Простейший способ — сохранить блокнот в формате IPython Notebook (.ipynb), но так как их используют не все, есть и другие варианты:
Построение графиков
Есть несколько вариантов построения графиков:
Magic-команды
Магические команды (magics) превращают обычный python в магический python. Magic-команды — это ключ к могуществу IPython’а.
Можно управлять переменными среды для вашего блокнота без перезапуска Jupyter-сервера. Некоторые библиотеки (такие, как theano) используют переменные среды, чтобы контролировать поведение, и %env — самый удобный способ.
Выполнение shell-команд
В Notebook можно вызвать любую shell-команду. Это особенно удобно для управления виртуальной средой.
Подавление вывода последней строки
Иногда вывод не нужен, и в этом случае можно или использовать команду pass с новой строки, или поставить точку запятой в конце строки:
вызовет следующее всплывающее окно:
Используйте %run для выполнения кода на Python
Но эта команда может выполнять и другие блокноты из Jupyter! Иногда это очень полезно.
Обратите внимание, что %run — это не то же, что импорт python-модуля.
Загрузит код напрямую в ячейку. Можно выбрать файл локально или из сети.
Если раскомментировать и выполнить код ниже, содержание ячейки заменится на содержание файла.
%store — ленивая передача данных между блокнотами
%who для анализа переменных глобального пространства имен
Тайминг
Если вы хотите замерить время выполнения программы или найти узкое место в коде, на помощь придет IPython.
Профилирование: %prun, %lprun, %mprun
%lprun позволяет профилировать с точностью до строк кода, но, кажется, в последнем релизе Python он не работает, так что в этот раз обойдемся без магии:
Дебаг с помощью %debug
У Jupyter есть собственный интерфейс для ipdb, что позволяет зайти внутрь функции и посмотреть, что в ней происходит.
Это не PyCharm — потребуется время, чтобы освоить, но при необходимости дебага на сервере это может быть единственным вариантом (кроме pdb через терминал).
Немного более простой способ — команда %pdb, которая активирует дебаггер, когда выбрасывается исключение:
Запись формул в LateX
Маркдаун ячейки могут отрисовывать формулы LateX с помощью MathJax.
Маркдаун — важная часть блокнотов, так что не забывайте использовать его выразительные возможности!
Использование разных языков внутри одного блокнота
Если вы соскучились по другим языкам программирования, можете использовать их в Jupyter Notebook:
Анализ Big Data
Существует несколько решений, чтобы запрашивать/обрабатывать большие объемы данных:
Ваши коллеги могут экспериментировать с вашим кодом, ничего не устанавливая
Такие сервисы, как mybinder, предоставляют доступ к Jupiter Notebook со всеми установленными библиотеками, так что пользователь может с полчаса поиграться с вашим кодом, имея под рукой только браузер.
Вы также можете установить вашу собственную системы с помощью jupyterhub, что очень удобно, если вы проводите мини-курс или мастер-класс и вам некогда думать о машинах для студентов.
Написание функций на других языках
Иногда скорости NumPy бывает недостаточно, и мне необходимо написать немного быстрого кода. В принципе, можно собрать нужные функции в динамические библиотеки, а затем написать обертку на Python…
Но гораздо лучше, когда скучная часть работы сделана за нас, правда?
Ведь можно написать нужные функции на Cython или Fortran и использовать их напрямую из кода на Python.
Для начала нужно установить модули
Лично я предпочитаю Fortran, на котором, я считаю, удобно писать функции для обработки большого объема численных данных. Подробнее о его использовании можно почитать здесь.
Должен заметить, что есть и другие способы ускорить ваш код на Python. Примеры можно найти в моем блокноте.
Множественный курсор
С недавнего времени Jupyter поддерживает множественный курсор, такой, как в Sublime или IntelliJ!
Источник: swanintelligence.com/multi-cursor-in-jupyter.html
Расширения Jupyter-contrib
устанавливаются с помощью
Это целое семейство различных расширений, включая, например, jupyter spell-checker и code-formatter, которых по умолчанию в Jupyter нет.
RISE: презентации в Notebook
Расширение, написанное Damian Avila, позволяет демонстрировать блокноты как презентации. Пример такой презентации: bollwyvl.github.io/live_reveal/#/7
Это может пригодиться, если вы обучаете использованию какой-либо библиотеки.
Система вывода Jupyter
Блокноты отображаются в HTML, и вывод ячейки тоже может быть в формате HTML, так что вы можете выводить все, что душе угодно: видео, аудио, изображения.
В этом примере я просматриваю содержимое директории с картинками в моем репозитории и отображаю первые пять из них.
Я мог бы получить тот же список bash-командой,
потому что magic-команды и bash-вызовы возвращают переменные Python:
Повторное подключение к ядру
Давным давно, если вы запускали какой-нибудь долгий процесс и в какой-то момент подключение к серверу IPython прерывалось, вы полностью теряли возможность отслеживать процесс вычислений (если только вы не записывали эти данные в файл). Приходилось или прерывать работу ядра с риском потерять некоторые результаты, или ждать окончания процесса, не имея представления о том, что в данный момент происходит.
Теперь опция Reconnect to kernel позволяет заново подключиться к работающему ядру, не прерывая вычислений, и увидеть последний вывод (хотя какая-то часть вывода все же будет потеряна).
Пишите ваши посты в Notebook
такие, как этот. Используйте nbconvert, чтобы экспортировать в HTML.
Блог Петра Калинина
Я рекомендую всем начинающим изучать питон. Но при этом я настоятельно не рекомендую использовать Jupyter notebook или подобные «среды разработки» (в кавычках, потому что на самом деле Jupyter вовсе не среда разработки). Попробую объяснить, почему.
Для начала, что такое Jupyter notebook. Это среда, позволяющая вам писать отдельные куски кода на питоне («ячейки»), а потом в более-менее произвольном порядке их исполнять. Если вы в ней не работали, то довольно сложно представить, что это; возможно, вы существенную часть текста не поймете. Но и не страшно 🙂
Итак, что мне не нравится в Jupyter в контексте обучения программированию, алгоритмам и в контексте олимпиад.
Во-первых, и, пожалуй, самое главное — это очень сильное размытие понятия «программы». В обычных средах разработки — в том же Wing (который я рекомендую), в том же PyCharm (который многие используют), да в чем угодно — вы создаете файл с программой, и запускаете целиком программу, от начала и до конца.
В Jupyter же вы создаете «ноутбук», в нем много «ячеек», и вы запускаете эти ячейки в более-менее произвольном порядке. Можно, конечно, запустить весь ноутбук от начала до конца, но это делают относительно редко. Обычно напишут одну ячейку, запустят, напишут вторую ячейку, запустят, потом найдут ошибку в первой, перезапустят, и т.д. Понимания того, что программу обычно запускают все-таки всю целиком, у вас не возникает. У меня даже не поворачивается язык назвать то, что вы пишете в Jupyter, программой — это не программа, это набор слабо связанных фрагментов кода.
Во-вторых (на самом деле, это очень тесно связано с первой проблемой выше), когда вы работаете в Jupyter notebook, у вас получается очень сложное глобальное состояние. Вы запускали какие-то ячейки, какие-то не запускали, какие-то перезапускали, при этом всё это редактировали и правили баги, и в итоге становится очень сложно понять, что у вас записано в каких переменных, откуда это взялось и как вы этого добились. Очень легко попасть в такую ситуацию, что вы получили некоторый результат, но воспроизвести его заново не можете. Поэтому это тем более не программа.
(Конечно, вы можете все делать в одной ячейке, или регулярно запускать весь ноутбук от начала до конца, но тогда, во-первых, зачем вам Jupyter, во-вторых, все равно уже чисто из-за оформления, всех этих In и Out, кажется, это не выглядит как программа.)
В-третьих, «программы» на Jupyter очень плохо переносимы. Если вы написали обычную нормальную программу на питоне, например, в среде Wing IDE, вы ее спокойно можете открыть в PyCharm или где угодно еще; или даже просто запустить из консоли обычным интерпретатором питона. Вы ее можете послать себе на почту и открыть на телефоне (у меня реально школьники пишут программы на телефоне o_O ). С Jupyter это не выйдет.
(В частности, на олимпиадах надо сдавать именно файл с программой; очень плохо понятно, как организовать автоматическую проверку Jupyter notebook’ов на таком же уровне абстракции, как проверяются обычные программы, и именно поэтому на олимпиадах нельзя писать в Jupyter.)
Аналогично, если школьник решил написать какую-то серьезную программу на питоне, серьезное приложение, с какими-нибудь внешними библиотеками типа тех же pygame или tkinter — он сможет спокойно это сделать в Wing IDE и потом без особых проблем распространять программу, надо будет лишь почитать соответствующую документацию. А в Jupyter это сложнее сделать.
В-четвертых, если вы ставите целью именно научиться программировать, а не освоить конкретную технологию, то не надо изучать какую-то нестандартную среду. Среда должна быть самой простой, позволяющей сразу и понятным образом перейти к написанию программ. Wing IDE является как раз такой средой. Jupyter — нет, там как минимум надо еще понять эту систему ячеек.
Более того, вам как программисту потом, возможно, придется писать во многих разных средах и на разных языках. Если вы писали в Wing, то вы без проблем вообще перейдете на любой другой редактор для любого другого языка. Если вы писали в Jupyter, то перейти будет сильно сложнее.
В контексте обучения алгоритмам я всегда говорю, что алгоритмы отделены от языка. Чтобы писать алгоритмы, надо, конечно, выучить какой-то язык, но это скорее побочный продукт. Чем проще язык, чем меньше он мешает именно изучению алгоритмов — тем лучше. Ну и уж тем более про среды разработки — чем проще среда разработки и чем меньше она мешает собственно обучению программированию и алгоритмам, тем лучше.
Еще одна вещь, которую я говорю всем ученикам, аргументируя выбор питона — это его универсальность. Где бы вы потом ни стали бы работать, чем бы ни стали заниматься, если это хоть как-то, пусть косвенно, связано с программированием, питон вам вполне возможно пригодится. Ну или пригодится какой-нибудь другой похожий язык.
С Jupyter notebook ситуация совсем другая. Несмотря на его популярность, он все-таки очень нишевый продукт. Он популярен в машинном обучении и смежных темах, но это лишь небольшая часть того, где применяется питон, и тем более небольшая часть того, где люди программируют вообще. Зачем учить такую нишевую технологию — непонятно.
(И даже в машинном обучении все-таки Jupyter, как я понимаю, используется только для прототипирования, продакшен-код, скорее всего, будет написан уже на чистом питоне.)
Отмечу, кстати, что среди профессиональных программистов (не машинлернеров, не датасайнтистов, а именно программистов, это разные вещи), насколько я понимаю, отношение в Jupyter тоже неоднозначное. Я, например, его не использую; даже если мне надо что-то запротипировать, несколько простых питоновских файлов мне намного удобнее. И аналогичные мнения я слышал и от других серьезных разработчиков. (Это не отменяет популярность Jupyter, я про то, что есть и люди, кому это неудобно.)
В общем, люди, не учитесь программированию в Jupyter.