Простой трюк, чтобы сделать ваши диаграммы интерактивными и визуально привлекательными

Хорошая визуализация приводит к отличному пониманию.

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

Но значения по умолчанию не самые лучшие.

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

Но установка бэкэнда сама по себе не дает всех преимуществ Plotly для наших фреймов данных. Например, в Pandas нет опции поверхностного графика. Кроме того, Plotly имеет несколько иной способ создания диаграмм, чем Pandas.

Cufflinks — еще одна библиотека, которая восполняет этот пробел. Мы можем использовать те же вызовы, подобные Pandas, для создания более потрясающих диаграмм. Кроме того, мы можем разрабатывать расширенные диаграммы, такие как поверхностные графики.



Как создавать графики из фреймов данных — чистый способ Pandas.

В Pandas, если вы хотите создавать диаграммы, такие как гистограммы и диаграммы, все, что вам нужно сделать, это вызвать метод plot. Мы можем указать нужный нам тип диаграммы и несколько других конфигураций.

Мы создаем гистограмму, используя встроенную функцию графика панды в следующем примере.

df.plot(kind='bar', x="month", y="passengers")

Вышеизложенное очень просто. А вот его презентабельность не очень.

Серверная часть Pandas по умолчанию — Matplotlib. Он отлично работает во многих случаях. Но диаграммы могут быть лучше с другим бэкендом.

Мы можем быстро превратить эту обычную диаграмму в красивую, изменив бэкенд построения графика на Plotly.

pip install plotly==5.5
# conda install -C plotly plotly==5.5.0

Если Plotly еще не установлен на вашем компьютере, используйте приведенный выше код.

Мы можем установить бэкэнд на Plotly с помощью следующей строки. Я рекомендую добавить эту строку, как только вы импортируете pandas в свой блокнот (или проект).

import pandas as pd
pd.options.plotting.backend = “plotly”

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

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



Как создавать графики из фрейма данных с помощью Cufflinks

Cufflinks — это библиотека Python, которая помогает нам использовать Plotly с Pandas в собственном синтаксисе, подобном Pandas. Он также добавляет более впечатляющие типы диаграмм, чем мы обычно видим в кадрах данных Pandas.

Мы можем импортировать его и настроить глобальную тему и другие параметры один раз и использовать iplot API, который добавляется к каждому кадру данных вместо метода построения по умолчанию.

Давайте установим его из PyPI с помощью следующей команды.

pip install cufflinks

После установки мы можем импортировать и настроить его в нашем ноутбуке.

import pandas as pd
import cufflinks as cf
import numpy as np
cf.set_config_file(theme='pearl')

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

cf.datagen.lines(4,1000).iplot()

Мы использовали модуль datagen пакета Cufflinks. Это позволяет нам генерировать случайные данные для различных ситуаций. Мы будем использовать его для создания данных для остальной части этого поста.

Эта незначительная настройка значительно улучшает представление наших диаграмм без существенного изменения нашего кода.

Типы визуализаций данных Plotly, которые мы можем создать в кадре данных.

Plotly имеет несколько различных типов диаграмм. Некоторые из них доступны через запонки, которые мы можем напрямую вызвать из фрейма данных.



Вот некоторые диаграммы, которые недоступны в Pandas, но стали возможными благодаря запонкам.

Трехмерные поверхностные графики.

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

Следующий код создает поверхностный график из фрейма данных. Запонки выбирают индексы столбцов и строк в качестве осей x и y. Значения фрейма данных идут по оси Z.

cf.datagen.sinwave(10,.25).iplot(kind='surface')

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

Пузырьковые диаграммы

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

На следующей диаграмме показано, как размер планеты меняется в зависимости от ее расстояния от Солнца и ее массы для каждой планеты (конечно, ложные данные).

cf.datagen.bubble(prefix="planet").iplot(kind='bubble',x='x',y='y',size='size',categories='categories',text='text', xTitle='Relative Mass',yTitle='Distance from the Sun',title='Plannet Size, Mass and Distance')

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

Диаграммы интенсивности

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

Как и другие типы диаграмм, также легко создать тепловую карту.

cf.datagen.heatmap(20,20).iplot(kind='heatmap',colorscale='spectral')

Графики спредов

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

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

cf.datagen.lines(2).iplot(kind='spread',xTitle='Dates',yTitle='Return')

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

Это лишь некоторые из многих диаграмм, которые вы можете создать с помощью расширения Cufflinks. Конечно, вы также можете сделать более распространенные диаграммы доступными из стандартного API pandas.



Изменение темы графиков.

С помощью конфигурации Cufflinks вы можете легко переключаться между несколькими цветовыми темами. У нас есть следующие варианты, чтобы выбрать один.

ggplot, pearl, solar, space, white, polar, henanigans

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

cf.set_config_file(theme='henanigans')

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

Заключительная мысль

Визуализация определяет все различия в том, что мы можем делать с имеющимися данными.

При работе с кадрами данных Pandas мы в основном используем метод построения графика по умолчанию для создания графики. Но эти графики недостаточно оформлены, чтобы представить это красиво. Быстрый трюк — сменить бэкэнд для построения графиков на Plotly и получить красивые диаграммы.

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

В этом посте обсуждалось, как начать работу с Pandas, Plotly и Cufflinks. Мы также создали несколько фантастических изображений нашего фрейма данных в одной строке кода.





Спасибо за чтение, друг! Передайте мне привет в LinkedIn, Twitter и Medium.

Еще не являетесь участником Medium? Пожалуйста, используйте эту ссылку, чтобы стать участником, потому что без дополнительной оплаты для вас я получаю небольшую комиссию за рекомендацию вас.