🚀 AI 一键生成 joinquant 策略代码

JoinQuant 的 get_industry 函数返回的字典结构是怎样的?

joinquant | 发布时间: 2025/12/24
以下内容由 EasyQuant 生成。

问题描述

调用 get_industry 后返回的字典太复杂,怎么提取出申万一级行业名称?

解决方案

get_industry 函数返回的是一个多层嵌套的字典。要提取申万一级行业名称,你需要按照 股票代码 -> 行业标准('sw_l1') -> 字段名('industry_name') 的层级进行访问。

以下是具体的提取方法和代码示例:

1. 数据结构分析

假设你查询的是 '000001.XSHE',返回的字典结构如下:

{
    '000001.XSHE': {  # 第一层:Key是股票代码
        'sw_l1': {    # 第二层:Key是行业分类标准(sw_l1代表申万一级)
            'industry_code': '801780', 
            'industry_name': '银行I'  # <--- 这是你要的目标
        },
        'jq_l1': { ... },
        ...
    }
}

2. 代码示例

场景一:查询单只股票

# 获取数据
stock_code = '000001.XSHE'
industry_data = get_industry(stock_code)

# 提取申万一级行业名称
# 注意:即使只查询一只股票,返回的也是以股票代码为Key的字典
try:
    sw1_name = industry_data[stock_code]['sw_l1']['industry_name']
    print(f"股票 {stock_code} 的申万一级行业是: {sw1_name}")
except KeyError:
    print(f"未找到股票 {stock_code} 的申万一级行业数据")

场景二:查询多只股票(批量提取)

如果你传入的是一个股票列表,建议使用循环来提取:

stock_list = ['000001.XSHE', '000002.XSHE', '600519.XSHG']
industry_data = get_industry(stock_list)

for code in stock_list:
    # 使用 .get() 方法可以防止某些股票没有行业数据导致报错
    stock_info = industry_data.get(code, {})
    sw1_info = stock_info.get('sw_l1', {})
    industry_name = sw1_info.get('industry_name', '未知行业')
    
    print(f"{code}: {industry_name}")

3. 封装成便捷函数

为了方便在策略中反复调用,你可以定义一个简单的辅助函数:

def get_sw1_name(security):
    """
    获取单只股票的申万一级行业名称
    """
    res = get_industry(security)
    if security in res and 'sw_l1' in res[security]:
        return res[security]['sw_l1']['industry_name']
    return 'Unknown'

# 使用示例
name = get_sw1_name('000001.XSHE')
print(name)

Q&A

Q: 为什么有时候 get_industry 返回的数据里没有 'sw_l1'
A: 这种情况通常发生在以下几种场景:

  1. 新股:刚上市的股票可能尚未被归类。
  2. 基金或指数:你传入的代码是ETF或指数代码,而非个股。
  3. 退市股票:某些很久以前退市的股票可能缺失历史行业数据。
  4. 数据缺失:极少数情况下数据源暂时缺失。
    因此,在代码中使用 .get() 方法或 try-except 块进行容错处理是一个好习惯。

Q: 如何获取申万二级或三级行业?
A: 只需将代码中的 'sw_l1' 替换为 'sw_l2' (二级) 或 'sw_l3' (三级) 即可。

Q: get_industry 函数的 date 参数有什么用?
A: 行业分类是会随时间调整的(例如申万行业标准在2014年和2021年都有过调整)。如果不填 date,默认返回当前日期的分类;如果填了历史日期,则返回该股票在当时所属的行业分类。