Взгляд на репортажи в Jupyter под новым углом

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

Я не могу представить свою работу без Jupyter Notebooks. Ими можно делиться, они быстро настраиваются и просты в использовании, даже если вы только начинаете свой путь в мир анализа данных или изучаете Python.

Анализ данных в Python

Если вы много работаете с данными в Python, вы можете довольно часто просматривать их в обобщенной форме. В Python вы можете группировать или сводить свои данные с помощью встроенных функций из библиотеки pandas.

Классический способ разворота - использовать старый добрый метод pivot_table. Что касается большинства методов Python, его синтаксис прост и удобен для чтения.

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

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

Как сделать сводные данные в Python интерактивными

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

Мы будем работать в JupyterLab, так как это чрезвычайно удобная среда для запуска ваших записных книжек. JupyterLab - это просто пользовательский интерфейс для Jupyter Notebooks. Здесь находится все, что вы используете в классическом Jupyter: записные книжки, файловый браузер. Но JupyterLab предлагает более расширенную функциональность: вы можете устанавливать расширения, разворачивать и сворачивать ячейки, перетаскивать их - функция, которой может не хватать в Jupyter. Кроме того, в текстовом редакторе есть функция автозаполнения вкладок.

Создание отчета в JupyterLab

Итак, запустите JupyterLab и приступим!

Прежде всего, давайте импортируем нужные нам библиотеки Python. К ним относятся pandas, json и модуль отображения из IPython. Все эти библиотеки поставляются с дистрибутивом Anaconda, но если вы не работаете с ним, вам может потребоваться установить эти библиотеки глобально или в вашей виртуальной среде.

  • Pandas - это обязательная библиотека для работы со структурами данных в Python.
  • IPython - это API для интерактивных и параллельных вычислений на Python. Display - это его модуль, который представляет API для инструментов отображения в IPython.
  • Библиотека json предоставляет API для кодирования и декодирования JSON. Если вы когда-либо использовали модули marshal или pickle, их API будет вам знаком.

Для визуализации данных мы будем использовать Flexmonster Pivot Table & Charts, который представляет собой библиотеку JavaScript.

А как насчет данных? В демонстрационных целях я выбрал набор данных« Цены на авокадо от Kaggle». Он легкий и содержит разумное количество полей. Вместо этого вы можете выбрать любой набор данных, который вам нравится.

Загрузите данные. Используя pandas, прочтите данные CSV в фрейм данных. Отбросьте столбец «Безымянный: 0» - столбец индекса, который часто появляется при чтении файлов CSV.

▶ Вызовите метод to_json() для фрейма данных, чтобы преобразовать его в строку JSON и сохранить в переменной json_data.

▶ Теперь давайте создадим экземпляр Flexmonster, используя вложенный словарь. Здесь мы указываем все необходимые параметры инициализации и передаем декодированные данные компоненту. Для декодирования JSON мы используем метод json.loads().

▶ Теперь мы кодируем объект Python в JSON с помощью json.dumps():

▶ Следующим шагом является определение функции, которая отображает сводную таблицу прямо в ячейку. Для этого мы определим многострочную строку и передадим ее импортированной функции HTML:

▶ Наконец, мы можем передать JSON этой функции рендеринга и вызвать ее:

Вуаля! Вы видите интерактивную сводную таблицу на странице. И набор данных готов к работе: вы можете переставлять поля в сетке, изменять агрегаты, настраивать фильтрацию и сортировку, форматировать значения и делать все, чтобы создать свой уникальный отчет. Кроме того, если вы пропустите способ отображения записей во фрейме данных, вы можете переключиться из режима поворота в режим плоского представления. Таким образом вы увидите данные в том виде, в каком они поступают из источника, но с интерактивной функциональностью.

Вот как теперь выглядит сводная таблица:

Кроме того, вы можете попробовать применить условное форматирование, чтобы сосредоточиться на наиболее важных значениях.

Создание дашборда в Jupyter Notebook

Теперь давайте немного усложним нашу логику, добавив больше элементов в записную книжку. Две сводные диаграммы сделают нашу визуализацию данных более универсальной. Для этого мы определим дополнительную функцию, которая принимает несколько компонентов JSON и отображает их на странице. Его логика такая же, как и для одиночной сводной таблицы. Компоненты сводной диаграммы определяются так же, как и для сводной таблицы.

В срезах отчета для сводных диаграмм мы можем установить Top X-фильтры, которые удобны для ограничения количества категорий, отображаемых на сводных диаграммах. Это делает их более аккуратными и компактными.

Ура! Теперь вы можете пользоваться интерактивной панелью управления в своем блокноте Jupyter! Не стесняйтесь создать отчет об анализе данных и поделиться им.

Последние мысли

Сегодня мы попробовали новый способ управления и представления данных в Jupyter Notebook, с использованием Python и библиотеки визуализации данных JavaScript. Как видите, на настройку уходит не так уж много кода и времени.

Как только вы это сделаете, вы сможете исследовать свои данные прямо в рабочем пространстве, к которому вы привыкли.

Такой подход освобождает вас от необходимости переписывать фрагменты кода каждый раз, когда вам нужно по-другому взглянуть на данные. И это идет рука об руку с центральной идеей Jupyter Notebooks - сделать визуализацию данных и анализ данных интерактивными и гибкими.

Вы можете найти полный код на GitHub. 👈

Расширенные настройки

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

  • Сопоставление

Слишком часто реальные данные не являются точными и непротиворечивыми. Полям могут быть присвоены имена в разных регистрах, они также могут содержать нечеткие сокращения и т. Д. Для уточнения мы можем использовать сопоставление - свойство отчета, которое устанавливает конфигурации представления, применяемые к источнику данных. Еще одно преимущество, связанное с функцией форматирования, - это явная установка типов данных. Устанавливая типы, вы указываете компоненту обрабатывать поля так, как вы планировали, например, как строки, числа или даты. Это повлияет на выбор агрегатов, доступных для иерархий полей.

В примере GitHub вы можете увидеть, как определить объект сопоставления и установить его в сводную таблицу.

  • Экспорт

Сводная таблица содержит методы и события JavaScript API. Вы можете настроить сохранение отчетов в различных форматах локально или в удаленные места назначения, такие как серверы, с помощью метода exportTo.

  • Расчетные значения

Чтобы ввести в отчет новые формулы, вы можете добавить расчетные значения.