首页 > 解决方案 > HoloViews:为 pandas 数据框中的每一列创建箱线图

问题描述

我可以使用 Pandas pandas.DataFrame.boxplot()方法创建以下箱线图:

import pandas as pd
import numpy as np

np.random.seed(1234)
df = pd.DataFrame(np.random.rand(10, 4),
                  columns=['Col1', 'Col2', 'Col3', 'Col4'])

df.plot.box()
plt.show()

在此处输入图像描述

虽然,如果我尝试使用 HoloViews 的BoxWhisker 元素和 Bokeh 作为后端来做同样的事情,它适用于单个列:

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

hv.BoxWhisker(
    data=df['Col1'],
    vdims='Col1'
)

在此处输入图像描述

但是,只要我尝试添加另一列,就会出现以下错误:

hv.BoxWhisker(
    data=df[['Col1', 'Col2']]
)

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

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

PandasInterface expects tabular data, for more information on supported datatypes see http://holoviews.org/user_guide/Tabular_Datasets.html

我不明白Tabular Data HoloViews理解是否存在问题,或者我无法正确应用语法。

标签: pandasdataframebokehholoviews

解决方案


我不确定如何从本机 HoloViews BoxWhisker 界面中实现您想要的,该界面是为整洁的数据而不是像这样的一组独立列而设置的。同时,您可以像使用原生 .plot() 调用一样使用 hvPlot:

在此处输入图像描述


推荐阅读