gpt4 book ai didi

python - 使用 Bokeh 显示每月每个类别的计数的条形图

转载 作者:行者123 更新时间:2023-11-30 22:24:06 24 4
gpt4 key购买 nike

我有数据如下所示:

input data

因此,我需要明智地显示每个类别year_month_id 中的计数。由于我有 12 个月,因此将有 12 个分割,并且每个分割如下:每个类(class)内的 ID。我正在寻找类似下图的东西。

enter image description here

现在 Bokeh 中的示例使用 ColumnDataSource 和字典映射,但我如何对我的数据集执行此操作。
有人可以帮我解决这个问题吗?以下是表格和图表格式的预期输出。

enter image description here

最佳答案

我相信pandas Python 包在准备绘图数据时会派上用场。它对于操作类似表的数据结构很有用。

以下是我解决您问题的方法:

from pandas import DataFrame
from bokeh.io import show
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource
from bokeh.palettes import Viridis5

# Your sample data
df = DataFrame({'id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 1],
'year_month_id': [201612, 201612, 201612, 201612, 201612, 201612, 201612, 201612, 201612, 201701],
'class': ['A', 'D', 'B', 'other', 'other', 'other', 'A', 'other', 'A', 'B']
})

# Get counts of groups of 'class' and fill in 'year_month_id' column
df2 = DataFrame({'count': df.groupby(["year_month_id", "class"]).size()}).reset_index()

df2 现在看起来像这样:

enter image description here

# Create new column to make plotting easier
df2['class-date'] = df2['class'] + "-" + df2['year_month_id'].map(str)

# x and y axes
class_date = df2['class-date'].tolist()
count = df2['count'].tolist()

# Bokeh's mapping of column names and data lists
source = ColumnDataSource(data=dict(class_date=class_date, count=count, color=Viridis5))

# Bokeh's convenience function for creating a Figure object
p = figure(x_range=class_date, y_range=(0, 5), plot_height=350, title="Counts",
toolbar_location=None, tools="")

# Render and show the vbar plot
p.vbar(x='class_date', top='count', width=0.9, color='color', source=source)
show(p)

所以 Bokeh 图看起来像这样:

enter image description here

当然,您可以更改它以满足您的需要。我首先想到的是制作 y_range 变量的顶部,这样它可以更好地容纳数据,尽管我自己没有尝试过。

关于python - 使用 Bokeh 显示每月每个类别的计数的条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47910177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com