Введение в jupyter notebook для начинающих

My fact-checking process

This article is the result of 50+ hours of research, testing, and writing. In addition, I shared drafts of this article with the relevant teams from Binder, Kaggle, Google, Microsoft, CoCalc, and Datalore in March 2019. I received detailed feedback from all six companies/organizations (thank you!), which I incorporated into the article before publishing.

That being said, these services are constantly changing, and it’s likely that some of this information will become outdated in the future. If you believe that something in this article is no longer correct, please leave a comment below, and I’d be happy to consider updating the article.

Updated 5/17/2019: CoCalc now supports interactive widgets. Clarified the limitations of Google Colab’s collaboration functionality.

Microsoft Azure Notebooks

To get started with Azure Notebooks, you first sign in with a Microsoft or Outlook account (or create one). The next step is to create a «project», which is structured identically to a GitHub repository: it can contain one or more notebooks, Markdown files, datasets, and any other file you want to create or upload, and all of these can be organized into folders. Also like GitHub, you can initialize a project with a README file, which will automatically be displayed on the project page. If your work is already stored on GitHub, you can import the entire repository directly into a project.

Supported languages: Python (2 and 3), R, and F#.

Ability to install packages: Hundreds of packages come pre-installed, you can install additional packages using pip or conda, and you can specify your exact package requirements using a configuration file (such as or ).

Interface similarity: Azure uses the native Jupyter Notebook interface.

Keyboard shortcuts: Azure uses all of the same keyboard shortcuts as Jupyter.

Missing features: None.

Added features:

  • The RISE extension comes pre-installed, which allows you to instantly present your notebook as a live reveal.js-based slideshow.
  • The jupyter_contrib_nbextensions package comes pre-installed, which gives you easy access to a collection of 50+ Jupyter Notebook extensions for enhancing the notebook interface.

Ease of working with datasets: You can upload a dataset to your project from your local computer or a URL, and it can be accessed by any notebook within your project. Azure also includes connectors to other Azure services, such as Azure Storage and various Azure databases.

Internet access: Yes.

Ability to work privately: Yes.

Ability to share publicly: Yes. If you choose to make your project public, anyone can access it without creating a Microsoft account, and anyone with a Microsoft account can copy it to their own account. Additionally, Azure also provides you with a public profile page (very similar to a GitHub profile), which displays all of your public projects.

Ability to collaborate: No, though this is a planned feature.

Performance of the free plan: You will have access to 4 GB of RAM and 1 GB of disk space (per project). Sessions will shut down after 60 minutes of inactivity, though they can run for 8 hours or longer.

Ability to upgrade for better performance: Yes. You can pay for an Azure subscription, though the setup process is non-trivial and the pricing is complicated.

Documentation and technical support: Azure has extensive documentation. Support is available via GitHub issues.

Conclusion: The greatest strength of Azure Notebooks is its ease of use: the project structure (borrowed from GitHub) makes it simple to work with multiple notebooks and datasets, and the use of the native Jupyter interface means that existing Jupyter users will have an easy transition. However, the RAM and disk space are not particularly generous, and the lack of collaboration is a big gap in the functionality.

2: Создание виртуальной среды для Jupyter

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

Установив зависимости, можно создать такую среду.

Для начала нужно получить команду virtualenv. Это можно сделать с помощью pip. Обновите pip и установите нужный пакет:

Флаг -H устанавливает в переменной среды home домашний каталог целевого пользователя.

После установки virtualenv можно начать работу над средой. Создайте отдельный каталог для файлов проекта и перейдите в него. Здесь мы назовем его условно my_project_dir, а вам лучше выбрать какое-то описательное название.

В этом каталоге создайте виртуальную среду Python. Для примера она называется здесь my_project_env.

Эта команда создаст каталог my_project_env в вашем каталоге my_project_dir. Внутри будет установлена локальная версия Python и pip. Их можно использовать для установки и настройки изолированной среды Python для Jupyter.

Перед установкой Jupyter нужно активировать виртуальную среду. Вы можете сделать это, набрав:

Ваша командная строка должна измениться – она отразит, что вы сейчас работаете в виртуальной среде Python. Она будет выглядеть примерно так:

Теперь вы готовы установить Jupyter в эту виртуальную среду.

OpenPGP Public Keys

Source and binary executables are signed by the release manager or binary builder using their
OpenPGP key. Release files for currently supported releases are signed by the following:

  • Pablo Galindo Salgado (3.10.x and 3.11.x source files and tags) (key id: 64E628F8D684696D)
  • Steve Dower (Windows binaries) (key id: FC62 4643 4870 34E5)
  • Łukasz Langa (3.8.x and 3.9.x source files and tags) (key id: B269 95E3 1025 0568)
  • Ned Deily (macOS binaries, 3.7.x / 3.6.x source files and tags) (key ids: 2D34 7EA6 AA65 421D, FB99 2128 6F5E 1540, and Apple Developer ID DJ3H93M7VJ)
  • Larry Hastings (3.5.x source files and tags) (key id: 3A5C A953 F73C 700D)
  • Benjamin Peterson (2.7.z source files and tags) (key id: 04C3 67C2 18AD D4FF and A4135B38)

Release files for older releases which have now reached end-of-life may have been signed by one of the following:

  • Anthony Baxter (key id: 0EDD C5F2 6A45 C816)
  • Georg Brandl (key id: 0A5B 1018 3658 0288)
  • Martin v. Löwis (key id: 6AF0 53F0 7D9D C8D2)
  • Ronald Oussoren (key id: C9BE 28DE E6DF 025C)
  • Barry Warsaw (key ids: 126E B563 A74B 06BF, D986 6941 EA5B BD71, and ED9D77D5)

You can import a person’s public keys from a public keyserver network server
you trust by running a command like:

or, in many cases, public keys can also be found
at keybase.io.
On the version-specific download pages, you should see a link to both the
downloadable file and a detached signature file. To verify the authenticity
of the download, grab both files and then run this command:

Note that you must use the name of the signature file, and you should use the
one that’s appropriate to the download you’re verifying.

(These instructions are geared to
GnuPG and Unix command-line users.)

2: Подключение к серверу через SSH-туннель (опционально)

Если вы установили Jupyter Notebook на удалённый сервер, вам нужно подключиться к веб-интерфейсу с помощью SSH-туннеля. Jupyter Notebook использует конкретный порт (:8888, :8889), а SSH-туннель позволит защитить данные, передаваемые на этот порт сервера.

SSH-туннелирование в Mac или Linux

Если вы работаете с системами Mac или Linux, вы можете создать SSH-туннель, выполнив следующую команду SSH в новом локальном окне терминала:

Команда ssh создает SSH-подключение, а флаг –L перенаправляет данный порт локального (клиентского) хоста на хост и порт на удаленной (серверной) стороне. То есть всё, что работает на этом порте на серверной стороне, будет передаваться на тот же порт на локальной машине.

Примечание: При необходимости укажите другой номер порта вместо 8888. Вместо server_username укажите имя текущего пользователя (например, 8host), а вместо your_server_ip – IP-адрес сервера. Например:

Если команда не вернула ошибок, вернитесь в среду разработки и запустите Jupyter Notebook:

В выводе команды вы найдёте URL. Откройте в браузере на локальной машине ссылку:

По запросу предоставьте токен.

SSH-туннелирование в Windows и Putty

Если вы используете Windows, вы можете создать SSH-туннель с помощью Putty.

В поле Host Name (or IP address) укажите IP-адрес сервера, в Port укажите порт 22, в поле Saved Session укажите сессию удалённого сервера. В Connection type выберите SSH и нажмите Tunnels. Введите номер локального порта для доступа к Jupyter (выберите 8000 или выше, чтобы избежать конфликтов с другими приложениями). Укажите направление localhost:8888, где :8888 – номер порта, который использует Jupyter Notebook.

Нажмите Add, после чего порты появятся в списке Forwarded ports.

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

Откройте в браузере ссылку http://localhost:8000 (если вы указали другой номер порта, откорректируйте его), чтобы подключиться к Jupyter Notebook.

По запросу предоставьте токен.

Инсталяция

Для новичка проще всего начать работу с Jupyter Notebooks, установив дистрибутив Anaconda. Anaconda является наиболее широко используемым дистрибутивом Python для работы с данными и поставляется с предустановленными наиболее популярными библиотеками и инструментами. Некоторые из крупнейших библиотек Python, включенных в Anaconda, включают NumPy, pandas и Matplotlib, хотя вы можете взглянуть на полный список с более чем 1000+ пакетов. Это позволит вам приступить к работе, без хлопот управления бесчисленными установками или беспокойства о зависимостях и проблемах установки, связанных с ОС.

Чтобы установить Анаконду, просто:

  1. Загрузите последнюю версию Anaconda для Python 3 (игнорируйте Python 2.7).
  2. Установите Anaconda, следуя инструкциям на странице загрузки и/или в исполняемом файле.

Если вы более продвинутый пользователь с уже установленным Python и предпочитаете управлять своими пакетами вручную, вы можете просто использовать pip для установки Jupyter Notebooks:

pip3 install jupyter

Шаг 3 — Подключение к приложению Jupyter Notebook через туннель SSH

Туннель SSH — простой и быстрый способ подключиться к приложению Jupyter Notebook, запущенному на вашем сервере. Secure Shell (обычно SSH) — это сетевой протокол, позволяющий выполнить защищенное подключение к удаленному серверу по незащищенной сети.

Протокол SSH включает механизм переадресации портов, позволяющий подключаться через туннель к определенным приложениям на определенном порту сервера с определенного порта на локальном компьютере. Мы научимся выполнять безопасную «переадресацию» приложения Jupyter Notebook на вашем сервере (по умолчанию использует порт ) на порт вашего локального компьютера.

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

Примечание. Приложение Jupyter Notebook можно установить через веб-консоль DigitalOcean, однако подключение к приложению через туннель SSH следует выполнять с помощью терминала или PuTTY.

Создание туннелей SSH в macOS или Linux

Если на вашем локальном компьютере используется Linux или macOS, туннель SSH можно создать, запустив всего одну команду.

— стандартная команда для создания соединения SSH. Когда она используется с директивой , вы можете указать перенаправление определенного порта локального хоста (т.е. локального компьютера) на указанный хост и порт удаленного хоста (в данном случае, на ваш сервер). Это означает, что все запускаемое на заданном порту удаленного сервера (, порт Jupyter Notebook по умолчанию) будет появляться на заданном порту локального компьютера ( в данном примере команды).

Чтобы создать собственный туннель SSH, запустите следующую команду. Вы можете изменить порт на любой предпочитаемый порт (например, если порт используется другим процессом). Рекомендуется использовать порт с номером не меньше , поскольку такие номера портов вряд ли используются другими процессами. Обязательно укажите IP-адрес вашего собственного сервера и имя пользователя сервера без привилегий root:

Если эта команда не выдаст никаких ошибок, вы войдете на удаленный сервер. Там вы должны активировать виртуальную среду:

Затем запустите приложение Jupyter Notebook:

Для подключения к Jupyter Notebook откройте в своем предпочитаемом браузере локальный порт на локальном хосте: . После подключения к Jupyter Notebook переходите к шагу 4, чтобы научиться его использовать.

Создание туннелей SSH с использованием Windows и PuTTY

PuTTY — клиент SSH с открытым исходным кодом для Windows, который можно использовать для подключения к вашему серверу. После загрузки и установки PuTTY на ваш компьютер Windows (как описано в обучающем модуле из предварительных требований) откройте программу и введите URL или IP-адрес вашего сервера, как показано здесь:

Затем нажмите + SSH внизу левой панели и нажмите Tunnels (Туннели). В этом окне введите порт, который хотите использовать для доступа к Jupyter на локальном компьютере (). Рекомендуется использовать порт с номером не меньше , поскольку такие номера портов вряд ли используются другими процессами. Если порт используется другим процессом, выберите другой неиспользуемый номер порта. Установите адрес назначения , поскольку порт — это тот порт, на котором работает Jupyter Notebook. Затем нажмите кнопку Add (Добавить), после чего порты должны появиться в поле Forwarded ports (Перенаправляемые порты):

Затем нажмите кнопку Open (Открыть). Ваш компьютер подключится к серверу через SSH и соединит желаемые порты туннелем. Если никаких ошибок не появится, вы можете активировать свою виртуальную среду:

Затем запустите Jupyter Notebook:

Затем откройте в предпочитаемом браузере локальный порт, например (или любой выбранный номер порта), чтобы подключиться к экземпляру Jupyter Notebook, запущенному на сервере. После подключения к Jupyter Notebook переходите к шагу 4, чтобы научиться его использовать.

Шаг 4 — Использование Jupyter Notebook

При доступе через браузер Jupyter Notebook предоставляет информационную панель Notebook, которая выступает как обозреватель файлов и дает интерфейс для создания, редактирования и просмотра блокнотов. Эти блокноты следует рассматривать как документы (сохраненные с расширением файла ), в которых вы заполняете любое количество отдельных ячеек. Каждая ячейка содержит интерактивный текстовый редактор, который можно использовать для запуска кода или записи сгенерированного текста. Кроме того, блокноты позволяют записывать и запускать уравнения, использовать графические элементы (такие как изображения или интерактивные графики), а также их можно экспортировать и публиковать в различных форматах (, , ). Чтобы проиллюстрировать некоторые из этих функций, мы создадим файл ноутбука из информационной панели Notebook, напишем простую текстовую панель с уравнением и запустим простой код Python 3.

К этому моменту вы должны были подключиться к серверу через туннель SSH и запустить на сервере приложение Jupyter Notebook. После перехода на адрес вы увидите страницу входа в систему:

В поле Password (Пароль) или поле токена сверху введите токен, показываемый в результатах после запуска на сервере:

Также вы можете скопировать URL с экрана терминала и вставить его в адресную строку браузера.

Jupyter Notebook автоматически покажет все файлы и папки, хранящиеся в каталоге, откуда выполняется запуск. Создайте новый файл блокнота, нажав New (Создать) и выбрав Python 3 в правом верхнем углу информационной панели Notebook:

В новом блокноте измените первую ячейку так, чтобы она принимала синтаксис разметки. Для этого нажмите Cell > Cell Type > Markdown (Ячейка > Тип ячейки > Разметка) на панели навигации сверху. Помимо разметки этот тип ячейки также позволяет записывать уравнения в LaTeX. Например, введите в ячейку следующее после ее переключения на разметку:

Чтобы преобразовать разметку в расширенный текстовый формат, нажмите , и получите следующий результат:

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

Теперь выполним простое уравнение и распечатаем результат. Нажмите Insert > Insert Cell Below (Вставка > Вставить ячейку снизу), чтобы вставить ячейку. Введите в новую ячейку следующий код:

Для запуска кода нажмите и получите следующий результат:

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

Similar services which were not reviewed

The following services are similar to the six options above, but were not included in my comparison:

  • I didn’t include any service that only provides access to JupyterLab, such as Notebooks AI, Kyso, and CyVerse. (Note that Binder, Azure, and CoCalc all allow you to use JupyterLab instead of Jupyter Notebook if you prefer.)
  • I didn’t include IBM Watson Studio Cloud because the process of getting started is cumbersome, the interface is overly complicated, the free plan has lots of limitations, and there were lots of error messages during my testing.
  • I didn’t include Code Ocean because the free plan is severely limited without an academic email address.
  • I didn’t include ZEPL because it doesn’t allow you to export notebooks using the standard .ipynb format.
  • I didn’t include any paid services, such as Saturn Cloud, Crestle.ai, and Paperspace.

4: Запуск Jupyter Notebook

Теперь у вас есть все необходимое для запуска Jupyter Notebook. Чтобы запустить приложение, выполните следующую команду:

В терминале появится лог действий Jupyter Notebook. Документы Jupyter Notebook запускаются на определенном порте. Первый запущенный документ обычно использует порт 8888. Чтобы уточнить номер порта, на котором работает Jupyter Notebook, обратитесь к выводу команды, использованной для его запуска:

Если вы используете Jupyter Notebook на локальном компьютере (а не на удаленном сервере), вы можете просто перейти к отображаемому URL-адресу и подключиться к Jupyter Notebook. Если вы используете Jupyter Notebook на удаленном сервере, вам необходимо подключиться к серверу через SSH-туннелирование, как описано в следующем разделе.

На этом этапе вы можете оставить SSH-соединение открытым и Jupyter Notebook включенным, либо же выйти из приложения и перезапустить его после настройки SSH-туннелирования. Проще, конечно, остановить процесс Jupyter Notebook. Мы запустим его снова позже, когда будет готов туннель SSH. Чтобы остановить процесс Jupyter Notebook, нажмите CTRL+C, введите Y и нажмите Enter для подтверждения. На экране появится следующее:

Binder

Binder is a service provided by the Binder Project, which is a member of the Project Jupyter open source ecosystem. It allows you to input the URL of any public Git repository, and it will open that repository within the native Jupyter Notebook interface. You can run any notebooks in the repository, though any changes you make will not be saved back to the repository. You don’t have to create an account with Binder and you don’t need to be the owner of the repository, though the repository must include a configuration file that specifies its package requirements.

Supported languages: Python (2 and 3), R, Julia, and any other languages supported by Jupyter.

Ability to install packages: You can specify your exact package requirements using a configuration file (such as or ).

Interface similarity: Binder uses the native Jupyter Notebook interface.

Keyboard shortcuts: Binder uses all of the same keyboard shortcuts as Jupyter.

Missing features: None.

Added features: None.

Ease of working with datasets: If your dataset is in the same Git repository, then it will automatically be available within Binder. If your dataset is not in that repository but is available at any public URL, then you can add a special file to the repository telling Binder to download your dataset. However, Binder does not support accessing private datasets.

Internet access: Yes.

Ability to work privately: No, since it only works with public Git repositories.

Ability to share publicly: Yes. You can share a URL that goes directly to your Binder, or someone can run your notebooks using the Binder website (as long as they know the URL of your Git repository).

Ability to collaborate: No. If you want to work with someone on the same notebook and your repository is hosted on GitHub, then you can instead use the normal pull request workflow.

Performance of the free plan: You will have access to up to 2 GB of RAM. There is no specific limit to the amount of disk space, though they ask you not to include «very large files» (more than a few hundred megabytes). Binder can be , especially when it’s run on a newly updated repository. Sessions will shut down after 20 minutes of inactivity, though they can run for 12 hours or longer. Binder has other usage guidelines, including a limit of 100 simultaneous users for any given repository.

Ability to upgrade for better performance: No. However, you do have the option of setting up your own BinderHub deployment, which can provide the same functionality as Binder while allowing you to customize the environment (such as increasing the computational resources or allowing private files).

Documentation and technical support: Binder has extensive documentation. Community support is available via Gitter chat and a Discourse forum, and product issues are tracked on GitHub.

Conclusion: If your notebooks are already stored in a public GitHub repository, Binder is the easiest way to enable others to interact with them. Users don’t have to create an account, and they’ll feel right at home if they already know how to use the Jupyter Notebook. However, you’ll want to keep the performance limitations and user limits in mind!

Other Useful Items

  • Looking for 3rd party Python modules? The
    Package Index has many of them.
  • You can view the standard documentation
    online, or you can download it
    in HTML, PostScript, PDF and other formats. See the main
    Documentation page.
  • Information on tools for unpacking archive files
    provided on python.org is available.
  • Tip: even if you download a ready-made binary for your
    platform, it makes sense to also download the source.
    This lets you browse the standard library (the subdirectory Lib)
    and the standard collections of demos (Demo) and tools
    (Tools) that come with it. There’s a lot you can learn from the
    source!
  • There is also a collection of Emacs packages
    that the Emacsing Pythoneer might find useful. This includes major
    modes for editing Python, C, C++, Java, etc., Python debugger
    interfaces and more. Most packages are compatible with Emacs and
    XEmacs.

6: Работа с Jupyter Notebook

В этом разделе мы рассмотрим основы использования Jupyter Notebook. Если в данный момент экземпляр Jupyter Notebook остановлен, запустите его с помощью команды jupyter notebook.

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

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

Чтобы создать новый документ, выберите New > Python 3 в правом верхнем выпадающем меню.

Это откроет новый документ. Теперь вы можете запустить код Python в ячейке или изменить ячейку на markdown. Например, чтобы первая ячейка принимала Markdown, кликните Cell > Cell Type > Markdown в верхней панели навигации. Теперь можно делать записи, используя Markdown, и даже включать уравнения, написанные в LaTeX, помещая их между символами $$. Например, в ячейку с поддержкой Markdown введите следующее:

Чтобы превратить Markdown в форматированный текст, нажмите сочетание клавиш Ctrl + Enter.

Вы можете использовать ячейки markdown, чтобы делать заметки и документировать свой код. Давайте выполним это простое уравнение и выведем результат на экран. Кликните на верхнюю ячейку, затем нажмите Alt + Enter, чтобы добавить ячейку под ней. Введите следующий код в новой ячейке.

Чтобы запустить код, нажмите Ctrl + Enter. На экране появится результат.

Теперь вы можете импортировать модули и использовать документы, как и в любой другой среде разработки Python!

Заключение

Начав с основ, мы познакомились с естественным рабочим процессом Jupyter Notebooks, углубились в более продвинутые функции IPython и, наконец, научились делиться своей работой с друзьями, коллегами и миром. И мы сделали все это из самой записной книжки!

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

Оригинальная статья: Jupyter Notebook for Beginners: A Tutorial

Spread the love

  • 1
    Поделиться

Захват вывода виджетов

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

Мы немного подправим код:

создать новый экземплярOutput

output_year = widgets.Output()

позвонитьclear_outputметод в обработчике событий, чтобы очистить предыдущий выбор на каждой итерации и захватить выходные данные кадра данных вwithблок.

def dropdown_year_eventhandler(change):    output_year.clear_output()    with output_year:        display(df_london)

Затем мы отобразим вывод в новой ячейке:

display(output_year)

Вот как это работает:


Демо: захват вывода в новой ячейке

Добавить комментарий

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

Adblock
detector