Jupyter环境已定义data仍报NameError: name 'data' is not defined求助
Jupyter已定义data变量但后续调用提示NameError的问题排查及解决
问题产生原因
- 内核重启后未重新执行变量定义代码:Jupyter内核重启(包含手动重启、页面关闭重连、内核崩溃自动重启)后,内存中所有已定义的变量都会被清空。报错信息中的
<ipython-input-1-19640b13f9cb>说明运行data['title']的单元格是本次内核启动后第1个执行的单元格,你并未先运行定义data的代码块。 - 定义
data的代码块执行失败:你提供的代码中存在无注释标识的Importing Pandas行,该行不属于合法Python语法,若未加#改为注释,运行该代码块会直接抛出语法错误,data变量不会完成定义。 - 单元格执行顺序混乱:Jupyter不强制单元格按从上到下的顺序执行,如果你先跑了后续取数的单元格,再跑定义
data的单元格,也会出现先执行的逻辑报错变量未定义的问题。 - 变量被手动删除:如果中间运行过
del data这类删除变量的指令,后续调用也会触发该报错。
解决方法
- 按顺序重新执行前置代码:内核重启后,先运行导入依赖、定义变量、读取文件的所有前置代码块,确认代码块无报错后,再运行
data['title']逻辑。 - 修正代码语法错误:将无注释标识的
Importing Pandas改为注释,避免语法错误中断执行,修正后的代码如下:
import pandas as pd # Importing Pandas names = ('ids','title','year','rating','votes','length','genre') data = pd.read_csv('imdb_top_10000.txt', sep="\t", names=names , index_col = 1)
- 校验变量状态:运行
data['title']前可单独执行data或print('data' in dir())确认变量是否存在且正常赋值。 - 核对执行顺序:通过单元格左侧的
In [x]编号确认执行顺序,定义data的单元格编号必须小于运行data['title']的单元格编号,否则重新按顺序执行即可。
内容的提问来源于stack exchange,提问作者amzPakistani
相关产品推荐
相关产品推荐

