0

我正在使用带有 Pandas 的 SQLite 数据库,并希望使用 Bokeh (varea_stack) 显示动态数据

我的动态数据 (df) 结构如下所示:

id        date       site  numberOfSessions  ...  avgSessionDuration  uniqueDimensionCombinations  events  pageViews
0   1  2020-07-29  177777770                 3  ...               11.00                            2       4          3
1   2  2020-07-29  178888883                 1  ...               11.00                            1       4          3
2   3  2020-07-29  177777770                 1  ...               11.00                            1       4          3
3   4  2020-07-29  173333333                 2  ...              260.50                            2      23         10
4   5  2020-07-29  178888883                 2  ...              260.50                            2      23         10
5   6  2020-07-29  173333333                 2  ...              260.50                            2      23         10
6   7  2020-07-29  178888883                12  ...              103.75                           12     143         36
7   8  2020-07-30  178376403                12  ...              103.75                           12     143         36
8   9  2020-07-30  178376403                12  ...              103.75                           12     143         36
9  10  2020-07-28  178376403                12  ...              103.75                           12     143         36

我想创建一个 varea_stack 图,其中:

x轴->“日期”

y 轴 -> 根据“站点”堆叠的“numberOfSessions”

(我在想也许使用某种数据透视表?)

这就是我所拥有的:

from bokeh.plotting import figure, output_file, show
from bokeh.embed import components
from bokeh.models import HoverTool

plot = figure()
plot.varea_stack(df.site.unique().tolist(), x=df.index.values.tolist(), source=df)
script, div = components(plot)

我得到的错误:

Keyword argument sequences for broadcasting must be the same length as stackers

我一直在网上搜索(https://docs.bokeh.org/en/latest/docs/reference/plotting.html#bokeh.plotting.figure.Figure.varea_stack)和 Stackoverflow。我似乎找不到答案。

4

1 回答 1

0

我无法真正谈论所需的 Pandas 操作,但这是数据需要采用的一般格式varea_stack

sites = [<list of sites>]

data = {
    'date'    : <all the datetime values>,
    <site1>   : <site1 values for every date>,
    <site2>   : <site2 values for every date>,
    <site3>   : <site3 values for every date>,
    ...
}

plot.varea_stack(sites, x='date', source=data)

请注意,要被varea_stack以下内容使用,必须为真:

  • 列表中的每一项sites都必须是数据中的一列
  • 每个站点列的长度必须相同(每个日期的值)

请注意,以上还假设日期被转换为真实的日期时间值。如果您使用的是分类日期(即不使用实际日期时间和连续的日期时间轴),那么您还需要将日期(字符串)列表传递给x_rangefor 图(与任何分类轴一样)。

于 2020-07-30T21:46:02.903 回答