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

Если вы хотите увидеть только код, перейдите на Github или запустите блокнот Jupyter с помощью Binder.

Базовые библиотеки вроде Matplotlib могут работать с довольно значительным объемом данных, но не дают возможности взаимодействовать с графиком. С другой стороны, приятно взаимодействовать с такими библиотеками, как Plotly или Bokeh, но только тогда, когда длина данных не достигает своих пределов (~300 тыс. точек с Боке, ~1 тыс. точек с Plotly). Что делать, когда данные превышают пределы этой библиотеки, а мы все еще хотим воспользоваться интерактивностью?

Holoviz — HoloViews и Datashader и многое другое…

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

HoloViews фокусируется на объединении ваших данных с соответствующими метаданными для поддержки как анализа, так и визуализации, делая ваши необработанные данные и их визуализацию одинаково доступными в любое время. Этот процесс может быть незнаком тем, кто привык к традиционным инструментам обработки данных и построения графиков, и это руководство по началу работы предназначено для демонстрации того, как все это работает на высоком уровне. Более подробная информация по каждой теме представлена ​​в Руководстве пользователя.

Одной из библиотек Holoviz является Datashader, который позволяет расширять возможности таких библиотек, как Plotly или Bokeh, чтобы отображать больше точек, чем установлено по умолчанию.

Datashader — это библиотека Python 2 и 3 с открытым исходным кодом для анализа и визуализации больших наборов данных. В частности, Datashader предназначен для растеризации или агрегирования наборов данных в обычные сетки, которые можно просматривать как изображения, что упрощает и ускоряет просмотр свойств и закономерностей ваших данных. Datashader может отображать миллиард точек в секунду или около того на ноутбуке с 16 ГБ памяти и легко масштабируется до внешней, распределенной или графической обработки для еще больших наборов данных.

Можно передавать данные из фрейма данных Dask непосредственно в Holoviews, что позволяет легко отображать огромное количество данных.

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

import pandas as pd
import numpy as np
from dask import dataframe as dd
import holoviews as hv
from holoviews.operation.datashader import datashade

hv.extension('bokeh')


def get_data():
    x = pd.date_range(start='1990-01-01', freq='1min', periods=3000000)
    y = np.sin(np.linspace(0, 8 * np.pi, len(x)))
    df = pd.DataFrame(y, index=x)
    return dd.from_pandas(df, npartitions=8)

df = get_data()
points = hv.Points((df.index, df[0]))
sin_plot = datashade(points).opts(height=300, responsive=True)

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

P.S. Оставьте отзыв, если хотите увидеть что-то конкретное ✌️