построение табличных данных с помощью голографических обзоров

Я хотел бы построить такие данные

 |   |abstime                |hostname   |type   |id |cpu    |mem    |reltime|
 -----------------------------------------------------------------------------
 |0  |2017-06-21 02:45:39    |hw03       |ps     |0  |16.0   |0.0    |0:00.08|
 |1  |2017-06-21 02:45:43    |hw03       |ps     |0  |98.0   |0.1    |0:02.23|
 |2  |2017-06-21 02:45:48    |hw03       |ps     |0  |1591.0 |0.1    |0:21.09|
 |3  |2017-06-21 02:45:52    |hw03       |ps     |0  |0.0    |0.1    |0:38.35|
 |4  |2017-06-21 02:45:57    |hw03       |ps     |0  |0.0    |0.1    |1:01.41|

с использованием пакета Holoviews Python.

Я пытаюсь создать несколько таких виджетов:

                                               DROPDOWN (hostname)
LINE PLOTS ( abstime vs cpu )                  DROPDOWN (type)
colored by id
                                               DROPDOWN (hostname)
LINE PLOT ( abstime vs cpu )                   DROPDOWN (type)
                                               DROPDOWN (id)
LINE PLOT ( abstime vs cpu )                   DROPDOWN (hostname)
colored by type

Я думаю, что в идеале было бы использовать что-то вроде hv.Table, а затем нарезать его кубиками, используя .to.curve и другие техники Holoviews.

Я пытаюсь следовать примерам и руководствам, но ни у одного из них нет повторов в столбцах, поэтому я не понимаю, как сгруппировать, какими должны быть мои kdims, vdims и cdims ...

Например:

table=hv.Table(df,kdims=['abstime','reltime','hostname','type','id'],vdims=['cpu','mem'])

print(table)
#:Table   [abstime,reltime,hostname,type,id]   (cpu,mem)

table[None,None,{'hw03'},{'ps'},None].to.curve('abstime','cpu')

это дает мне ошибку при последнем звонке:

AttributeError: 'DataFrame' object has no attribute 'itertuple'

Любые связанные примеры высоко оценены!

Кстати, моя таблица df - это Dask Dataframe (много файлов CSV), поэтому я полагаюсь на отложенные вычисления, если это имеет значение ...

Спасибо!


person THOTH    schedule 21.06.2017    source источник
comment
Похоже, это простая опечатка в HoloViews, которую я исправил здесь: github. com / ioam / holoviews / pull / 1593 Исправление будет доступно в следующем выпуске, которым является HoloViews 1.8, и будет доступно позже сегодня в выпуске 1.8dev3, который можно установить с помощью conda install -c ioam/label/dev holoviews.   -  person philippjfr    schedule 21.06.2017


Ответы (1)


Чтобы получить раскрывающийся список, я расширил ваш набор данных, включив в него записи с другим именем хоста:

 |abstime            |hostname|type|id|cpu   |mem| reltime
0| 2017-06-2102:45:39|hw03    |ps  |0 |16.0  |0.0| 0:00.08
1| 2017-06-2102:45:43|hw03    |ps  |0 |98.0  |0.1| 0:02.23
2| 2017-06-2102:45:48|hw03    |ps  |0 |1591.0|0.1| 0:21.09
3| 2017-06-2102:45:52|hw03    |ps  |0 |0.0   |0.1| 0:38.35
4| 2017-06-2102:45:57|hw04    |ps  |0 |0.0   |0.1| 1:01.41
5| 2017-06-2102:45:39|hw04    |ps  |0 |16.0  |0.0| 0:00.08
6| 2017-06-2102:45:43|hw04    |ps  |0 |98.0  |0.1| 0:02.23
7| 2017-06-2102:45:48|hw04    |ps  |0 |1591.0|0.1| 0:21.09
8| 2017-06-2102:45:52|hw04    |ps  |0 |0.0   |0.1| 0:38.35
9| 2017-06-2102:45:57|hw04    |ps  |0 |0.0   |0.1| 1:01.41

Я использую Pandas, а не dask, но принцип тот же:

import pandas as pd
import holoviews as hv
hv.extension('bokeh')
d=pd.read_csv('so.csv')
# Create a holoviews dataset from any of a number of data structures.
ds=hv.Dataset(d)
display(ds.data)
#Now create a table from just the columns that we want. Otherwise
#You will get more dropdowns than you might want in the holomap.   
tb=hv.Table(ds,kdims=['abstime','hostname','type'],vdims='cpu')
display(tb)
#This is a dimensioned element.
hv.HoloMap(tb.to.curve(kdims=['abstime'],vdims='cpu'))

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

person Steve    schedule 07.01.2018