Время прочтения: 6 минут
Оригинал: Kelly Sikkema на Unsplash
Обычно основную работу с данными выполняют дата-аналитики и программисты, но растет число других специалистов, которым тоже приходится разбираться с этими же данными — это дизайнеры, градостроители, журналисты и так далее. Для всех специалистов необходим общий язык, а также пространство, где команда может работать вместе.
Интерактивный блокнот — это среда с удобным интерфейсом для выполнения кода, визуализации данных и оценки результатов. Блокноты позволяют объединить данные и контекст в единую историю, которую легко отправить коллегам на доработку или открыть на других устройствах. По словам Мишель Юффорд, руководителя отдела данных в Netflix, использование интерактивных блокнотов определит работу с данными в будущем.
Интерфейс интерактивного блокнота Jupyter. Источник: morphocode
Интерактивные блокноты состоят из ячеек, каждая из которых содержит код, текст, изображения, карты или графики. Легко запустить отдельную ячейку кода, изучить результат, скорректировать код и повторно оценить результат, повторяя итерации, пока все не заработает. Блокноты удобны для уточнения и анализа наборов данных, объединения данных из различных источников, создания прототипов визуализации данных и изучения новых идей. А еще блокноты удобны, если вы только начинаете программировать: в большинстве вариантов не нужно ничего устанавливать на компьютер — интерактивный документ можно открыть и выполнить в браузере.
Популярные интерактивные среды — это блокноты Jupyter и R Notebooks, но растет и число блокнотов на JavaScript: nTeract, Observable и RunKit.
Jupyter Notebook
Начнем с самого популярного интерактивного блокнота. Jupyter Notebook — проект с открытым исходным кодом, который используют многие организации, включая Google, Netflix и Microsoft. Удобная среда JupyterHub позволяет обмениваться блокнотами, и каждый член команды получает свой экземпляр блокнота.
Блокнот Jupyter состоит из двух ключевых модулей: пользовательского интерфейса и ядра. Пользовательский интерфейс — это веб-приложение в браузере, а также место, где вы редактируете блокнот, добавляя код и комментируя процесс.
Пример блокнота Jupyter. Источник: J. R. Johansson в nbviewer, платформе для отображения блокнотов Jupyter
Ядро — это место, где выполняется код. При исполнении ячейки кода ядро вычисляет результат отдельным процессом вне браузера и отправляет его обратно в браузер, где вы продолжаете работу с ним. Пользователь не ограничен одним языком программирования — есть ядра для Python, R, JavaScript и т.д.
Посмотрите подборку блокнотов или интерактивную демонстрацию, а если понравится, установите блокнот по инструкции.
nTeract
nTeract — это настольное приложение для создания интерактивных блокнотов с открытым исходным кодом. Установив его в своей системе, вы можете дважды щелкнуть по файлу блокнота и начать редактировать. Минималистичный пользовательский интерфейс на React дает такие возможности, как перетаскиваемые ячейки, поддержку GeoJSON и встроенные графики через Vega and Altair.
Карта проверок ресторанов в nTeract. Источник: morphocode
GeoNotebook
GeoNotebook — еще один интересный проект на основе Jupyter. В пользовательском интерфейсе классический редактор сочетается с большой интерактивной картой. Здесь можно отображать геоданные, выбирать пользовательские регионы и выполнять геопространственный анализ.
Пример работы в GeoNotebook. Источник: OpenGeoscience
GeoNotebook отлично подходит для работы с растровыми геоданными. Больше примеров – на странице GitHub.
Блокноты Observable
В 2017 году был анонсирован проект d3.express, который позже превратился в Observable — блокноты с акцентом на интерактивности и визуализации. Они запускаются в браузере и предоставляют нативный доступ к графическим возможностям, включая SVG, Canvas и WebGL.
Блокноты Observable построены с JavaScript и позволяют импортировать любую библиотеку, опубликованную на npm, включая популярные библиотеки визуализации данных: d3.js, plotly, mapbox-gl, three.js и другие.
Пример — horizon charts в Observable. Источник: morphocode
Интерактивные блокноты Observable тоже состоят из ячеек, содержащих код, изображения и текст. Отличительной особенностью ячеек является их "реактивность" — когда вы изменяете одну ячейку, все связанные с ней ячейки обновляются, как в электронной таблице.
Чтобы начать работу, посмотрите на коллекцию блокнотов, а потом можете использовать Observable для обмена своими открытиями, визуализации данных или интерактивных историй.
R Notebooks
R Notebooks — это часть среды разработки с открытым исходным кодом RStudio. Эти блокноты тесно связаны с экосистемой R, предоставляя доступ к мощным библиотекам из tidyverse, таким как ggplot2 и dplyr.
Карта в R Notebooks
R Notebooks — это документы, состоящие из фрагментов, которые можно выполнять в интерактивном режиме. В отличие от блокнотов Jupyter, они хранятся в виде файлов в формате markdown, а их вывод — в виде отдельного HTML-файла. Ознакомьтесь с введением и пробуйте!
Google Colab
Совместная работа является неотъемлемой частью модели интерактивных блокнотов. Работая в команде, вы можете использовать один блокнот как точку доступа к данным, коду и исследовательским проектам. На совместной работе делает акцент Colab от Google— еще одна бесплатная среда для интерактивных блокнотов, работающая в облаке. Она позволяет сохранять данные на Google Drive, делиться блокнотами с другими пользователями и работать с машинным обучением прямо в блокноте.
Блокнот с PrettyMaps в Google Colab
Какой интерактивный блокнот выбрать? Это зависит от цели проекта и размера набора данных. Блокноты Jupyter эффективны при работе с большими наборами данных, поскольку вычисления производятся на стороне сервера ядром Python и предоставляют доступ к мощным библиотекам анализа данных, таким как geopandas и numpy. С другой стороны, Observable предлагает отличную интерактивную площадку для визуализации, JavaScript и эффективные инструменты: plot.ly, leaflet, mapbox-gl. Можно комбинировать подходы, используя Jupyter для тяжелой работы, а Observable для визуализации данных и взаимодействия в команде.
Источники:
Автор: Юлия Федорова