18 полезных библиотек для анализа данных в Python

Наша подборка будет разбита на две части — первые 8 библиотек предназначены для предварительной обработки и очистки данных от мусора, следующие 10 — для визуализации подготовленных данных.

Библиотеки для форматирования и очистки данных

В нашем мире всё запутано и переплетено — то же самое можно сказать и об информации. Недавнее исследование показывает, что очистка данных занимает до 60% времени у специалистов по Data Scienсe. И 57% из них считают, что это самая утомляющая часть работы. Чтобы сделать этот процесс более приятным и быстрым, существует множество библиотек, о которых мы вам и расскажем.

Dora

Эта библиотека предназначена для разведочного анализа данных, а именно — для автоматизации самых болезненных его частей, в том числе и для очистки данных — говорящий пример её работы можно посмотреть на странице проекта на Github.

Datacleaner

Этот проект также может принимать на вход данные в DataFrame (как утверждает разработчик, “datacleaner — не что-то магическое, просто взять необработанный текст и автоматически распарсить его он не может”), и затем выбирает строки с пропущенными или некорректными значениями и исправляет их таким образом, каким вы ему скажете (например, заменяет их на средние или медианные значения).

PrettyPandas

DataFrames, конечно, сильный инструмент, но он создаёт не те таблицы, которые вы бы хотели показать своему боссу. PrettyPandas использует pandas Style API, чтобы привести датафреймы в удобоваримый вид.

Tabulate

Tabulate позволяет выводить в удобном виде списки списков (или другие iterable структуры из iterable структур), списки (или другие структуры) из словарей), двумерные массивы NumPy, pandas.DataFrame и массивы записей NumPy. Причём выгружать он их может не только в консоль, но и в HTML, PHP или Markdown Extra, что является очень приятным дополнением.

Scrubadub

Часто приходится обрабатывать конфиденциальные данные, выдавать которые не стоит (например, если вы работаете в сфере здравоохранения или в сфере финансов). На помощь приходит scrubadub, которая может удалять из списка данных имена, телефоны, URL’и, идентификаторы Skype и многое другое. Естественно, присутствует возможность гибкой настройки того, что именно вы хотите убрать и каким образом.

Arrow

Отдельной проблемой для нативного Python является работа с временем. Нужно парсить строки, учитывать часовые пояса, и на всё это уходят многие строки не очень интересного кода. Эту проблему должна решить библиотека Arrow.

Beautifier

У этой библиотеки довольно простая задача — упростить работу с URL’ами и email-адресами. С её помощью вы можете парсить почтовые адреса по доменами и именам пользователей, а URL-адреса — по доменам и различным параметрам (например, UTM’ам или токенам).

Ftfy

Полное название этой библиотеки — Fixes text for you. Она предназначена для того, чтобы превращать плохие Unicode строки (“quotesâ€\x9d или ü) в хорошие Unicode строки ("quotes" или ü соответственно).


Библиотеки для визуализации данных

Если просматривать страницы Python Package Index, можно найти библиотеки практически для любого отображения данных, от GazeParser‘а для отслеживания движения глаз, до pastalog‘а для отображения развития нейронной сети в реальном времени. Некоторые из этих библиотек крайне узкоспециализированы, а некоторые могут использоваться почти для любой задачи. В этой подборке мы приводим 10 достаточно универсальных Python библиотек для отображения данных.

Matplotlib

viz-libraries-01

Matplotlib за более чем 10 лет своего существования уже фактически стала стандартом визуализации на Python. Многие современные библиотеки для построения графиков проектируются для работы совместно с matplotlib. Некоторые библиотеки, например, pandas или Seaborn, представляют из себя обёртки над matplotlib. Однако вместе с широтой возможностей приходит и сложность в устройстве, и, как следствие, работать с библиотекой тоже не всегда легко. Ещё один минус — оформление в духе 90-х, которое явно не подойдёт для презентаций. Последнее, однако, должен решить релиз 2.0.

Seaborn

viz-libraries-02

Как уже было сказано выше, Seaborn — обёртка над matplotlib, привносящая в неё улучшения (главным образом в плане эстетики).

Ggplot

viz-libraries-03

Ggplot базируется на ggplot2 (система построения графиков на языке R) и использует принципы Grammar of Graphics. Как следствие, работа с ней сильно отличается от работы с matplotlib. Если верить автору, библиотека не предназначена для создания сложных персонализированных графиков, а ориентирована скорее на простоту.

Bokeh

viz-libraries-04

Bokeh также использует Grammar of Graphics, однако, в отличии от ggplot, он не портирован с R, а написан на самом Python. Библиотека поддерживает выгрузку в виде объектов JSON, в HTML-документы или интерактивные веб-приложения, равно как и поддерживает передачу данных в реальном времени и в виде потоков.

Pygal

viz-libraries-05

Из основных преимуществ этой библиотеки можно выделить предельную простоту, возможность выгрузки данных в SVG-файлы (аккуратно, при больших объёмах данных SVG, пожалуй, не стоит использовать из-за проблем производительности) и возможность встраивать результат работы в веб-приложения.

Plotly

viz-libraries-06

Так же, как Pygal и Bokeh, Plotly адаптирован для работы в интерактивных веб-приложениях. Его уникальные возможности — контурные графики, дендограммы и 3D чертежи.

Geoplotlib

viz-libraries-07

Как можно догадаться из названия, Geoplotlib предназначена для работы с картами. Для её работы необходим Pyglet (объектно-ориентированный интерфейс). Так как практически ни одна из остальных библиотек не предлагает API для работы с картами, очень приятно иметь ту, которая специально заточена под них.

Gleam

viz-libraries-08

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

Missingno

viz-libraries-09

Если библиотеки для очистки входных данных от пропущенных полей (путём удаления таких записей целиком, или подстановки средних/медианных значений) вам не подходят, то вы можете легко визуализировать полноту данных с помощью Missingno. Библиотека может не только визуализировать данные, но и сортировать их или отбирать в зависимости от корреляций с, скажем, дендограммами.

Leather

viz-libraries-10

Создатель Leather, Кристофер Гроскопф, удачно описал своё творение: “Leather — чертёжная библиотека для Python для тех, кому нужен график прямо сейчас, и его не волнует насколько он идеален”. Он спроектирован для работы со всеми типами данных и выводит данные в SVG, благодаря чему вы можете масштабировать графики без потери качества (к слову, у нас есть отличная статья о векторных и битовых форматах изображений). Библиотека достаточно новая, поэтому к ней всё ещё отсутствует часть документации. Чертежи с её помощью можно сделать достаточно примитивные, но это только начало 🙂


Возможно, вам также покажется полезной наша подборка “10 малоизвестных, но полезных библиотек для Python”.

Адаптация публикаций «Handy Python Libraries for Formatting and Cleaning Data» и «10 Useful Python Data Visualization Libraries for Any Discipline»