Основные команды Notebook
ArcGIS Notebooks запускает среду Jupyter notebook, которая обеспечивает простую табличную рабочую область. В разделе описываются основные команды и аспекты работы Notebooks , включая комбинации клавиш и рекомендации.
Задание размера ячейки
Существует три типа ячеек, которые могут использоваться в блокноте. Когда вы выделили ячейку, вы можете изменить ее размер, используя ниспадающий список на панели инструментов.
Доступны следующие три типа ячеек:
- Code – блокнот интерпретирует все содержание ячейки как код на языке Python. При написании кода Python, ввод некоторых строк, таких как from или знака равно ( = ), автоматически меняет их цвет или подсвечивает их для облегчения чтения. Любая строка кода, которая начинается с решетки ( # ) будет интерпретироваться как комментарий, обозначаться зеленым курсивом и не будет выполняться блокнотом как код.
- Markdown – блокнот интерпретирует все содержание ячейки как код на языке Markdown. Это простой язык для форматирования усовершенствованного текста, используемый в интернете такими клиентами, как GitHub. См. онлайн-справочник Markdown Guide с инструкциями по использованию Markdown. Запуск ячейки Markdown преобразует содержащийся в ней текст в формат RTF. Любая строка, начинающаяся с одной или нескольких решеток ( # ), будет форматироваться как заголовок. Вы также можете добавить в ячейку Markdown сырой код HTML.
- Raw NBConvert – блокнот не обрабатывает содержание ячейки Raw NBConvert. Этот тип используется редко.
Примечание:
Также в ниспадающем списке доступен тип ячейки Heading . Однако этот тип ячеек больше не используется в среде Jupyter notebook. Выбор этого типа ячейки переключает ее в тип Markdown с присоединением решетки ( # ), которая обозначает в Markdown заголовок высшего уровня.
Использование RTF и комментариев в коде сделает ваш блокнот более читаемым и удобным для других пользователей.
Работа с ячейками
Чтобы блокнот выполнил код, он должен находиться в ячейке. Код в ячейках позволяет задавать переменные и выполнять функции из библиотек Python.
Чтобы задать переменную, запустите ячейку, которая содержит выражение переменной, включая знак равно ( = ). Шаблон блокнота по умолчанию, например, запускается с заданной переменной gis . Если вы запустите ячейку, содержащую только одно имя переменной, gis , блокнот вернет URL-адрес портала ArcGIS Enterprise в качестве результата.
Примечание:
Команды iPython, использующие восклицательные знаки, такие как !cd , для изменения каталогов из командной строки, не будут работать в ArcGIS Notebooks . Вместо этого используйте команды без восклицательных знаков, такие как cd .
Примечание:
При создании блокнотов используйте полные пути к директориям и файлам в директории рабочей области.
Например, используйте /arcgis/home/test.gdb вместо home/test.gdb .
Чтобы запустить функцию Python, введите синтаксис функции и аргументы, необходимые для нее. Дополнительные сведения см. в разделе Использование функций в ячейке ниже.
Вы можете создать новую ячейку, нажав Shift+Enter или щелкнув Вставить на ленте меню, что дает возможность вставить новую ячейку выше или ниже текущей.
Опции панели инструментов ячейки
Вы можете включить дополнительную информацию об отдельных ячейках в блокнот, используя опции на панели инструментов ячейки:
- Нет – не показывать панели инструментов ячеек.
- Редактировать метаданные —Введите метаданные для каждой ячейки с помощью JSON.
- Необработанный формат ячеек – необработанные ячейки позволяют напрямую записывать результат; содержимое этих ячеек блокнотом не оценивается.
- Слайд-шоу —Определяет, как каждая ячейка будет отображаться в слайд-шоу. Это удобно при представлении кода.
- Вложения —Управляет связанными сложениями в каждой ячейке в рабочей области блокнота.
- Теги —Создавать и управлять тегами для каждой ячейки в рабочей области блокнота.
Когда какая-либо из этих опций включена, над каждой ячейкой в блокноте появляется полоска. Одновременно может быть включена только одна опция, но любая информация, которую вы добавляете на панель инструментов, остается даже при выключении. Вы можете изменить опции панели инструментов ячейки, щелкнув Вид > Панель инструментов ячеек .
Опцию Теги можно использовать, когда вы готовите блокнот для запланированного или удаленного выполнения. Это дает возможность вставки параметров в качестве новой ячейки во время выполнения, таких как данные учетной записи или переменные для определения. Вы можете указать место в блокноте, где будет добавлена эта новая ячейка, добавив тег parameters к ячейке в блокноте. Новая ячейка вставляется после этой ячейки. Операция распознает только одну ячейку с тегом parameters .
Импорт библиотек и модулей
В шаблоне блокнота по умолчанию, ArcGIS Notebooks импортирует только модуль gis из ArcGIS API for Python . Обычно вам требуются дополнительные библиотеки Python, доступные в среде Notebook. Чтобы получить доступ к этим библиотекам, запустите команду import .
Создайте новую ячейку и введите import , затем запустите ее.
В ArcGIS API for Python и ArcPy, а также в некоторых других случаях, библиотеки Python собраны в модули. Чтобы получить доступ к библиотеке в модуле, объявите модуль с помощью выражения from , затем объявите библиотеку с помощью выражения import . Например, чтобы вызвать библиотеку WebScene из модуля mapping в ArcGIS API for Python , запустите в ячейке следующую команду:
from arcgis.mapping import WebScene
ArcGIS Notebooks содержит функцию автозаполнения, работающую при запуске ячеек. Вы можете использовать ее для облегчения поиска необходимых библиотек и модулей. В ячейке, введите первую часть команды, затем нажмите Tab , чтобы активировать функцию автозаполнения. Она вводит возможные значения для завершения команды.
Например, если вы ввели arcgis. и нажали Tab , в блокноте откроется ниспадающий список со всеми модулями, доступными в ArcGIS API for Python . Для перемещения по списку используйте стрелки вверх и вниз; когда вы найдете нужный вариант, нажмите Enter , чтобы вставить его в строку кода.
- Использование ArcGIS API for Python в блокноте
- Использование ArcPy в блокноте
Использование функций в ячейке
Для выполнения анализа и работы с данными в блокнотах используются функции Python. Функции находятся в библиотеках Python, они часто используют входные аргументы, чтобы определить способ выполнения и обрабатываемые данные.
Инструмент автозаполнения позволяет находить функции с помощью ниспадающего списка. В любой библиотеке bar , введите bar. и нажмите Tab , чтобы увидеть доступные функции.
Например, для просмотра инструментов, доступных в библиотеке Summarize Data модуля arcgis.features , введите следующий код и нажмите Tab :
features.summarize_data.
Инструмент автозаполнения отображает ниспадающий список с доступными в библиотеке инструментами.
Часто команда блокнота имеет обязательные или дополнительные аргументы — параметры, которые предоставляют информацию для выполнения команды. Если синтаксис команды заканчивается пустым набором кавычек ( () ), команде необходимо добавить обязательные аргументы или указать дополнительные.
Введите аргументы в кавычках, разделяя их запятыми. Чтобы просмотреть строку обязательных или дополнительных аргументов для любой функции, замените пустые кавычки знаком вопроса и запустите ячейку. Откроется docstring функции со списком всех аргументов.
Например, все инструменты, доступные на панели Анализ редактора блокнота, требуют аргументов. Добавление в ячейку инструмента с этой панели приведёт к вставке его синтаксиса ArcGIS API for Python , заканчивающегося пустыми кавычками. Если вы попытаетесь запустить этот синтаксис не указав один или несколько аргументов, появится сообщение об ошибке.
Если вы хотите запустить инструмент Агрегировать точки из библиотеки Summarize Data, необходимо найти инструмент на панели Анализ и добавить его в новую ячейку, или просто ввести следующую строку:
features.summarize_data.aggregate_points()
Чтобы просмотреть список аргументов этого инструмента, измените строку и запустите ячейку:
features.summarize_data.aggregate_points?
Откроется окно справки docstring для данного инструмента. В нем есть кнопки для развертывания или закрытия окна, в правом верхнем углу.
- Для любой функции foo() , наберите foo? и нажмите Enter , чтобы отобразить строку документации с описанием функции.
- Если ячейка начинается с ! , ее содержание будет работать в контейнере блокнота как пакетная команда.
Запуск ячейки
При запуске ячейки выполняется ее код вместе со всеми операторами. Вы можете запустить только всю ячейку, нельзя запустить только ее часть или одну строку кода. Ячейка может содержать одну или несколько строк кода.
Чтобы запустить выбранную ячейку, щелкните кнопку Запустить на панели инструментов или щелкните Ячейки > Запустить ячейки . Также можно нажать Ctrl+Enter , чтобы запустить ячейку, в которой находится курсор мыши.
Чтобы вручную остановить работу ячейки, щелкните Ядро > Прервать . Также можно щелкнуть квадратную кнопку остановки на панели инструментов.
Слева от каждой ячейки кода находится элемент In [ ] . Если ячейка еще не запускалась, или результаты предыдущего запуска ячейки были удалены, скобки будут пусты. Если ячейка в данный момент работает, в скобках будет звездочка: In [*] . Когда работа ячейки завершена, в скобках In [ ] появляется число, означающее порядок выполнения ячеек. Поскольку ячейки в блокноте могут запускаться в любом порядке и несколько раз, число In [ ] может не соответствовать порядковому номеру.
Примечание:
Ячейки Markdown содержат элемент In [ ] до запуска, после запуска элемент исчезает, а содержание ячейки становится текстом в формате RTF.
Когда строка кода из исполняемой ячейки создает выходные данные, они отображаются в блокноте под ячейкой. Рядом с выходными данными находится элемент Out [ ] , который соответствует содержанию элемента In [ ] соответствующей ячейки.
Работа с ядром
При запуске нового блокнота загружается ядро. Это ядро исполняет код, запускаемый в блокноте. Когда вы запускаете ячейки в блокноте (заполняя из элементы In [ ] ), переменные, заданные в исполняемых ячейках, сохраняются в памяти ядра.
Чтобы перезапустить ядро блокнота и очистить переменные в памяти, щелкните Ядро > Перезапустить . Если вы хотите перезапустить ядро, очистите переменные в памяти, затем последовательно запустите все ячейки блокнота, щелкните Ядро > Перезапустить & Запустить все .
Когда вы закончили активную работу с блокнотом, щелкните Ядро > Выключить , чтобы отключить ядро и очистить переменные в памяти. Ядро останавливает работу, но выходные данные ячеек не стираются.
Когда блокнот остается неактивным в течение длительного времени, ядро автоматически отключается и очищает все переменные в памяти. По умолчанию используется период в 24 часа, но администратор сайта может сделать его длиннее или короче.
В этом разделе
- Задание размера ячейки
- Работа с ячейками
- Импорт библиотек и модулей
- Использование функций в ячейке
- Запуск ячейки
- Работа с ядром
Добавляем в Jupyter Notebooks красоту и интерактивность
Многие используют в своей работе Jupyter Notebooks. Но с ростом сложности проекта появляются проблемы. В блокноте появляются ячейки с красными пометками для самого себя «перед запуском укажи число. » или «задай количество итераций исходя из. ». Какой-то откат к командной строке получается.
Да и вывод данных на экран не всегда воспринимается без пояснений сторонним человеком, который привык к красивым таблицам, картинкам и прочим современным элементам интерфейса.
Например, у нас есть данные по площадям городов и численности населения. Выведем их на экран в «традиционном виде»:
tabledata = [["Москва", 2561, 12615882], ["Санкт-Петербург", 1439, 5383890], ["Ярославль", 205, 609828], ["Хабаровск", 383, 1321473]] tabledata
Видим в блокноте:
[['Москва', 2561, 12615882], ['Санкт-Петербург', 1439, 5383890], ['Ярославль', 205, 609828], ['Хабаровск', 383, 1321473]]
Современному, избалованному человеку такой формат отображения не всегда нравится. Нужно привести данные к более привычному табличному виду.
Можно использовать широко распространенную библиотеку pandas
import pandas as pd pd.DataFrame(tabledata, columns=["Город","Площадь (кв. км)", "Население (человек)"])
Если по каким-то причинам использование pandas не устраивает, можно воспользоваться другой библиотекой или написать свою функцию.
Рассмотрим одну из таких библиотек — tabulate (https://pypi.org/project/tabulate/)
Для установки запустите из командной строки pip install tabulate
from IPython.display import HTML, display from tabulate import tabulate display(HTML(tabulate(tabledata, tablefmt='html')))
Можно вывести данные в «псевдографическом» виде.
print(tabulate(tabledata))
Можно добавить заголовки
print(tabulate(tabledata, headers=["Город","Площадь (кв. км)", "Население (человек)"]))
И индексы
display(HTML(tabulate(tabledata, headers=["Город","Площадь (кв. км)", "Население (человек)"], tablefmt='html', showindex="always")))
tabulate позволяет получить визуально такой же результат как и pandas.
Можно написать свою функцию, которая потом обрастёт дополнительными возможностями.
from IPython.display import HTML, display def dataToTable(data, columns = None): if len(data) == 0 : display(HTML('Нет данных')) return hdr = '' if columns != None: for col in columns: # Формируем заголовок таблицы hdr = hdr + '' + col + ' ' hdr = '' + hdr + ' ' dt = '' for row in data: # Проходим циклом по всем строкам dt = dt + '' for cell in row: # И формируем тело таблицы dt = dt + '' + str(cell) + ' ' dt = dt + ' ' display(HTML('' + hdr + dt + '
')) # Выводим таблицу на экран dataToTable(tabledata, columns=["Город","Площадь (кв. км)", "Население (человек)"])
Вывод изображений
Мы привыкли к пиктограммам и иконкам. Даже в прогнозе погоды мы видим картинки с солнышками и тучками. Чтобы добавить изображения в наши программы можно использовать библиотеку IPython. Ее функция Image позволяет работать с изображениями (PNG/JPEG/GIF), размещенными как локально, так и на интернет-ресурсах. Задавать их размеры.
from IPython.display import Image # Библиотека для отображения картинок display(Image(url='https://habrastorage.org/webt/9m/2c/zd/9m2czdt-uv7oe6v-nws3frtw7-a.jpeg', width = 200) # Задаем ширину картинки ) # display(Image(filename='Python_royal_35.JPG', width = 200)) # Локальный файл
Украшаем текст
Конечно, можно генерировать HTML напрямую, используя все его возможности:
from IPython.core.display import display, HTML display(HTML("Мой зеленый текст"))
А можно воспользоваться библиотекой termcolor. Она позмоляет не углубляясь в HTML задавать цвет текста и фона, задавать атрибуты шрифта. Описание библиотеки тут — pypi.org/project/termcolor
from termcolor import colored # Для установки запустите из командной строки pip install termcolor print(colored("Красный текст (без атрибутов)", "red")) print(colored("Красный текст (подчеркивание)", "red", attrs=["underline"])) print(colored("Зеленый текст на красном фоне (без атрибутов)", "green", "on_red" )) print(colored("Зеленый текст на красном фоне (bold)", "green", "on_red", attrs=["bold"]))
Отображаем прогресс выполнения задачи
Никому не нравится следить за ходом выполнения длительной задачи не понимая какая часть работы уже выполнена.
Видеть сколько осталось — гораздо приятнее (да-да, знаю, что скорость движения «червяка» может меняться).
Для установки используйте команды
pip install ipywidgets jupyter nbextension enable --py widgetsnbextension
from ipywidgets import IntProgress from IPython.display import display import time prgBar = IntProgress(min = 0, max = 100) # Создаем прогрессбар display(prgBar) # Выводим прогрессбар на экран while prgBar.value < prgBar.max: # Пока положение не дошло до максимума - продолжаем цикл prgBar.value = prgBar.value + 1 # Двигаем "полоску" time.sleep(0.1) print('Процесс завершен')
Интерактивное взаимодействие с пользователем
Та же библиотека ipywidgets позволяет не только отображать, но и вносить информацию.
Самый, наверное, простой пример взаимодействия с пользователем — это реакция на нажатие кнопки. Библиотека ipywidgets позволяет создать кнопку с заданными параметрами (текстом, стилем и размерами) и назначить функцию-обработчик ее нажатия.
from IPython.display import display from ipywidgets import Button # Создаем кнопку с нужными параметрами button1 = Button(description="Нажми меня!", button_style='success' # 'success', 'info', 'warning', 'danger', '' ) def on_button_clicked(b): # Описываем обработчик события print("Клик") button1.on_click(on_button_clicked) # Назначаем этот обработчик на событие "on_click" display(button1) # Отображаем кнопку
Размер кнопки задается при помощи свойства layout
from IPython.display import display from ipywidgets import Button, Layout button2 = Button(description='Кнопка с заданными размерами', button_style='success', layout=Layout(width='50%', height='80px')) display(button2)
Для удобного ввода пользователем чисел и дат есть компоненты FloatSlider и DatePicker.
Чтобы получить введенное значение — используется свойство .value
Чтобы отловить момент изменения значений, нужно использовать событие observe
from IPython.display import display from ipywidgets import FloatSlider fSlider = FloatSlider( value=7.5, # Первоначальное значение min=0, # Минимум max=10.0, # Максимум step=0.1, # Шаг изменения description='Параметр:', continuous_update=False, # True - событие observe возникает для каждого шага при изменении значения orientation='horizontal' # Горизонтальное или вертикальное расположение ) def on_value_change(b): print(b['old'], '->', b['new']) fSlider.observe(on_value_change, names='value') display(fSlider)
Проверим доступ к текущему значению:
fSlider.value
from IPython.display import display from ipywidgets import DatePicker dPicker = DatePicker( description='Дата:' ) def on_button_clicked(b): print(b['old'], '->', b['new']) dPicker.observe(on_button_clicked, names='value') display(dPicker)
Для выбора одного значения из нескольких вариантов есть список RadioButtons, выпадающий список Dropdown и группа кнопок ToggleButtons. value и observe для этих компонентов используются точно так же.
Значения можно задавать как в виде перечня строчных величин, так и в виде списка кортежей.
Попробуем самый простой вариант, со значениями в виде списка строк.
from IPython.display import display from ipywidgets import RadioButtons rButtons1 = RadioButtons( options=['Красный', 'Желтый', 'Зеленый'], value='Желтый', # Выбор по умолчанию description='Цвет:' ) def on_button_clicked(b): print(b['old'], '->', b['new']) rButtons1.observe(on_button_clicked, names='value') display(rButtons1)
Выведем на экран значение:
rButtons1.value
В этом режиме значением rButtons1.value является строка.
Пробуем второй вариант задания списка значений:
from IPython.display import display from ipywidgets import RadioButtons rButtons2 = RadioButtons( options=[('Красный', 1), ('Желтый', 2), ('Зеленый', 3)], value=2, # Выбор по умолчанию description='Цвет:' ) def on_button_clicked(b): print(b['old'], '->', b['new']) rButtons2.observe(on_button_clicked, names='value') display(rButtons2)
В этом режиме значением rButtons2.value является число, соответствующее выбранному значению.
Аналогично работает выпадающий список (Dropdown)
from IPython.display import display from ipywidgets import Dropdown dropdown1 = Dropdown( options=[('Красный', 1), ('Желтый', 2), ('Зеленый', 3)], value=2, # Выбор по умолчанию description='Цвет:' ) def on_button_clicked(b): print(b['old'], '->', b['new']) dropdown1.observe(on_button_clicked, names='value') display(dropdown1)
Для ввода булевых значений можно использовать Checkbox и ToggleButton. У них есть уже знакомые нам value и observe.
from IPython.display import display from ipywidgets import Checkbox cb1 = Checkbox( value=False, description='Согласен' ) def on_button_clicked(b): print(cb1.value) cb1.observe(on_button_clicked, names='value') display(cb1)
from IPython.display import display from ipywidgets import ToggleButton tb1 = ToggleButton( value=False, description='Не нажата', disabled=False, button_style='success', # 'success', 'info', 'warning', 'danger' or '' tooltip='Принять условия', icon='check' ) tb2 = ToggleButton( value=True, description='А эта нажата', disabled=False, button_style='success', # 'success', 'info', 'warning', 'danger' or '' tooltip='Принять условия', icon='check' ) display(tb1, tb2)
Для ввода многострочного текста служет компонент Textarea
from IPython.display import display from ipywidgets import Textarea, Layout Textarea1 = Textarea( value='Привет, Habr!', placeholder='Введите текст', description='Текст:', layout=Layout(width='600px', height='100px') ) display(Textarea1)
ИИ (интерфейсные изыски)
Когда элементов интерфейса становится слишком много, хочется пойти по пути десктопных приложений и объединить отдельные элементы в обособленные группы.
Для этого нам пригодятся Accordion и Tab.
from IPython.display import display from ipywidgets import Accordion, IntSlider, Text accordion = Accordion(children=[IntSlider(value=42), Text(value='Сорок два')]) accordion.set_title(0, 'Раздел 1') accordion.set_title(1, 'Раздел 2') display(accordion)
from IPython.display import display from ipywidgets import Tab, IntSlider, Text tab = Tab() tab.children = [IntSlider(value=42), Text(value='Сорок два')] tab.set_title(0, 'Раздел 1') tab.set_title(1, 'Раздел 2') display(tab)
Библиотека ipywidgets не ограничивается элементами, которые я перечислил. В ней еще масса полезных вещей, которые могут сделать программы в Jupyter Notebooks более привлекательными.
- Python
- Программирование
Блокнот Jupyter: Введение
Jupyter Notebook - это веб-приложение с открытым исходным кодом, которое можно использовать для создания и обмена документами, содержащими живой код, уравнения, визуализации и текст. Jupyter Notebook поддерживается программистами из Project Jupyter.
Jupyter является преемником более раннего проекта IPython Notebook. Название Jupyter происходит от основных поддерживаемых языков программирования, которые он поддерживает: Julia, Python и R. Jupyter снабжаемые ядром IPython, которое позволяет вам писать свои программы на Python. В настоящий момент, существует более 100 других ядер, которые вы можете использовать.
Начало работы с Jupyter Notebook
Jupyter Notebook изначально не входит в состав Python, поэтому Вам потребуется установка Jupyter.
Существует множество дистрибутивов языка Python, но особое внимание мы уделим только 2 основным. Самым популярным из них является CPython - это базовая версия Python, которую вы можете найти на их веб-сайте. Рекомендуем использовать Python 3.
Установка
Чтобы начать работать с Jupyter Notebook, библиотеку Jupyter необходимо установить для Python. Проще всего это сделать с помощью pip:
$ pip install jupyter
Следующим по популярности дистрибутивом Python является Anaconda . У Anaconda есть собственный установщик под названием conda, который вы можете использовать для установки стороннего пакета. Однако Anaconda установлена со многими предустановленными научными библиотеками, включая Jupyter Notebook, поэтому вам не нужно ничего делать, кроме установки самой Anaconda.
Запуск Jupyter Notebook Server
Теперь, когда у вас установлен Jupyter, давайте узнаем, как его использовать. Для начала все, что вам нужно сделать, это открыть приложение и перейти в папку по вашему выбору. Для начала, рекомендуем использовать что-то вроде папки «Documents» и создать в ней подпапку под названием « Notebooks» или что-то еще, что легко запомнить.
Затем просто перейдите в это место в своем терминале и выполните следующую команду:
$ jupyter notebook
Это запустит сервер Jupyter, а браузер откроет новую вкладку со следующим URL: http: // localhost: 8888 / tree
Теперь ваш браузер должен выглядеть примерно так:
Отлично! Обратите внимание, что прямо сейчас вы фактически не используете Notebook, а просто запускаете сервер Notebook. Теперь пришло время создать первый notebook и заполнять его кодом.
Создание записной книжки
Теперь, когда вы знаете, как запустить сервер Notebook, вам, вероятно, следует научиться создавать настоящий документ Notebook.
Для создания notebook выберите «New» в верхнем меню, а потом «Python 3». Теперь страница в браузере будет выглядеть вот так:
Название вашего Notebook
Вы заметите, что вверху страницы есть слово Untitled . Это заголовок страницы и имя вашей записной книжки. Его лучше поменять на что-то более понятное. Просто наведите мышью и кликните по тексту. Теперь можно выбрать новое название:
Вывод кода
Ячейка Notebook по умолчанию использует код всякий раз, когда вы создаете его впервые, и эта ячейка использует ядро, которое вы выбрали при запуске Notebook.
Перед первой строкой написано In [] . Это ключевое слово значит, что дальше будет ввод. Попробуйте написать простое выражение вывода. Не забывайте, что нужно пользоваться синтаксисом Python 3. После этого нажмите «Run». Если вы предпочитаете использовать клавиатуру, вы можете просто нажать Shift + Enter .
Попробуем добавить в эту ячейку следующий код:
print('Hello Jupyter!')
При запуске кода, результат должен выглядеть таким образом:
Вывод должен отобразиться прямо в notebook. Это и позволяет заниматься программированием в интерактивном формате, имея возможность отслеживать вывод каждого шага. Также обратите внимание на то, что In [] изменится и вместо нее станет In [1] . Число в скобках означает порядок, в котором эта ячейка будет запущена. В первой цифра 2 , потому что она была второй запущенной ячейкой. Каждую ячейку можно запускать индивидуально и цифры в скобках будут менять соответственно. Если есть несколько ячеек, то между ними можно делиться переменными и импортами. Это позволяет проще разбивать весь код на связанные блоки, не создавая переменную каждый раз. Главное убедиться в запуске ячеек в правильном порядке, чтобы переменные не использовались до того, как были созданы.
Меню
В Jupyter Notebook есть несколько меню, которые вы можете использовать для взаимодействия с вашим Notebook.. Вот список текущих меню:
На сервере Jupyter есть несколько меню, с помощью которых от проекта можно получить максимум. С их помощью можно взаимодействовать с notebook, читать документацию популярных библиотек Python и экспортировать проект для последующей демонстрации
Первое меню - это меню «Файл». В нем вы можете создать новый блокнот или открыть уже существующий. Здесь также можно переименовать Блокнот. Думаю, самый интересный пункт меню - это опция « Сохранить и проверить» . Это позволяет вам создавать контрольные точки, к которым вы можете откатиться, если вам нужно.
Далее идет меню « Правка» . Здесь вы можете вырезать, копировать и вставлять ячейки. Это также то место, куда вы должны пойти, если хотите удалить, разделить или объединить ячейку. Вы также можете изменить порядок ячеек здесь.
Обратите внимание, что некоторые элементы в этом меню неактивны. Причина в том, что они не применяются к текущей выбранной ячейке. Например, в ячейку кода нельзя вставить изображение, а в ячейку Markdown можно. Если вы видите пункт меню серого цвета, попробуйте изменить тип ячейки и посмотрите, станет ли этот элемент доступным для использования.
Вид меню полезно для переключения видимости заголовка и панели инструментов. Вы также можете включить или выключить номера строк в ячейках. Это также то место, куда вы должны пойти, если хотите возиться с панелью инструментов ячейки.
Меню « Вставка» предназначено только для вставки ячеек выше или ниже текущей выбранной ячейки.
Меню « Ячейка» позволяет запускать одну ячейку, группу ячеек или все ячейки. Отсюда можно запускать ячейки в определенном порядке или менять их тип. Другая удобная функция в этом меню - это возможность очистить вывод ячейки.
Jupyter Notebook использует Ядро с привязкой к языкам, компьютерную программу, которая запускает и проводит внутренний анализ кода.
Вероятно, вы не будете так часто работать с ядром, но бывают случаи, когда вы отлаживаете Notebook, и вам нужно перезапустить ядро. Когда это произойдет, вы отправитесь именно сюда.
Widgets меню для сохранения и очистки состояния виджета. Виджеты - это в основном виджеты JavaScript, которые вы можете добавлять в свои ячейки для создания динамического содержимого с помощью Python (или другого ядра).
Наконец, у вас есть меню « Справка» , в котором вы можете узнать о сочетаниях клавиш Notebook, ознакомиться с пользовательским интерфейсом и множеством справочных материалов.
Пусковые терминалы и прочее
Jupyter Notebook также позволяет запускать больше, чем просто записные книжки. Вы также можете создать текстовый файл, папку или Терминал в своем браузере. Вернитесь на домашнюю страницу, которая открылась при первом запуске сервера Jupyter в http://localhost:8888/tree. Перейдите к кнопке New и выберите один из других вариантов.
Терминал, вероятно, является наиболее интересным из всех, поскольку он запускает терминал вашей операционной системы в браузере. Это позволяет запускать в браузере bash, Powershell и т. д. И запускать там любую команду, которая может вам понадобиться.
Просмотр того, что работает
Также на домашней странице вашего сервера Jupyter ( http://localhost:8888/tree) есть две другие вкладки: Запуск и Кластеры .
Running вкладка покажет вам , какие ноутбуки и терминалы вы в настоящее время работаете. Это полезно, когда вы хотите выключить сервер, но вам нужно убедиться, что вы сохранили все свои данные. К счастью, записные книжки автоматически сохраняются довольно часто, поэтому вы редко теряете данные. Но хорошо иметь возможность видеть, что работает, когда вам это нужно.
Еще одна приятная особенность этой вкладки заключается в том, что вы можете просмотреть свои запущенные приложения и закрыть их там.
Добавление описания к notebook
В Jupyter Notebook есть несколько инструментов, используемых для добавления описания. С их помощью можно не только оставлять комментарии, но также добавлять заголовки, списки и форматировать текст.
Типы ячеек
Технически существует четыре типа ячеек: Code, Markdown, Raw NBConvert и Heading.
Тип ячейки "Заголовок" больше не поддерживается и отобразит диалоговое окно, в котором говорится об этом. Вместо этого вы должны использовать Markdown для своих заголовков.
Тип ячеек Raw NBConvert предназначен только для особых случаев использования nbconvert инструмента командной строки. По сути, он позволяет вам управлять форматированием очень специфичным образом при преобразовании из записной книжки в другой формат.
Основные типы ячеек, которые вы будете использовать, - это типы ячеек Code и Markdown.
Вы уже узнали, как работают ячейки кода, поэтому давайте узнаем, как стилизовать текст с помощью Markdown.
Стилизация вашего текста
Jupyter Notebook поддерживает Markdown, язык разметки, являющийся надмножеством HTML. В этом руководстве будут рассмотрены некоторые основы того, что вы можете делать с Markdown.
Установите для новой ячейки значение Markdown, а затем добавьте в ячейку следующий текст:
Когда вы запустите ячейку, результат должен выглядеть так:
Если вы предпочитаете выделять текст жирным шрифтом, используйте двойное подчеркивание или двойную звездочку.
Заголовки
Создавать заголовки с помощью Markdown довольно просто.
Первым делом нужно поменять тип ячейки. Нажмите на выпадающее меню с текстом «Code» и выберите «Markdown». Это поменяет тип ячейки.
Попробуем несколько вариантов. Заголовки можно создавать с помощью символа # . Один такой символ создаст самый крупный заголовок верхнего уровня. Чем больше # , тем меньше будет текст.
Сделать текст курсивным можно с помощью символов * с двух сторон текста. Если с каждой стороны добавить по два * , то текст станет полужирным. Список создается с помощью тире и пробела для каждого пункта.
Затем, когда вы запустите ячейку, вы получите красиво отформатированный заголовок:
Создание списков
Вы можете создать список (маркеры), используя тире, знаки плюса или звездочки. Вот пример:
Подсветка кода и синтаксиса
Если вы хотите вставить пример кода, который не подразумевает дальнейший запуск пользователем, вы можете использовать Markdown, чтобы вставить его. Для выделения встроенного кода просто заключите код в обратные кавычки. Если вы хотите вставить блок кода, вы можете использовать тройные обратные кавычки, а также указать язык программирования:
Экспорт записных книжек
Когда вы работаете с Jupyter Notebooks, случаются моменты, когда вам нужно поделиться своими результатами с нетехническими специалистами. Когда вы столкнетесь с такой ситуацией, вам поможет nbconvert инструмент, устанавливаемый с Jupyter Notebook, для преобразования или экспорта вашего Notebook в один из следующих форматов:
- HTML
- LaTeX
- RevealJS
- Markdown
- ReStructured Text
- Executable script
nbconvert проект программного обеспечения с открытым исходным кодом, который поставляется в комплекте санаконда, Процитироватьnbconvert docs, это позволяет: презентация информации в знакомых форматах, таких как PDF.
Jinja - это язык шаблонов (или шаблонизатор), созданный для Python. Следует обратить внимание, что возможность экспорта во все вышеперечисленные форматы nbconvert также зависит от Pandoc и TeX. Если у вас нет ни одного из них, некоторые типы экспорта могут не работать.
Как использовать nbconvert
У nbconvert команды не так много параметров, что упрощает обучение ее использованию. Откройте терминал и перейдите в папку, содержащую записную книжку, которую вы хотите преобразовать. Основная команда преобразования выглядит так:
$ jupyter nbconvert --to
Пример использования
Представим, что у вас есть записная книжка с именем py_examples.ipynb и вы хотите преобразовать ее в PDF. Вот команда, которую вы бы использовали для этого:
$ jupyter nbconvert py_examples.ipynb --to pdf
Когда вы запустите эту команду, вы должны увидеть вывод, который расскажет вам о процессе преобразования.
nbconvert будет отображать предупреждения и ошибки, если они есть. Предполагая, что все идет по плану, теперь у вас будет py_examples.pdf файл в вашей папке.
Процесс преобразования для других типов файлов очень похож. Вам просто нужно указать, в nbconvert какой тип конвертировать (PDF, Markdown, HTML и т.д).
Использование меню
Вы также можете экспортировать текущий запущенный Блокнот, перейдя в меню « Файл» и выбрав « Загрузить как» .
Эта опция позволяет скачивать файлы во всех nbconvert поддерживаемых форматах . Преимущество использования меню в том, что вам совсем не нужно учить nbconvert, если вы этого не хотите. Однако я рекомендую сделать это, так как вы можете использовать его nbconvert для одновременного экспорта нескольких записных книжек, а это меню не поддерживает.
Расширения для Notebook
В этом разделе мы разберемся с расширениями Notebook.
Хотя в Jupyter Notebooks встроено множество функций, несмотря на это, вы можете добавлять новые, с помощью расширений. На самом деле Jupyter поддерживает четыре типа расширений:
- Kernel
- IPython kernel
- Notebook
- Notebook server
Что такое расширения?
Расширение Notebook ( nbextension ). С помощью nbconvert вы можете легко превратить ваш Jupyter в скрипт Python из командной строки. Это также позволяет вам превратить вашу записную книжку Jupyter в удобные для обмена форматы, такие как файлы .html и .pdf.
Где я могу найти расширения?
Вы можете использовать Google или искать расширения Jupyter Notebook. На самом деле их довольно много. Один из самых популярных наборов расширений называется jupyter_contrib_nbextensions , который вы можете получить на GitHub . На самом деле, это набор расширений, предоставляемых сообществом Jupyter и устанавливаемых с помощью pip .
Как их установить?
Большинство расширений Jupyter Notebook можно установить с помощью pip инструмента Python . Если вы обнаружите расширение, которое не может быть установлено pip , вам, вероятно, придется использовать следующую команду:
$ jupyter nbextension install EXTENSION_NAME
Это только установит расширение, но не сделает его активным. Вам нужно будет включить расширение после его установки, выполнив следующее:
$ jupyter nbextension enable EXTENSION_NAME
Возможно, вам потребуется перезапустить ядро Jupyter Notebook, чтобы увидеть расширение.
Есть хорошее мета-расширение под названием Jupyter NbExtensions Configurator , которое стоит приобрести для управления другими расширениями. Он позволяет вам включать и отключать ваши расширения из пользовательского интерфейса Jupyter Notebook, а также показывает все установленные в настоящее время расширения.
Заключение
Jupyter Notebook весьма полезен не только для изучения такого языка программирования, как Python, но и для обмена вашими данными.
Вы можете превратить свой Notebook в слайд-шоу или поделиться им в Интернете с помощью GitHub.
У Google и Microsoft есть собственная версия Notebook, которую вы можете использовать для создания и совместного использования Notebook в Google Colaboratory и Microsoft Azure Notebooks соответственно. На этих платформах вы также сможете найти что-то интересное для себя.
Project Jupyter недавно выпустил свой последний продукт - JupyterLab . JupyterLab включает Jupyter Notebook в интегрированный редактор типов разработки, который вы запускаете в своем браузере. Вы можете рассматривать JupyterLab как расширенную версию Jupyter Notebook. JupyterLab позволяет запускать терминалы, текстовые редакторы и консоли кода в вашем браузере в дополнение к записным книжкам.
Как оформлять таблицы в Jupyter Notebook?
Jupyter Notebook – довольно мощный инструмент, который используется для различных вычислений и создания отчетов в интерактивном режиме (не только на языке программирования Python). В свою очередь, форматирование помогает структурировать материал, выделять главные моменты и представлять результаты анализа в наиболее удобной и понятной форме.
pandas.style
- Добавлять подписи к таблицам
- Скрывать индекс, если он не хранит в себе важную информацию
- Выделять определенные значения (максимальные/минимальные/пустые)
- Использовать условное форматирование
- Изменять формат значений в ячейках
Итак, приступим!
Для начала импортируем нужную библиотеку:
import pandas as pd
В pandas за "стильные" функции отвечает свойство (property) .style . Вслед за ним применяются различные методы для форматирования и отображения датафреймов.
df.style.formatting_method()
Все далее рассмотренные методы можно использовать одновременно, применяя друг за другом (method chaining):
df.style.first_formatting_method().another_cool_method()
В качестве примера возьмем датасет с объявлениями Airbnb в Лондоне.
Условное форматирование
- Выделять максимальное или минимальное значения и пустые ячейки, содержащие null/NaN
- Использовать градиент
- Изменять формат представления значений
- Написать функцию для выделения значений на основе собственных условий
airbnb.head()
Минимальные и максимальные значения
highlight_max – подсвечивает цветом наибольшее значение. Можно применить либо к каждой строке (axis=0/'index'), либо к каждой колонке (axis=1/'columns'). Например, если указать в качестве оси 'columns', то pandas для каждой строки найдет ту колонку, где значение для этой строки наибольшее. В данном случае для каждого наблюдения наибольшее значение встретилось в столбце host_id .
airbnb.head().style.highlight_max(axis='columns')
Наглядный пример: в первой таблице используется 'index', поэтому в каждом столбце подсвечивается ряд, где значение оказалось наибольшим. Во второй – 'columns', где для каждой строки находится столбец с наибольшим значением. Может показаться не очень логичным, но ♀️ Аналогичная функция для подсветки минимальных значений – highlight_min() .
Пропущенные значения
Выделять пропущенные значения можно с помощью highlight_null() :
airbnb.head(10).style.highlight_null()
Градиент
background_gradient – раскрашивает ячейки в зависимости от их значений. В итоге получается что-то похожее на тепловую карту (heatmap). Например, здесь мы применяем метод только для двух столбцов с ценой и числом отзывов, указав палитру Blues:
(airbnb.head(10) .style .background_gradient(subset=['price','number_of_reviews'], cmap='Blues') )
style.bar
- subset – колонки, для которых нужно построить небольшой барплот
- color – цвет
- align – выравнивание столбиков (mid – центр ячейки в (max-min)/2; zero – ноль находится в центре ячейки; left – минимальное значение находится в левой части ячейки)
(listings_by_borough.head(10) .style .bar(subset=['num_listings'], color='#67A5EB') )
Форматирование отображения чисел
- В столбце с price оставляем 2 знака после точки и добавляем знак $
- В следующий format передаём словарь с названиями других колонок для изменения: name к нижнему регистру, избавляемся от пробелов и /в room_type
- Выделяем объявление с самой высокой ценой
# import re (airbnb.head() .style .format('$', subset='price') .format() .highlight_max(subset='price') )
Отображение таблиц
Добавить и отредактировать подпись
В самом Jupyter Notebook'е могут быть представлены сразу несколько таблиц. Чтобы упростить навигацию и сделать всё более понятным, хорошо бы их как-то обозначать. Как? Использовать метод set_caption() :
(listings_by_borough.head() .style .set_caption('Число объявлений в каждом районе Лондона') )
Метод set_table_styles позволяет отформатировать выбранный объект. В данном случае нас интересует 'caption' (подпись). В качестве параметра 'props' передаём список, где каждый элемент – кортеж формата (параметр, значение). Например, укажем новый цвет ('color') и размер шрифта ('font-size'):
(listings_by_borough .style .set_caption('Число объявлений в каждом районе Лондона') .set_table_styles([]) )
Скрыть индекс
Довольно часто в качестве значений индекса используются обычные числа, которые не имеют никакого смысла. В таких случаях его можно спрятать – .hide_index() .
(listings_by_borough.head() .style.set_caption('Число объявлений в каждом районе Лондона') .hide_index() )
set_properties
Еще один полезный метод – set_properties , позволяет более гибко настроить другие параметры отображения. Например, выровнять текст по левому краю ( 'text-align' ), сделать фон черным ( 'background-color' ), а текст – оранжевым ( 'color' ):
(listings_by_borough.head() .style.set_caption('Число объявлений в каждом районе Лондона') .hide_index() .set_table_styles([< 'selector': 'caption', 'props': [('color', 'black'),('font-size', '14px') ]>]) .set_properties() )
Дополнительные библиотеки
- sparklines
- prettypandas
- jupyter-datatables
Итог
- Форматирование полезно при составлении каких-либо отчетов.
- В pandas имеется довольно много методов для изменения внешнего вида таблиц: от условного форматирования до изменения представления ячеек.
- Всегда есть альтернатива! Например, sparkline, prettypandas и jupyter-datatables.