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

基于日期列提取年份并绘制列均值折线图:问题与解决

提取年份绘制折线图失败的原因与解决思路

最初代码的错误原因

  1. 自定义年份提取函数逻辑冗余且不合理
    你写的Extract_year函数存在逻辑漏洞:函数接收参数date但完全未使用,反而每次调用都会遍历整个df["Date"]往全局的year列表追加元素,多次调用会导致列表长度远超数据行数;同时手动用split("-")拆分日期的方式,在日期格式不统一时极易出错,整体效率也远低于Pandas内置的日期处理方法。

  2. 折线图参数传递逻辑错误
    调用sns.lineplot时,y=df['Class'].mean()传递的是整个Class列的全局均值(单一数值),而x=Extract_year(df)传递的是所有年份的列表。这就导致每个年份对应的y值都是同一个全局均值,最终只会画出一条水平直线,完全无法体现各年份的趋势差异。

正确的解决思路

1. 规范提取年份

使用Pandas的DatetimeIndex处理日期是更可靠的方案,它能自动识别标准日期格式,高效提取年份并新增为DataFrame的列:

df['year'] = pd.DatetimeIndex(df['Date']).year

2. 正确调用Seaborn绘制趋势图

当指定data=df,并传入x="year"和y="Class"时,Seaborn会自动按year分组,计算每组Class列的均值,最终绘制出各年份均值的趋势折线,完全符合预期需求:

sns.lineplot(y="Class", x="year", data=df)
plt.xlabel("Year",fontsize=20)
plt.ylabel("Success Rate",fontsize=20)
plt.show()

内容的提问来源于stack exchange,提问作者CartmanBrah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:05:28