问题描述
解决方案
在 JoinQuant 聚宽平台中,获取行业分类代码主要使用 get_industries 函数。该函数可以获取申万行业(一级、二级、三级)、聚宽行业(一级、二级)以及证监会行业的代码列表。
以下是详细的获取方法和代码示例。
核心函数说明
get_industries(name, date=None)
- name: 行业代码标准,可选值如下:
'sw_l1': 申万一级行业'sw_l2': 申万二级行业'sw_l3': 申万三级行业'jq_l1': 聚宽一级行业'jq_l2': 聚宽二级行业'zjw': 证监会行业
- date: 查询日期。默认为
None,返回历史上所有存在过的行业代码;如果指定日期,则返回该日期当天存在的行业。
返回值: 返回一个 pandas.DataFrame,索引(index)为行业代码,包含 name(行业名称)和 start_date(开始日期)列。
代码示例
你可以在聚宽的研究环境或策略代码中运行以下代码来查看各类行业代码:
# -*- coding: utf-8 -*-
from jqdata import *
import pandas as pd
# 设置显示选项,防止打印时显示不全
pd.set_option('display.max_rows', 20)
def get_all_industry_codes():
"""
获取并打印各类行业分类代码示例
"""
print("="*30)
print("1. 申万一级行业 (sw_l1)")
sw_l1 = get_industries(name='sw_l1')
print(sw_l1)
print("\n" + "="*30)
print("2. 聚宽一级行业 (jq_l1)")
jq_l1 = get_industries(name='jq_l1')
print(jq_l1)
print("\n" + "="*30)
print("3. 证监会行业 (zjw)")
zjw = get_industries(name='zjw')
print(zjw)
# 执行函数
get_all_industry_codes()
结果说明
运行上述代码后,你将得到类似如下结构的 DataFrame(以聚宽一级行业为例):
| index (行业代码) | name (行业名称) | start_date |
|---|---|---|
| HY001 | 能源 | 2005-01-01 |
| HY002 | 材料 | 2005-01-01 |
| HY003 | 工业 | 2005-01-01 |
| ... | ... | ... |
获取到行业代码(如 'HY001')后,你可以进一步使用 get_industry_stocks('HY001') 来获取该行业下的所有成分股代码。
Q&A
Q: 如何获取某个行业代码下的所有股票?
A: 使用 get_industry_stocks(industry_code, date=None) 函数。例如,获取聚宽一级行业“能源”板块的股票:stocks = get_industry_stocks('HY001')。
Q: sw_l1 和 jq_l1 有什么区别?
A: sw_l1 是申银万国证券发布的行业分类标准,是市场最常用的分类之一;jq_l1 是聚宽平台参考国际标准(如GICS)并结合A股特点制定的行业分类。两者在分类逻辑和颗粒度上略有不同。
Q: 为什么获取到的行业列表中有些行业的 start_date 很早?
A: get_industries 默认返回历史上所有存在过的行业。如果某个行业分类标准进行了调整(例如申万行业在2014年和2021年进行过调整),旧的行业代码依然会被保留在列表中,但可能已经不再包含最新的股票数据。建议在获取成分股时指定 date 参数以获取当时有效的成分股。