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

Python处理Spotify数据集报错NameError:'years'未定义求解

解决方案:处理NameError及实现你的需求

1. 解决NameError: 'years' is not defined

这个错误的核心原因是你调用sns.displot时用到的years变量未被创建,按以下步骤修复:

  • 先确保用pandas加载Spotify数据集:
    import pandas as pd
    # 替换为你的数据集路径,支持csv、excel等格式
    df = pd.read_csv("your_spotify_dataset.csv")
    
  • 确认数据集中年份对应的列名:
    打印所有列名找到年份列(常见命名如year、release_year):
    print(df.columns)
    
  • 创建years变量:
    将对应列的数据赋值给years:
    # 把"year"替换成你数据里实际的年份列名
    years = df["year"]
    
  • 修正绘图代码(注意原代码中heights参数名错误,应为height):
    import seaborn as sns
    sns.displot(years, discrete=True, aspect=2, height=5, kind="hist").set(title="Number of songs per year")
    

2. 实现你原本的需求:绘制折线图展示每年歌曲时长

你提到计划画折线图展示每年歌曲时长,但原代码用的是直方图(展示每年歌曲数量),以下是对应折线图的实现:

  • 先按年份分组计算平均时长(或总时长,按需调整):
    # 假设歌曲时长列名为"duration_ms",替换为实际列名
    yearly_avg_duration = df.groupby("year")["duration_ms"].mean().reset_index()
    
  • 用seaborn绘制折线图:
    sns.relplot(data=yearly_avg_duration, x="year", y="duration_ms", kind="line", aspect=2, height=5).set(title="Average song duration per year")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:51:55