【问题标题】:Plot Pandas DF as stacked bar chart while ignoring missing values将 Pandas DF 绘制为堆积条形图,同时忽略缺失值
【发布时间】:2020-11-02 23:37:18
【问题描述】:

我有一个包含如下锻炼日志的数据框:

>>> 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: 我不知道如何在绘图之前 pivot按 DF 分组,因为它有奇数每周锻炼,最多 4 或 5 次,但有时我懒惰时根本没有。

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

感谢您的指点!

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    您需要使用cumcountpivotRun 创建一个新字段,并将其添加到索引上带有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)
    

    【讨论】:

    • 太棒了,谢谢! cumcount() 是我遗漏的关键部分。
    猜你喜欢
    • 2016-05-24
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2021-12-27
    相关资源
    最近更新 更多