Открытие

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

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

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

  1. Хорошо выглядеть: библиотека не стоит ни копейки, если менеджеру не нравится ее просматривать или если конечный пользователь не может понять, что вы им представляете.
  2. Надежность - надежная библиотека позволяет аналитикам и специалистам по обработке данных выполнять комплексный анализ с небольшими ограничениями и поддерживает ключевой арсенал графиков как готовые возможности.
  3. Сложность. Визуализация - это инструмент, а не цель анализа данных, поэтому очень важен короткий, легкий для чтения код.
  4. Модульность - не каждая визуализация продумана до мельчайших деталей, поэтому простота добавления и удаления элементов на графиках является ключевым моментом.
  5. Исследовательский - библиотека с хорошей документацией и сплоченным сообществом позволит разработчику исследовать далекие возможности библиотеки и при необходимости получать специальные результаты.

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

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

Тест библиотеки визуализации

Основываясь на наших критериях, мы построили тест, который включал всего три элемента, которые охватывали все наши потребности:

  1. Возможности визуализации.
  2. Настройки.
  3. Ссылки на пакеты и архитектура.

Для оценки нашего теста мы использовали базовую систему ранжирования, от «Нет» (функция не существует), до «Низкая-средняя» и «Высокая», а также возможности сегментированной визуализации на основе «обязательных» и «желаемых». встроенные в пакет.

Тестирование сегментов

Возможности визуализации:

  1. «Обязательные»: линия, столбец, разброс, гистограмма, прямоугольник, тепловая карта.
  2. «Приятно иметь»: водопады, Pariplots, геоориентированные, 3D.

Настройки:

  1. Модульность.
  2. Общее добавление, установка местоположения и визуальные настройки легенды, аннотаций и знаков / символов (также трех вместе - «Triple X»).
  3. Темы и шаблоны графиков: рамки, линии сетки, размеры графика, поля и конфигурации.

Ссылки на пакеты и архитектура:

  1. Время выполнения.
  2. Импорт.
  3. Динамические возможности.
  4. Качество и полнота документации.
  5. Поддержка сообщества.
  6. Внешний вид визуализации.

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

Результаты по сегментам

Разнообразные нестандартные типы графиков:

  1. Matplotlib (средний-высокий) - Matplotlib имел все «обязательные» возможности, но не все «полезные» функции, которые нам требовались в наших проектах. В целом, очень надежный, с четкой логикой разработки, что способствует его высокому уровню настраиваемости, но увеличивает уровень сложности и время, необходимое для разработки.
  2. Сиборн (средне-высокий) - Сиборн работает аналогично Матплотлибу. В то время как некоторые из «полезных» возможностей, к сожалению, отсутствовали, другие поддерживаются пакетом. Пакет с широкими возможностями настройки, для разработки которого требуется больше опыта.
  3. По сути, он похож на Matplotlib, за исключением крайних случаев, подобных тем, которые мы искали в графах «Приятно иметь», которых не хватало в некоторых из них (например, в Geo). С другой стороны, как Matplotlib, легко настраиваемый, но также требует более высоких навыков и внимания из-за своей относительной сложности.
  4. Сюжет (высокий) - Сюжетно было все. библиотека включала все диаграммы, которые мы включили в список желаний, в том числе наши «полезные» функции, редкую находку. Синтаксис Plotly также относительно прост, что делает его пакетом для пользователей всех уровней.
  5. Боке (в середине). Мы были разочарованы поддержкой Боке тех возможностей, которые мы считаем важными для нашей работы. Мы не смогли найти все диаграммы в нашем списке обязательных, а из тех, что мы нашли, с ними было труднее работать. При этом Bokeh поддерживает более сложный анализ и типы графиков, а также визуализацию, которую «удобно иметь», и она работала довольно хорошо.
  6. Альтаир (средне-высокий) - Альтаир показал хорошие результаты, особенно в отношении «обязательных» способностей, но также и «желаемых». Как декларативный пакет, он требует простого кода для создания расширенных визуализаций и обеспечивает достойную поддержку более сложных функций.
  7. Plotnine (середина) - результат Plotnine ниже среднего. Еще один декларативный пакет, настоящим провалом которого была документация и поддержка сообщества. Использование синтаксиса R и документации ggplot2 не является четким требованием при работе с пакетом, имеет все «обязательные» возможности, но не все «полезные». Код читабелен, но может быть проще работать в R и извлекать выгоду из аккуратного стиха.
  8. Производительность ниже среднего. Было все, что нужно, но мало хороших. Довольно читаемый код, но ощущался ограниченным из-за отсутствия сообщества и надежной документации.

Настройки:

  1. Matplotlib (высокий). Опять же, Matplotlib действительно выделялся, это надежная и гибкая библиотека, которая позволяет вам создавать все, что вам нужно. Однако есть один недостаток: мы обнаружили, что он имеет ограниченную поддержку «Triple X» (отметка, цвет и размер) на диаграммах разброса.
  2. Seaborn (высокий). В этой связи, если Matplotlib показал хорошие результаты, то Seaborn оказался еще лучше. потребовалось большинство, если не все, что Matplotlib мог предложить, и улучшил его, но, опять же, он был разработан как оболочка. И да, он поддерживает «Triple X».
  3. Plotly (средний) - Plotly был немного ниже в рейтинговой шкале в этой категории. Некоторые функции были просто средними, например, его способность использовать оценки, остальные были ограничены. У меня сложилось впечатление, что поддержка настройки ограничена и требует чрезмерного кодирования для настройки, что вызывает вопрос, стоит ли вложение вознаграждения? С учетом сказанного, библиотека является модульной и имеет простой для чтения код, который может в несколько строк создать то, для чего многие другие пакеты требуют.
  4. Боке (средне-высокое). Здесь эффект боке был хорош, он позволил нам сделать то, что мы требовали для теста, но мы обнаружили, что иногда цена заключалась в лишних (или лишних) строках кода и онлайн- исследовательская работа.
  5. Альтаир (средне-высокий) - Альтаир демонстрирует отличные возможности, похожие на боке. библиотека надежна и довольно проста в настройке в зависимости от сложности. Возможно, это связано с их хорошо сохранившейся документацией. Боковое примечание, отличная модульность.
  6. Plotnine (середина) - опять же, Plotnine не сработал, он был способен, но не намного, и упускает некоторые сильные стороны и очарование пакета ggplot2 для R. Из-за отсутствия документации для Plotnine, с ним было непросто тестировать или работать.

Другие показатели:

  1. Matplotlib (в середине) - это не новость, но все же стоит упомянуть, что в Matplotlib не хватало одного из самых важных моментов: внешнего вида визуализации. Кроме того, библиотека не является динамической. При этом, как самая старая и наиболее часто используемая библиотека, ей присущи сильные стороны, среди которых большое сообщество пользователей, а также отличная документация и руководства для пакета, упрощающие изучение и изучение.
  2. Seaborn (высокий) - здесь у Seaborn была хорошая производительность, единственным недостатком было то, что он не был динамичным, а время его выполнения было немного дольше среднего.
  3. Plotly (высокий) - Plotly продемонстрировал солидную производительность по большинству аспектов, а его динамические способности были бонусом, помимо того, что он хорошо задокументирован, сообщество имеет хорошую поддержку по большинству проблем, с которыми вы столкнетесь.
  4. Боке (средне-низкий). Здесь Боке отстает от конкурентов по сравнению с большинством библиотек, пакет требует значительного импорта, что может привести к появлению лишних строк кода. Кроме того, его документация не такая надежная, как у некоторых других библиотек, но у нее есть надежный динамический режим и отличная визуальная привлекательность.
  5. Альтаир (высокий) - как и в случае с Плотли, Альтаир выступил достойно. с удивительно информативной привлекательной документацией и красивыми сюжетами. С учетом сказанного, это относительно молодая библиотека, и ее сообщество все еще ограничено, хотя, похоже, она с готовностью предлагает поддержку.
  6. Plotnine (средний-низкий). Документация для Plotnine была основным недостатком для использования библиотеки, на наш взгляд, она была недостаточно подробной, и поиск документации ggplot2 не был указан в качестве требования. Помимо этого, низкая степень принятия Plotnine пользователями Python приводит к плохой поддержке сообщества.

Заявление об ограничении ответственности - внешний вид визуализации субъективен, эти ранги были присвоены на основе наших потребностей и мнений, и разные ранги во время оценки могут привести к разным выводам.

Последнее, что нужно сделать, прежде чем мы остановимся на достигнутом

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

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

Выводы

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

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

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

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

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