1. Jupyter Notebook
Краткий обзор
Интерфейс Jupyter Notebook
Jupyter Notebook представляет собой инструмент для проведения исследовательской работы в сфере науки о данных. Его особенностью являются интерактивные ячейки кода, запускать который можно изолированно друг от друга, мгновенно получая результат в виде расчетов, таблиц, графиков и т.п.
Jupyter Notebook – это программное обеспечение с открытым исходным кодом и веб-интерфейсом, доступном пользователю как на локальном компьютере через браузер, так и на удаленном сервере.
Ссылка на исходный код проекта на GitHub.
Установка
Инструкции по установке продукта можно прочитать по ссылке.
Альтернативным способом является установка в составе дистрибутива языков программирования Anaconda, содержащим языки программирования R и Python (по умолчанию), а также несколько прикладных рабочих инструментов для Data Scientist’a: собственно Jupyter Notebook, Jupyter Lab, Spyder и других.
Пример установки дистрибутива доступен по ссылке.
Помимо указанных инструментов дистрибутив содержит обязательные пакеты для работы с данными: Scipy, numpy, pandas.
Состав дистрибутива Anaconda
Запуск и создание файлов
Запуск Jupyter Notebook в терминале:
jupyter notebook
После запуска Jupyter Notebook перед пользователем в браузере автоматически открывается встроенный проводник, необходимый для создания рабочего файла в формате .ipynb
, который в профессиональной среде называют «ноутбукам» или «тетрадками».
Файловый менеджер Jupyter Notebook
Создание файла доступно в меню файлового менеджера в правом верхнем углу: New -> python3
.
После создания файла, в новой вкладке браузера становится доступно основное окно инструмента. Оно содержит элементы меню управления файлами и ячейками, а также ячейки для работы с кодом и текстом под меню.
Основная рабочая зона
Доступно два основных формата работы внутри ячеек: разметка текста и код.
В формате разметки текста синтаксис аналогичен языку Markdown. В этом формате можно описать заголовки и подзаголовки документа, комментарии, имя и контактные данные автора и т.п. В формате редактирования кода ячейка активна для исполнения в той программной среде, в которой запущен ноутбук. По умолчанию речь идет о языке программирования Python, окружение для которого создано при помощи системы управления средой Conda, однако после дополнительной настройки доступны и другие языки:
Доступно два режима работы с ячейками:
редактирование содержимого, в котором осуществляются операции внутри ячейки;
командный режим, в котором операции осуществляются над самой ячейкой.
Первый режим интуитивно понятен и активируется кликом левой кнопкой мыши внутри ячейки, после чего слева от ячейки появится цветовой индикатор зеленого цвета.
Режим редактирование содержимого Jupyter Notebook
Второй режим активируется кликом левой кнопкой мыши слева от ячейки. В таком режиме ячейку можно перемещать выше/ниже других, изменять формат работы с ячейкой, добавлять новые ячейки и удалять существующие, объединять их и т.п. В командном режиме цветовой индикатор слева от ячейки – синего цвета.
Командный режим Jupyter Notebook
Для запуска команды bash, перед кодом в ячейке необходимо добавить восклицательный знак:
!echo Run Bash Command
В подавляющем большинстве случаев работа с ячейками Jupyter Notebook осуществляется с помощью сочетания горячих клавиш клавиатуры (латинская раскладка) в командном режиме:
a (above) – вставить ячейку выше выделенной;
b (below) – вставить ячейку ниже выделенной;
x – удалить ячейку;
m – перевести ячейку в формат разметки текста – Markdown;
y – перевести ячейку в формат работы с кодом;
shift+enter – запустить ячейку и выделить следующую за ней.
Кроме перечисленных комбинаций, в основном меню инструмента доступны все возможные сочетания клавиш, которые помогают ускорить исследовательскую работу: help -> keyboard shortcuts.
Особенности Jupyter Notebook содержит малое количество элементов управления, панелей инструментов и т.п., поэтому может пригодиться на начальных этапах освоения науки о данных, а также в небольших индивидуальных работах.
2. Jupyter Lab
Краткий обзор
Jupyter Lab – это интерфейс нового поколения для Jupyter Notebook. Основные отличия от предыдущего инструмента заметны именно при визуальном сравнении. Слева появляется панель, которая содержит четыре вкладки:
Файловый менеджер.
Запущенные терминалы и ядра.
Содержание.
Менеджер расширений.
Интерфейс Jupyter Lab
Отдельного окна файлового менеджера у Jupyter Lab нет, он встроен в левую панель. Запущенные терминалы и ядра позволяют видеть перечень открытых вкладок и управлять ими.
Элемент меню Jupyter Lab «Запущенные терминалы и ядра»
С точки зрения функциональности, именно наличие менеджера расширений делает Jupyter Lab модульным и масштабируемым инструментом, настроенным на актуальные задачи по Data Science.
Элемент меню Jupyter Lab «Менеджер расширений»
Во вкладке Settings
основного меню Jupyter Lab есть возможность выбирать цветовые темы оформления.
Меню выбора тем Jupyter Lab В сентябре 2021 года была анонсирована настольная версия – JupyterLab App, созданная с использованием HTML, CSS и JavaScript на фреймворке Electron.
Ссылка на GitHub проекта.
Установка
Для начала, необходима установка системы управления средой Conda, которую можно осуществить из репозитория Miniforge на GitHub.
Ссылка на GitHub проекта.
Далее, установка Jupyter Lab осуществляется командой в терминале:
conda install -c conda-forge jupyterlab
Возможна установка в составе дистрибутива языков программирования Anaconda, как было описано выше.
Запуск и создание файлов
Запуск Jupyter Lab в терминале:
jupyter-lab
Для создания нового файла необходимо кликнуть левой кнопкой мыши на кнопку New Launcher (+) под главным меню.
Меню создания нового файла Jupyter Lab
После этого откроется новая вкладка с перечнем возможных типов файлов:
После создания файлов все они отображаются в проводнике во вкладке слева:
Помимо самих ноутбуков в формате .ipynb
Jupyter Lab поддерживает ряд других форматов:
.csv
, что позволяет изучать наборы данных;
.jpg/gif/png
, что позволяет просматривать изображения в проектах компьютерного зрения;
.pdf
, что дает возможность изучать документацию;
.md
, что помогает в описании и документировании проекта.
Основная рабочая зона
В отличие от Jupyter Notebook, перетаскивание ячеек в Jupyter Lab можно осуществлять в графическом режиме, удерживая левую кнопку мыши.
Перетаскивание ячеек в графическом режиме Jupyter Lab
Ячейки с большим количеством текста/кода можно сворачивать кликом левой кнопкой мыши по цветовому индикатору. После сворачивания ячейки отображаются в виде троеточия. Разворачивание ячейки происходит аналогично.
Сворачивание ячеек в графическом режиме Jupyter Lab
Если ноутбук содержит много текста и кода, навигация по различным участкам документа становится неудобной. Для решения проблемы предусмотрена возможность параллельного просмотра еще одного ноутбука.
Параллельный просмотр ноутбуков в интерфейсе Jupyter Lab
Для этого требуется кликнуть правой кнопкой мыши по заголовку вкладки и выбрать: New View for Notebook
. В остальном механика взаимодействия с основной рабочей зоной первых двух инструментов схожа.
Особенности Поскольку Jupyter Lab имеет встроенный проводник и поддерживает различные дополнительные форматы файлов, расширения, использование инструмента подходит для крупных исследовательских проектов со сложной логикой.
3. Расширения Jupyter Lab
JupyterLab TensorBoard
Интерфейс TensorBoard TensorBoard – это набор веб-приложений для визуализации графиков метрик качества моделей во время их обучения в TensorFlow.
Ссылка на GitHub проекта.
Установка осуществляется через менеджер расширений левой панели:
JupyterLab Git
Интерфейс JupyterLab Git. Материал сайта Neptune.ai После установки расширения на левой панели становится доступна вкладка Git. Это позволяет контролировать версии файлов в рамках исследовательского проекта.
Ссылка на GitHub проекта.
JupyterLab variableInspector
Интерфейс JupyterLab variableInspector Расширение JupyterLab, которое показывает используемые в настоящее время переменные и их значения.
Ссылка на GitHub проекта.
JupyterLab plotly
Интерфейс JupyterLab plotly Plotly – это расширение JupyterLab для визуализации диаграмм Plotly. Библиотека Python Plotly позволяет создавать интерактивные графики высокого качества.
Ссылка на примеры диаграмм Plotly.
Ссылка на GitHub проекта.
Расширений для JupyterLab существенно больше чем мы описали, поэтому каждый Data Scientist может провести ни один час в поисках подходящих для работы.
4. Azure Data Studio
Краткий обзор
Azure Data Studio имеет схожий подход к работе с кодом и разметкой текста в отдельно взятых изолированных ячейках, как и Jupyter Lab. Инструмент является бесплатным и кросс-платформенным. On-premise решение поддерживается следующими операционными системами: Windows, macOS и Linux.
Разработчики Azure Data Studio, компания Microsoft, позиционируют свой продукт как единое решение для аналитики данных собранных воедино из различных источников.
Интерфейс Azure Data Studio
Левая панель инструмента содержит шесть вкладок:
Соединения.
Поиск.
Ноутбуки.
Проводник.
Управление версиями.
Расширения.
Во вкладке Соединения
отражается перечень всех доступных (активных и неактивных) соединений с внешними ресурсами:
Эта вкладка позволяет создавать новые соединения, группировать их по папкам и фильтровать только активные соединения из общего списка.
Вкладка Поиск
позволяет произвести перебор всех включений искомого текста в разрезе рабочих файлов:
Вкладка Ноутбуки
содержит перечень рабочих ноутбуков, совмещенных с результатами текущего поиска из предыдущей вкладки:
Вкладка Проводник
содержит перечень файлов из подключенной к инструменту рабочей папки (директории):
Вкладка Управление версиями
позволяет реализовать инициализацию Git-репозитория и отправку текущей (зафиксированной) версии ноутбука в удаленный репозиторий на GitHub:
Azure Data Studio базируется на Visual Studio Code, что дает дополнительную возможность использовать расширения Visual Studio Code, но не все из них совместимы.
Вкладка «Расширения» Azure Data Studio
Ссылка на GitHub проекта.
Установка
Инструкции по установке продукта можно прочитать по ссылке.
Основным способом доставки инструмента до пользователя является бинарная дистрибьюция.
Запуск и создание файлов
Запуск Azure Data Studio в графическом режиме через главное меню:
Menu -> Azure Data Studio
Создание рабочего ноутбука осуществляется через основное меню инструмента:
File -> New Notebook (Alt + N)
Для создания подключения к SQL-серверу:
File -> New Query
Основная рабочая зона
Azure Data Studio позволяет работать параллельно в нескольких вкладках, в каждой из которых запущено свое собственное ядро/задача. Например, в одной вкладке в ячейках выполняются скрипты SQL, в другой – код на Python, в третьей – запрос на подключение к SQL-серверу.
Вкладки Azure Data Studio
Наиболее часто используемые команды при работе с ячейками осуществляются с помощью сочетания горячих клавиш клавиатуры, полный перечень которых доступен в меню:
File -> Preferences -> Keyboard Shortcuts
Сочетания горячих клавиш Azure Data Studio
В правом верхнем углу основной рабочей области находится иконка менеджера пакетов, кликнув по которой левой кнопкой мыши можно контролировать уже установленные пакеты, а также устанавливать новые.
Менеджер пакетов Azure Data Studio Особенности Применение Azure Data Studio целесообразно в проектах, где требуется сбор воедино набора данных из большого количества различных источников, запросы к которым необходимо писать с применением SQL.
5. Расширение Azure Data Studio
Managed Instance Dashboard
Интерфейс Managed Instance Dashboard
Панель мониторинга предоставляет сведения об экземпляре базы данных SQL Azure, связанные с его производительностью и работоспособностью. Список некоторых из доступных отчетов:
Свойства экземпляра.
Использование хранилища как для локального хранилища SSD, так и для удаленного хранилища Azure Premium.
Использование ЦП/хранилища.
Статус реплик базы данных.
Query History
Интерфейс Query History Query History – это панель для просмотра прошлых выполненных запросов.
Строка истории запроса содержит четыре части:
Значок статуса: ✔️, если запрос выполнен успешно. Если возникли какие-либо ошибки, отображается значок ❌.
Текст запроса: это текст запроса, который был выполнен.
Информация о подключении: сервер и база данных, к которым был выполнен запрос.
Отметка времени: дата и время выполнения запроса.
Redgate SQL Search
Интерфейс Redgate SQL Search Redgate SQL Search – это надстройка, которая позволяет быстро искать текстовые вхождения внутри строк SQL-скриптов в базах данных, подключенных к Azure Data Studio.
Machine Learning
Интерфейс настройки расширения Machine Learning. Microsoft.com Расширение Machine Learning для Azure Data Studio позволяет управлять пакетами, импортировать обученные модели машинного обучения, делать прогнозы и создавать ноутбуки для проведения экспериментов с базами данных SQL.
Schema Visualization
Интерфейс Schema Visualization Расширение Schema Visualization дает визуальное представление о структуре баз SQL, подключенных к Azure Data Studio. Среди функций расширения – экспорт схем в формате .svg
.
Для изучения полного перечня воспользуйтесь менеджером расширений в левой панели инструмента.
6. Apache Zeppelin
Краткий обзор
Интерфейс Apache Zeppelin, источник: Habr.ru
Apache Zeppelin – ноутбук c web-интерфейсом, доступный пользователю как на локальном компьютере через браузер, так и на удаленном сервере. Ноутбук позволяет управлять данными, строить интерактивную аналитику и совместно работать в проектах, используя SQL, Scala, Python, R и другие языки.
Apache Zeppelin поддерживает многопользовательский режим с LDAP и конфигурируется для работы на YARN-кластере. Следствием работы поверх кластера является возможность распараллеливания вычислений, что также необходимо в работе с большими данными.
Установка
Инструкции по установке продукта можно прочитать по ссылке (англ.)
Установка потребует от пользователя базовых знаний администрирования UNIX-подобных операционных систем.
Запуск и создание файлов
Запуск Apache Zeppelin в терминале (в UNIX-подобной операционной системе):
bin/zeppelin-daemon.sh start
На стартовой странице инструмента:
Notebook -> Create new note
Меню создания нового ноутбука Apache Zeppelin
Список ранее созданных ноутбуков также отражается на стартовой странице.
Список ноутбуков Apache Zeppelin
Основная рабочая зона
После запуска Apache Zeppelin перед пользователем в браузере открывается ноутбук.
Ноутбук Apache Zeppelin
Основная особенность ячеек Zeppelin заключается в том, что внутри одного ноутбука можно запускать ячейки на различных вычислительных ядрах и средах, для чего в первой строке ячейки прописывается специальный указатель, например:
%sql – для запуска SQL-скрипта;
%python – для запуска стандартного интерпретатора Python;
%python.ipython – для запуска IPython интерпретатора (рекомендуется);
%spark – для запуска Spark-сессии;
%sh – для выполнения команд оболочки (Shell);
и др.
Например, для вывода на экран текущей рабочей директории в ячейке необходимо выполнить код:
%sh pwd
Для запуска IPython интерпретатора:
%python.ipython print("hello world")
Другим значимым функциональным дополнением ноутбука является реализованная по умолчанию возможность визуализации данных. Для этого под ячейкой предусмотрена соответствующая пиктограмма графика.
Визуализация данных встроенными средствами Apache Zeppelin Особенности Инструмент используется для работы с большими данными (NoSQL), так как входит в широкую экосистему Apache. Обязательным требованием является знание синтаксиса команд bash.
7. Google Collab
Краткий обзор
Интерфейс Google Collab Google Colab представляет собой облачный Jupyter Notebook, созданный и поддерживаемый компанией Google.
Ключевое отличие от локального Jupyter Notebook – возможность запуска облачной сессии с графическим / тензорным ускорителем:
Меню -> Среда выполнения -> Сменить среду выполнения
Выбор аппаратного ускорителя Google Collab
В качестве GPU сервис предлагает 12GB NVIDIA Tesla K80, которая бесплатна для использования на ограниченное время – 12 часов за один запуск. Из одного аккаунта Google в случае использования GPU/TPU доступна только одна активная версия ноутбука. Платного тарифа для пользователей из России не предусмотрено.
Подробнее о лимитах инструмента можно прочитать по ссылке (англ.)
Левая панель инструмента содержит вкладки:
Содержание.
Найти и заменить.
Фрагменты кода.
Файлы.
Во вкладке Фрагменты кода
возможен поиск по шаблонам, что может ускорить работу с типовыми операциями, например такими, как подключение Google Drive к ноутбуку:
Во вкладке Файлы
реализована навигация по файловой системе виртуальной машины, в которой запущен ноутбук, а также присутствует возможность монтирования диска Google Drive для загрузки/сохранения данных:
Запуск и создание файлов
Создание ноутбука и запуск сервиса Google Colab осуществляется из сервиса Google Drive:
Ссылка на сервис.
В любой папке диска необходимо выполнить следующее действие:
Создать -> Еще -> Google Colaboratory
Перечень ноутбуков доступен в папке, в которой они были созданы.
Список ноутбуков в папке Google Drive
Также возможно создание нестандартных конфигураций ноутбуков.
Ноутбук с 35Gb RAM при использовании TPU, или 25Gb при использовании CPUGPU доступен по ссылке.
Основная рабочая зона
В основном меню ноутбука, в разделе Инструменты
доступна раскладка горячих клавиш для работы с ячейками ноутбука. В Google Colab это сочетание отличается от сочетания в Jupyter Notebook.
Горячие клавиши Google Colab
Реализована возможность добавлять ячейки в графическом режиме:
Возможность изменения порядка ячеек в графическом режиме (перетаскивание) – отсутствует. Для этого в правом верхнем углу каждой ячейки предусмотрено меню:
В остальном, работа в Google Colab схожа с работой в локальном ноутбуке Jupyter.
Особенности Поскольку Google Colab имеет 12GB памяти в графическом ускорителе, то его целесообразно использовать для ресурсоемких исследований и вычислений, например, для обучения нейронной сети. Инструмент подходит для командной работы.
8. PyCharm Community
Краткий обзор
PyCharm Community – бесплатная среда разработки для языка программирования Python. Интегрированная среда дает возможность анализа кода, его графический отладки, и т.д. PyCharm разработана компанией JetBrains на основе IntelliJ IDEA.
Интерфейс PyCharm Community
Левая панель инструмента содержит вкладки:
Project.
Commit.
Pull Requests.
Вкладка Progects
содержит структуру каталогов проекта, в т.ч. структуру сторонних библиотек, а также инструменты для работы с ними.
После фиксации изменений в проекте по нажатию пиктограммы в верхнем правом меню
открывается вкладка Comit
, где требуется ввести сообщение к осуществляемому комиту:
Сообщения к комитам целесообразно стандартизировать в формальной логике, например, с применением соглашения Conventional Commits.
Ссылка на соглашение (англ.)
Вкладка Git
PyCharm Community
При наличии предложений на изменение кода в репозитории GitHub со стороны участников проекта, все они отображаются во вкладке Pull Requests
.
Нижняя панель инструментов слева содержит вкладки:
Git.
TODO.
Problems.
Terminal.
Python Packages.
Python Console.
Наиболее востребованной вкладкой является Terminal
, в ней выполняются команды проекта, например:
Вкладка Терминал
в PyCharm Community
Команда представляет собой запуск pipeline технологии DVC, о которой можно прочитать на сайте разработчика.
Ссылка на сайт разработчика технологии (англ.)
Установка
Основным способом распространения инструмента является бинарная дистрибьюция.
Скачать дистрибутив можно по ссылке.
Запуск и создание файлов
Существует два основных способа начала проекта.
Создание нового проекта. В основном меню: File -> New Project
.
Клонирование существующего проекта через систему контроля версий. В основном меню: VCS -> Get from Version Control
.
Основная рабочая зона
В проектах Data Science PyCharm позволяет осуществлять рефакторинг кода, полученного в результате завершения исследовательской стадии проекта с применением ноутбуков.
Фрагменты кода оформляются в виде классов или функций на языке программирования Python.
Окно редактора кода PyCharm Community
Зеленый символ в правом верхнем углу рабочего окна свидетельствует о том, что код написан с соблюдением стандарта написания кода PEP8.
Изучить стандарт можно по ссылке.
При наличии замечаний к коду, знак меняется на следующий (цифра указывает на количество замечаний):
Особенности PyCharm Community целесообразно использовать при переходе от исследовательской стадии проекта в области науки о данных к стадии разработки готового решения, основанного на результатах испытаний. В стадии разработки на первый план выходит навык написания понятного и поддерживаемого кода, отвечающего определенным стандартам программирования.
9. JetBrains DataSpell
Краткий обзор
JetBrains DataSpell – интегрированная среда разработки от JetBrains, адаптированная под потребности специалистов в области науки о данных.
Интерфейс JetBrains DataSpell
Левая панель инструмента содержит две основные вкладки:
Workspace.
Structure (описывает структуру заголовков инструмента).
Вкладка Workspace
содержит структуру каталогов проекта, а также инструмент для подключения сервера Jupyter Notebook:
Доступны подключения к локальному серверу, либо к удаленному по URL.
Правая панель содержит важный инструмент, который называется DataExplorer
. Он позволяет подключать различные системы управления базами данных (SQL/NoSQL), вроде Azure SQL Database, Apache Hive и др.
Правая панель JetBrains DataSpell
Нижняя панель содержит вкладки для работы с Git и консолью, аналогично PyCharm.
Установка
Дистрибутив DataSpell доступен по ссылке.
Запуск и создание файлов
После запуска инструмента из основного меню в диалоговом окне доступен выбор среды. По умолчанию указана Conda.
Диалоговое окно выбора среды в JetBrains DataSpell
Основная рабочая зона
Двойное нажатие левой кнопкой мыши на файле ноутбука в левой панели Workspace
открывает его непосредственно в основном окне редактора DataSpell.
Окно ноутбука JetBrains DataSpell
В таком режиме работа с ячейками ноутбука происходит привычным образом – редактирование кода внутри ячейки и операции над самой ячейкой.
В режиме отладки, после установки точки останова (break point), под основной рабочей областью ноутбука появляется таблица с историей исполнения в ячейках, а также выводом всех переменных, которые содержатся в пространстве имен ноутбука.
Debugger JetBrains DataSpell
Двойное нажатие левой кнопкой мыши на файле .csv
в левой панели Workspace
открывает его непосредственно в основном окне редактора, облегчая визуальное исследование исходных данных.
Просмотр файла .csv в JetBrains DataSpell Особенности DataSpell является инструментом для fullstack-проекта в области Data Science. Это обеспечивается за счет объединения возможностей работы над исследовательской стадией и стадией разработки в одном интерфейсе.
10. GitHub для Data Science
Проекты в области Data Science предполагают работу с ноутбуками в формате .ipynb
на исследовательской стадии проекта. Этот формат файлов хотя и поддерживается GitHub (их можно открывать непосредственно из web-интерфейса репозитория), но попытки просмотра содержимого в половине случаев завершаются ошибкой, страницу просмотра приходится обновлять и пробовать открыть файл снова.
Для решения этой проблемы частой практикой является просмотр ноутбука в Google Colab:
Пример кода для встраивания ссылки на просмотр ноутбука в файл README.md
в корневой директории репозитория:
[![Open In Colab] (https://colab.research.google.com/assets/colab-badge.svg)] (https://colab.research.google.com/github/usernane/repo/blob/master/foldername/notebookname.ipynb)
Файлы .ipynb
по сути являются структурированным текстом в формате JSON и отслеживать их изменения в процессе версионирования неудобно:
Рефакторинг кода и структурирование его в «питоновские» файлы с расширением .py
и соблюдением стандарта PEP8 упрощают работу:
Хранение файлов с набором данных более 100 Mb в GitHub невозможно. Для решения задачи используется Git LFS. Эта технология обрабатывает большие файлы, сохраняя в репозитории ссылки, но не на сами файлы.
Чтобы обойти архитектуру Git, Git LFS создает файл-указатель, который действует как ссылка на хранящийся в другом месте файл. GitHub управляет этим файлом указателя в репозитории. Когда вы клонируете репозиторий, GitHub использует указатель, чтобы найти сам файл.
Подробнее о работе с большими файлами можно прочитать в документации GitHub (англ.)
Работу с большими файлами также поддерживает технология DVC (Data Version Control).
Ссылка на пример настройки версионирования файла размером более 100 Mb на удаленном хранилище Google Drive.
***
Если вы не увидели в обзоре своих любимых инструментов, не стесняйтесь рекомендовать их в комментариях.
Больше полезной информации вы можете найти на нашем телеграм-канале «Библиотека data scientist’а». Интересно, перейти к каналу