【问题标题】:Constant Name Errors in IPythonIPython 中的常量名称错误
【发布时间】:2019-08-01 05:01:34
【问题描述】:

我对 Python 很陌生,正在努力学习。似乎我复制的这段代码的几乎每个单元格都有一个错误(用于使用卡尔曼滤波器进行交易)。有人可以校对吗? 来源: https://www.marketcalls.in/python/implementation-kalman-filter-estimation-mean-python-using-pykalman-bokeh-nsepy.html

我尝试根据源代码复制和运行代码,但即使逐个单元格地运行,也会出现一个又一个错误。我尝试根据 Nsepy 的文档更新一些代码(get_price_history 变为 get_history,stock 变为 symbol),但我并没有走得太远。

df["date"] = pd.to_datetime(df.index)

mids = (df.Open + df.Close)/2
spans = abs(df.Close-df.Open)

inc = df.Close > df.Open
dec = df.Open > df.Close
w = 12*60*60*1000 # half day in ms

output_notebook()

TOOLS = "pan,wheel_zoom,box_zoom,reset,save"

p = figure(x_axis_type="datetime", tools=TOOLS, plot_width=1000,      toolbar_location="left",y_axis_label = "Price",
      x_axis_label = "Date")

p.segment(df.date, df.High, df.date, df.Low, color="black")
p.rect(df.date[inc], mids[inc], w, spans[inc], fill_color='green', line_color="green")
p.rect(df.date[dec], mids[dec], w, spans[dec], fill_color='red', line_color="red")
p.line(df.date,state_means,line_width=1,line_color = 'blue',legend="Kalman filter")

p.title = "Implementation of Kalman Filter Estimation - TCS EOD chart"
p.xaxis.major_label_orientation = pi/4
p.grid.grid_line_alpha=0.3

根据来源,我希望在上面的代码之后运行 show(p),但得到名称错误“show' is not defined。如果我在没有 show(p) 的情况下运行上面的代码,我会得到名称错误“pd 未定义”。常量名称错误。

【问题讨论】:

  • 请用通用 [python] 标签标记 所有 python 相关问题
  • 在第一个单元格中运行 import pandas as pd
  • 您是否导入了链接中给出的所有库和模块?更重要的是,您的系统中是否正确设置了所有库?
  • @krishna 我按照建议做了,在运行第一个单元格代码后运行了整个代码,现在它返回 NameError: name 'df' is not defined。
  • @Sayandip Dutta 我正在将 IPython 与 Jupyter Notebook 一起使用,并已在终端中导入并检查了 PyKalman、Bokeh、NSEPy 和 pandas 的安装。就设置正确而言 - 如何检查?

标签: python python-3.x jupyter-notebook ipython


【解决方案1】:

@Dawson,欢迎来到 SO。从某个地方复制一段代码时,请确保您完全了解代码需要运行什么,如果您是一门语言的新手,请确保在运行之前知道代码的作用。现在解决您的问题: 首先:您应该安装所有需要的库,例如熊猫。这是通过在命令行中运行以下命令来完成的:

pip install pandas 

附带说明,如果它们已安装并且您想升级它们,您可以使用

pip install pandas --upgrade

您可能需要对 ipython 笔记本第一个单元格中的所有库执行此操作。

然后你应该将这些库导入你的笔记本:

import pandas as pd # imports the library to your code under the name pd, from now on whenever you use pd.xxx the xxx function from the pandas library is called/executed.

这些应该可以解决问题。

【讨论】:

  • 是的,如上所述,我添加了原作者所述的所有模块并验证了它们的安装。错误没有改变。
  • 它适用于我,您提到的更改。你用的是一个笔记本吗?每个单元格收到的错误消息是什么?
  • 非常感谢您抽出时间自己运行代码。是的,单笔记本。当我下班回来时,我会更新错误消息。我在想我一定有一个 python2/python 3 pip/pip3 配置错误。
  • 所以我解决了错误,但没有绘图输出。在运行“Show(p)”之前,我已经成功加载了“BokehJS 1.3.1”,然后在左侧有一个带有图例的空白框。
  • 你可以试试这个吗? from bokeh.plotting import * output_notebook() p = figure() p.line([1,2,3], [2,1,3]) show(p)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 2016-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
相关资源
最近更新 更多