问题描述
技术问题需要请教各位大佬!
为什么我使用官方API文档中查阅一些数据时,报name 'finance' is not defined,我是复制官方例子在研究环境中使用的。难道finance这个库改名字了吗?
情况如下:
指定查询对象为万科(000002.XSHE)的股东户数情况,返回条数为10条
q=query(finance.STK_HOLDER_NUM).filter(finance.STK_HOLDER_NUM.code=='000002.XSHE',finance.STK_HOLDER_NUM.pub_date>'2015-01-01').limit(10)
df=finance.run_query(q)
print(df)
NameError Traceback (most recent call last)
< ipython-input-7-538bef43be14> in < module>
1 #指定查询对象为万科(000002.XSHE)的股东户数情况,返回条数为10条
----> 2 q=query(finance.STK_HOLDER_NUM).filter(finance.STK_HOLDER_NUM.code=='000002.XSHE',finance.STK_HOLDER_NUM.pub_date>'2015-01-01').limit(10)
3 df=finance.run_query(q)
4 print(df)
NameError: name 'finance' is not defined
解决方案
你好!出现 NameError: name 'finance' is not defined 这个报错,并不是因为 finance 库改名字了,而是因为在研究环境(Jupyter Notebook)中,你需要显式地导入聚宽的数据包才能使用相关的模块。
在官方文档的示例中,通常会默认你已经导入了基础库。要解决这个问题,你只需要在代码的最上方加上一行导入语句:
from jqdata import *
正确的完整代码如下:
# 1. 必须先导入 jqdata 库
from jqdata import *
# 2. 指定查询对象为万科(000002.XSHE)的股东户数情况,返回条数为10条
q = query(finance.STK_HOLDER_NUM).filter(
finance.STK_HOLDER_NUM.code=='000002.XSHE',
finance.STK_HOLDER_NUM.pub_date>'2015-01-01'
).limit(10)
# 3. 运行查询
df = finance.run_query(q)
# 4. 打印结果
print(df)
💡 扩展提示:
不仅是 finance 模块,如果你在研究环境中需要使用 macro(宏观经济数据)、opt(期权数据)或者 get_price、get_fundamentals 等聚宽特有的 API,都需要确保在当前 Notebook 的第一个运行单元格中执行了 from jqdata import *。回测环境中系统通常会在底层自动加载部分环境,但在研究环境中必须手动导入。