Как построить огромную диаграмму данных, желательно использовать holoviews? - PullRequest
0 голосов
/ 02 июля 2019

Как построить огромный блок Dask Dataframe?

Мне нужно построить график данных DASK, я делаю:

import holoviews as hv
from holoviews import opts
hv.extension('bokeh', 'matplotlib')

d = dd.read_parquet(dataset_dir+'/train/date*/*.parquet', 
engine='pyarrow', columns=numeric_columns[:3]).fillna(0)

hv.BoxWhisker(data=d, datatype=['dask'])

и дают:

~/anaconda3/lib/python3.6/site-packages/holoviews/core/data/interface.py in initialize(cls, eltype, data, kdims, vdims, datatype)
    247                                   % (intfc.__name__, e))
    248                 error = ' '.join([error, priority_error])
--> 249             raise DataError(error)
    250 
    251         return data, interface, dims, extra_kws

DataError: None of the available storage backends were able to support the supplied data format. DaskInterface raised following error:

 unsupported operand type(s) for +: 'NoneType' and 'int'

Где проблема?

1 Ответ

2 голосов
/ 02 июля 2019

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

Использование hvPlot должно быть простым:

import hvplot.dask
d.hvplot.box()

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

...