Pandas 分组条形图

Pandas Grouped Bar Chart

我有一个 pandas 数据框 df 看起来像这样:

    Timestamp           ProductID.       OrderCount

  6/29/21 10:00       50100100200100       8
  6/29/21 10:00       50100100200101       7
  6/29/21 11:00       50100100200102       5
  6/29/21 11:00       50100100200105       8
  6/29/21 11:00       50100100200101      12
  6/29/21 12:00       50100100200109       4
  6/29/21 12:00       50100100200111       5

时间戳数据类型为datetime64[ns],ProductID和OrderCount分别为float64和int64。

我想绘制一个条形图,其中 X 轴上的 ProductIDs 将按 分组Timestamp 条形图的高度将为 OrderCount 值。

到目前为止我试过这个:

  import pandas as pd
  from datetime import datetime
  import plotly.express as px
  import plotly.graph_objects as go
  import plotly.io as pio

  barchart = px.bar( 
       data_frame = df,
       x = "Timestamp",
       y = "OrderCount",
       orientation = "v",
       barmode = 'group',
  )  

  pio.show(barchart)

但这会叠加 OrderCount 值,并会为 Timestamp==6/29/21 打印 15 10:00,而不是将 8 和 7 绘制为单独的条形图。这里是 pandas 新手,非常感谢您的帮助。

X轴的分组目标是时间序列和ProductID。所以你需要指定 ProductID。对于颜色。 ID被解释为数值,显示颜色条,所以需要提前将ID转成字符串。

import pandas as pd
from datetime import datetime
import plotly.express as px
import plotly.graph_objects as go
import plotly.io as pio

barchart = px.bar(
    data_frame = df,
    x = "Timestamp",
    y = "OrderCount",  
    color="ProductID.",
    orientation = "v",
    barmode = 'group',
)  

pio.show(barchart)

选择:

df.pivot(*df).plot(kind='bar')

输出: