You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Plotly Express生成按年份分组的月度累计值折线图(每月仅保留一个累计点)

如何用Plotly Express生成按年份分组的月度累计值折线图(每月仅保留一个累计点)

我刚接触Dash和Plotly才第二天,Python水平也还很有限😅。

我有一个从CSV导入的简单DataFrame,包含date(格式为%d/%m/%Y)和value两列。为了方便制作图表,我新增了两列:一列提取年份存为date_year,一列提取月份全称(比如January)存为date_months,代码如下:

df["date_year"] = pd.to_datetime(df['date'], format = '%d/%m/%Y').dt.strftime('%Y')
df["date_months"] = pd.to_datetime(df['date'], format = '%d/%m/%Y').dt.strftime('%B')

靠着这两列,我已经能轻松实现通过下拉菜单选择年份后,展示该年份下月度值求和的柱状图,代码是:

fig = px.histogram(df_filtered[mask], x='date_months', y='value', histfunc='sum')

虽然代码可能不够优雅,但至少能用了。

现在我想做一个类似的图表,但要按年份分组,每个年份对应一条折线,每个月份只显示该月最后一个累计值点。我试了下面的代码,结果接近但不符合预期:

df_filtered["value_cumsum"] = df_filtered.groupby(['date_months','date_year'])['value'].cumsum()
fig2 = px.line(df_filtered, x="date_months", y="value_cumsum", color='date_year')

现在的问题是,折线图里每个月有多个数据点,看起来像“锯齿”一样,我只想要每个月对应一个累计值点。

有没有人能给点思路?我不想写更多乱糟糟的“面条代码”了😂。

备注:内容来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:52:58