首页 > 解决方案 > 将 Pandas DF 绘制为堆积条形图,同时忽略缺失值

问题描述

我有一个带有锻炼日志的数据框,如下所示:

>>> data
       _date  _week  Distance (km)
0 2020-10-31     44      42.220013
1 2020-10-29     44      10.054135
2 2020-10-25     43      30.103745
3 2020-10-24     43      14.135142
4 2020-10-20     43      10.471132
5 2020-10-17     42      27.164278
6 2020-10-15     42      18.511157

并希望将其绘制为每周堆积条形图,如下所示:

按周分组的图

问题 1:我无法在绘图之前弄清楚如何按 DF 进行旋转分组,因为它每周的锻炼次数不均匀,最多 4 或 5 次,但有时在我懒惰的时候根本没有。

问题2:可选地,为了美观,我想将它们从最长到最短排序,以便最长的总是相同的颜色并且在底部,等等。但它是挑剔的:)

感谢您的任何指点!

标签: pythonpandasmatplotlib

解决方案


您需要创建一个新字段以供Run使用cumcount,并将pivot其用于week索引上的列:

df['Run'] = 'Run ' + (df.groupby('_week').cumcount() + 1).astype(str)
df = df.drop('_date', axis=1).set_index('_week').pivot(columns='Run')
df.plot(kind='bar', stacked=True)

在此处输入图像描述


推荐阅读