【问题标题】:Pandas Grouped Bar ChartPandas 分组条形图
【发布时间】:2021-09-19 11:18:19
【问题描述】:

我有一个 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

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

我想绘制一个条形图,其中在 X 轴上 ProductIDs 将按 Timestamp 分组em> 条的高度将是 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 10:00 打印 15,而不是将 8 和 7 绘制为单独的条形图。这里是熊猫新手,非常感谢您的帮助。

【问题讨论】:

    标签: pandas dataframe matplotlib plotly bar-chart


    【解决方案1】:

    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)
    

    【讨论】:

    • 你可以找到官方参考here。另外,如果我的回答对你有帮助,还有一个检查按钮可以检查并接受它。
    【解决方案2】:

    替代方案:

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

    输出:

    【讨论】:

      猜你喜欢
      • 2017-03-18
      • 2020-04-13
      • 2016-12-01
      • 1970-01-01
      • 2017-06-28
      • 2011-03-01
      • 2020-05-12
      相关资源
      最近更新 更多