Jupyter运行数据分析已定义df仍报NameError变量未定义问题求助
引发原因
- Jupyter Notebook 的单元格执行顺序和代码书写顺序无强制绑定,绝大多数情况是你未先运行定义
df的单元格,就直接执行了调用df.dropna()的代码。从报错的输入标识<ipython-input-3-b46efd5c722d>可以判断,调用df的单元格是你内核启动后第3个运行的单元格,如果定义df的单元格输入编号大于3,就可以确认是执行顺序错配导致的问题。 - Jupyter的变量作用域完全和内核生命周期绑定,如果定义
df后你重启过内核,所有之前的变量都会被清空,哪怕之前的单元格显示过运行成功的结果,df也会变成未定义状态。 - 小概率场景:定义
df的单元格运行时本身就有报错,比如未提前导入pandas/numpy、dowjones.csv文件路径错误导致pd.read_csv执行失败,df没有被成功创建,也会触发该报错。 - 还有一种可能是你在定义
df之后,中途运行过del df这类删除变量的代码,主动清除了df变量。
解决方法
- 首先确认你已经提前导入所有依赖库,把以下代码放在最开头的单元格,优先运行:
import pandas as pd import numpy as np import statsmodels.formula.api as smf
- 严格按代码书写顺序执行单元格:先运行定义
df的第一个单元格,确认df.head()正常输出无报错后,再运行后续调用df的第二个单元格。 - 如果之前重启过内核,直接点击Jupyter顶部菜单栏的「运行所有单元格(Run All)」,让所有代码按书写顺序完整执行一遍即可。
- 如果要避免后续再出现执行顺序混乱的问题,可以在需要依赖前置变量的单元格开头增加校验逻辑:
if 'df' not in dir(): raise Exception("请先运行定义df的前置单元格")
内容的提问来源于stack exchange,提问作者Sherlockwatson
相关产品推荐
相关产品推荐

