如何使用matplotlib/python按model列分组绘制累计值折线图
不拆分DataFrame的绘图方案
你当前的折线显示异常,核心原因是你的DataFrame为长表结构,所有model的累计值都存储在同一列cum_value中,而pandas内置的plot方法默认将不同列作为独立的折线系列,因此直接绘图无法区分不同model的数据。
你可以通过pivot透视操作直接转换为绘图需要的宽格式,不需要拆分原DataFrame,具体代码如下:
# 透视转换:日期作为索引,model类别作为列名,对应值取cum_value # 该操作不会修改原data的结构和内容 data.pivot( index='date_time', columns='model', values='cum_value' ).plot( kind='line', ylabel='cum_values' )
执行上述代码后,会自动生成符合要求的折线图:
- x轴自动使用date_time索引,匹配你的日期轴需求
- 不同model对应独立折线,图例自动标注model的分类名称
- y轴为cum_values,和你的要求一致
如果后续需要保留转换后的宽格式数据用于其他分析,也可以单独存储为中间变量:
data_wide = data.pivot(index='date_time', columns='model', values='cum_value')
内容的提问来源于stack exchange,提问作者user14859200
相关产品推荐
相关产品推荐

