【问题标题】:Plotting Column against Boolean Column (Bar Chart)针对布尔列绘制列(条形图)
【发布时间】:2023-03-26 01:13:02
【问题描述】:

对 python 相当陌生

有一个数据框,我对每家公司的文件延迟提交的百分比感兴趣。

“公司”列中有 10 家公司(A、B、C、D 等),布尔列中的真/假取决于文档是准时还是迟到。 (总共大约有 5000 个文档)

我想创建一个以 % 为 y 轴的条形图,每个公司在 x 轴上都有一个堆积条形图。

这可能吗?我尝试了以下代码,但它只是一个常规条形图,而不是条形图:

ax = df13['Originator Company'].value_counts(normalize=True).plot(x='Name', kind='bar', stacked=True, title = 'Companies % On-Time', y='Percentage')
ax.yaxis.set_major_formatter(mtick.PercentFormatter(xmax=1, symbol='%'))
ax.set_ylim([0,0.25])
positions = (True, False)

plt.savefig("LMCP Contractor.png", bbox_inches='tight')

提前感谢您的帮助

【问题讨论】:

    标签: python pandas matplotlib boolean


    【解决方案1】:
    • 生成与您的形状相匹配的样本数据
    • 聚合和整形(使用unstack()
    • 从真/假数修改为百分比
    • 绘制成堆叠图
    df = pd.DataFrame({"Companies":np.repeat(list("ABCDEFGHIJ"),100), 
                       "ontime":np.random.randint(0,2, 1000)}).assign(ontime=lambda dfa: dfa.ontime.astype(bool))
    
    # aggregated and shape data
    df2 = df.groupby(["Companies","ontime"]).size().unstack(1)
    # modify from totals to percentages and plot
    df2.div(df2.sum(axis=1), axis=0).plot(kind="bar", stacked=True)
    

    【讨论】:

      猜你喜欢
      • 2021-11-03
      • 1970-01-01
      • 2022-07-07
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      相关资源
      最近更新 更多