Открытие
Мы можем начать понимать суть этой статьи, поняв причину, по которой я ее написал. В рамках моих обязанностей как аналитика данных мне было поручено найти лучшую библиотеку визуализации данных Python для моей команды и других аналитических групп. Наша цель: быстро и эффективно разрабатывать, используя библиотеку, которая позволяет настраивать.
Получив возможность выбрать интересующие библиотеки визуализации, я начал исследовать и документировать наши потребности и требования, которые мы предъявляли к библиотекам, от возможностей визуализации, сложности кода и простоты настройки до проблем, связанных с управлением версиями.
После некоторого самоанализа мы с товарищами по команде установили следующие критерии, которые мы использовали для оценки библиотек:
- Хорошо выглядеть: библиотека не стоит ни копейки, если менеджеру не нравится ее просматривать или если конечный пользователь не может понять, что вы им представляете.
- Надежность - надежная библиотека позволяет аналитикам и специалистам по обработке данных выполнять комплексный анализ с небольшими ограничениями и поддерживает ключевой арсенал графиков как готовые возможности.
- Сложность. Визуализация - это инструмент, а не цель анализа данных, поэтому очень важен короткий, легкий для чтения код.
- Модульность - не каждая визуализация продумана до мельчайших деталей, поэтому простота добавления и удаления элементов на графиках является ключевым моментом.
- Исследовательский - библиотека с хорошей документацией и сплоченным сообществом позволит разработчику исследовать далекие возможности библиотеки и при необходимости получать специальные результаты.
На основе этих требований и спецификаций родился тест библиотеки визуализации. Я надеюсь, что это будет стандартная оценка библиотек визуализации Python, которая будет полезна каждому пользователю, независимо от его уровня опыта или функциональной группы.
В следующем разделе мы рассмотрим шесть самых популярных библиотек визуализации и их ранжирование.
Тест библиотеки визуализации
Основываясь на наших критериях, мы построили тест, который включал всего три элемента, которые охватывали все наши потребности:
- Возможности визуализации.
- Настройки.
- Ссылки на пакеты и архитектура.
Для оценки нашего теста мы использовали базовую систему ранжирования, от «Нет» (функция не существует), до «Низкая-средняя» и «Высокая», а также возможности сегментированной визуализации на основе «обязательных» и «желаемых». встроенные в пакет.
Тестирование сегментов
Возможности визуализации:
- «Обязательные»: линия, столбец, разброс, гистограмма, прямоугольник, тепловая карта.
- «Приятно иметь»: водопады, Pariplots, геоориентированные, 3D.
Настройки:
- Модульность.
- Общее добавление, установка местоположения и визуальные настройки легенды, аннотаций и знаков / символов (также трех вместе - «Triple X»).
- Темы и шаблоны графиков: рамки, линии сетки, размеры графика, поля и конфигурации.
Ссылки на пакеты и архитектура:
- Время выполнения.
- Импорт.
- Динамические возможности.
- Качество и полнота документации.
- Поддержка сообщества.
- Внешний вид визуализации.
Краткое заявление об отказе от ответственности - анализ мог быть выполнен разными способами, и дополнительное исследование могло позволить другим прийти к другим выводам, основанным на опыте, обзоре и необходимости. Однако я надеюсь, что совместное использование структуры моего обзора и результатов позволит другим выполнять аналогичные обзоры на основе их собственных сценариев использования.
Результаты по сегментам
Разнообразные нестандартные типы графиков:
- Matplotlib (средний-высокий) - Matplotlib имел все «обязательные» возможности, но не все «полезные» функции, которые нам требовались в наших проектах. В целом, очень надежный, с четкой логикой разработки, что способствует его высокому уровню настраиваемости, но увеличивает уровень сложности и время, необходимое для разработки.
- Сиборн (средне-высокий) - Сиборн работает аналогично Матплотлибу. В то время как некоторые из «полезных» возможностей, к сожалению, отсутствовали, другие поддерживаются пакетом. Пакет с широкими возможностями настройки, для разработки которого требуется больше опыта.
- По сути, он похож на Matplotlib, за исключением крайних случаев, подобных тем, которые мы искали в графах «Приятно иметь», которых не хватало в некоторых из них (например, в Geo). С другой стороны, как Matplotlib, легко настраиваемый, но также требует более высоких навыков и внимания из-за своей относительной сложности.
- Сюжет (высокий) - Сюжетно было все. библиотека включала все диаграммы, которые мы включили в список желаний, в том числе наши «полезные» функции, редкую находку. Синтаксис Plotly также относительно прост, что делает его пакетом для пользователей всех уровней.
- Боке (в середине). Мы были разочарованы поддержкой Боке тех возможностей, которые мы считаем важными для нашей работы. Мы не смогли найти все диаграммы в нашем списке обязательных, а из тех, что мы нашли, с ними было труднее работать. При этом Bokeh поддерживает более сложный анализ и типы графиков, а также визуализацию, которую «удобно иметь», и она работала довольно хорошо.
- Альтаир (средне-высокий) - Альтаир показал хорошие результаты, особенно в отношении «обязательных» способностей, но также и «желаемых». Как декларативный пакет, он требует простого кода для создания расширенных визуализаций и обеспечивает достойную поддержку более сложных функций.
- Plotnine (середина) - результат Plotnine ниже среднего. Еще один декларативный пакет, настоящим провалом которого была документация и поддержка сообщества. Использование синтаксиса R и документации ggplot2 не является четким требованием при работе с пакетом, имеет все «обязательные» возможности, но не все «полезные». Код читабелен, но может быть проще работать в R и извлекать выгоду из аккуратного стиха.
- Производительность ниже среднего. Было все, что нужно, но мало хороших. Довольно читаемый код, но ощущался ограниченным из-за отсутствия сообщества и надежной документации.
Настройки:
- Matplotlib (высокий). Опять же, Matplotlib действительно выделялся, это надежная и гибкая библиотека, которая позволяет вам создавать все, что вам нужно. Однако есть один недостаток: мы обнаружили, что он имеет ограниченную поддержку «Triple X» (отметка, цвет и размер) на диаграммах разброса.
- Seaborn (высокий). В этой связи, если Matplotlib показал хорошие результаты, то Seaborn оказался еще лучше. потребовалось большинство, если не все, что Matplotlib мог предложить, и улучшил его, но, опять же, он был разработан как оболочка. И да, он поддерживает «Triple X».
- Plotly (средний) - Plotly был немного ниже в рейтинговой шкале в этой категории. Некоторые функции были просто средними, например, его способность использовать оценки, остальные были ограничены. У меня сложилось впечатление, что поддержка настройки ограничена и требует чрезмерного кодирования для настройки, что вызывает вопрос, стоит ли вложение вознаграждения? С учетом сказанного, библиотека является модульной и имеет простой для чтения код, который может в несколько строк создать то, для чего многие другие пакеты требуют.
- Боке (средне-высокое). Здесь эффект боке был хорош, он позволил нам сделать то, что мы требовали для теста, но мы обнаружили, что иногда цена заключалась в лишних (или лишних) строках кода и онлайн- исследовательская работа.
- Альтаир (средне-высокий) - Альтаир демонстрирует отличные возможности, похожие на боке. библиотека надежна и довольно проста в настройке в зависимости от сложности. Возможно, это связано с их хорошо сохранившейся документацией. Боковое примечание, отличная модульность.
- Plotnine (середина) - опять же, Plotnine не сработал, он был способен, но не намного, и упускает некоторые сильные стороны и очарование пакета ggplot2 для R. Из-за отсутствия документации для Plotnine, с ним было непросто тестировать или работать.
Другие показатели:
- Matplotlib (в середине) - это не новость, но все же стоит упомянуть, что в Matplotlib не хватало одного из самых важных моментов: внешнего вида визуализации. Кроме того, библиотека не является динамической. При этом, как самая старая и наиболее часто используемая библиотека, ей присущи сильные стороны, среди которых большое сообщество пользователей, а также отличная документация и руководства для пакета, упрощающие изучение и изучение.
- Seaborn (высокий) - здесь у Seaborn была хорошая производительность, единственным недостатком было то, что он не был динамичным, а время его выполнения было немного дольше среднего.
- Plotly (высокий) - Plotly продемонстрировал солидную производительность по большинству аспектов, а его динамические способности были бонусом, помимо того, что он хорошо задокументирован, сообщество имеет хорошую поддержку по большинству проблем, с которыми вы столкнетесь.
- Боке (средне-низкий). Здесь Боке отстает от конкурентов по сравнению с большинством библиотек, пакет требует значительного импорта, что может привести к появлению лишних строк кода. Кроме того, его документация не такая надежная, как у некоторых других библиотек, но у нее есть надежный динамический режим и отличная визуальная привлекательность.
- Альтаир (высокий) - как и в случае с Плотли, Альтаир выступил достойно. с удивительно информативной привлекательной документацией и красивыми сюжетами. С учетом сказанного, это относительно молодая библиотека, и ее сообщество все еще ограничено, хотя, похоже, она с готовностью предлагает поддержку.
- Plotnine (средний-низкий). Документация для Plotnine была основным недостатком для использования библиотеки, на наш взгляд, она была недостаточно подробной, и поиск документации ggplot2 не был указан в качестве требования. Помимо этого, низкая степень принятия Plotnine пользователями Python приводит к плохой поддержке сообщества.
Заявление об ограничении ответственности - внешний вид визуализации субъективен, эти ранги были присвоены на основе наших потребностей и мнений, и разные ранги во время оценки могут привести к разным выводам.
Последнее, что нужно сделать, прежде чем мы остановимся на достигнутом
Поскольку мы говорили о библиотеках визуализации, было бы стыдно не показать некоторые из прекрасных вещей, создаваемых этими библиотеками.
Излишне говорить, что мы считаем, что эстетичный внешний вид должен требовать минимальной конфигурации и по возможности использоваться по умолчанию, и мы рассмотрели библиотеки с учетом этого.
Выводы
Наши фавориты - Matplotlib, Seaborn, Altair и Plotly. Хотя решение использовать один из них будет зависеть от спектра ваших возможностей использования, среди этих вариантов вы можете так же легко подбросить монетку, потому что все они обеспечивают сильную поддержку и привлекательность для большинства проектов.
Кроме того, не стесняйтесь тестировать эти или, возможно, другие библиотеки по метрикам теста или, возможно, для конкретного случая использования. Это может быть обработка гео-ориентированных данных или, возможно, трехмерная визуализация.
Если вы это сделаете, мы надеемся, что вы поделитесь своими результатами и что аналитическое сообщество сможет извлечь уроки из ваших выводов и исследований. Вместе мы можем улучшить наши возможности визуализации данных, расширить возможности лиц, принимающих решения, и создать основу для выбора библиотеки для будущих проектов.
Если да, поделитесь им и позвольте учиться на ваших выводах и исследованиях. Я уверен, что вместе мы сможем лучше предоставлять наши данные и принимать более взвешенные решения.
В заключение скажу, что Bokeh - прекрасная библиотека с большим потенциалом, и мы с нетерпением ждем ее роста. на данный момент, для наших нужд, он не очень хорошо показал себя в нашем тесте, особенно в отношении разнообразия графиков, документации и требований сообщества. если Bokeh решит эти проблемы в будущем, он обязательно будет сиять.