一、 AKShare 简介
定位:AKShare 是一个开源的 Python 库,专注于提供股票、基金、期货、期权、外汇等金融数据接口。
akshare官网:https://akshare.akfamily.xyz/index.html
特点:数据源丰富、接口简洁、支持主流数据格式(如 Pandas DataFrame)。
适用场景:量化交易、数据分析、学术研究等。
二、安装与配置
安装 AKShare
pip install akshare --upgrade
依赖库安装
AKShare 依赖 pandas, requests 等库,若未自动安装,可手动安装。
三、A股-个股信息查询
1、东财(东方财富网)
接口:stock_individual_info_em
目标:单次返回指定 symbol 的个股信息
输入参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol="603777"; 股票代码 |
timeout | float | timeout=None; 默认不设置超时参数 |
接口示例:
import akshare as ak
stock_individual_info_em_df = ak.stock_individual_info_em(symbol="000001")
print(stock_individual_info_em_df)
输出示例:
item value 0 股票代码 000001 1 股票简称 平安银行 2 总股本 19405918198.0 3 流通股 19405571850.0 4 总市值 221033408275.220001 5 流通市值 221029463371.5 6 行业 银行 7 上市时间 19910403
输出字段说明:
名称 | 类型 | 描述 |
---|---|---|
item | object | - |
value | object | - |
字段 | 类型 | 说明 |
---|---|---|
总股本 | float | 即公司已发行的全部股份数量(单位:股) |
流通股 | float | 指的是可以在公开市场交易的股份(单位:股) |
总市值 | float | 总股本乘以当前股价(单位:元) |
流通市值 | float | 流通股数乘以股价(单位:元) |
行业 | str | 所属证监会行业分类 |
上市时间 | int | 上市日期(YYYYMMDD格式) |
2、雪球
接口:stock_individual_basic_info_xq
目标:单次返回指定 symbol 的个股信息
输入参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol="SH601127"; 股票代码 |
token | str | token=None; |
timeout | float | timeout=None; 默认不设置超时参数 |
接口示例:
import akshare as ak
stock_individual_basic_info_xq_df = ak.stock_individual_basic_info_xq(symbol="SH601127")
print(stock_individual_basic_info_xq_df)
输出及字段说明:
名称 | 类型 | 描述 |
---|---|---|
item | object | - |
value | float64 | - |
( 太长了,为了方便看,还是放一起吧。)
字段名称 (item) | 说明 | 数据示例(value) | 注意事项 |
---|---|---|---|
org_id | 公司唯一标识符(雪球内部编码) | T000071215 | 用于雪球系统内部数据关联,非公开标准编码 |
org_name_cn | 公司中文全称 | 赛力斯集团股份有限公司 | 与工商注册名称一致 |
org_short_name_cn | 公司中文简称 | 赛力斯 | 日常交易中显示的股票简称 |
org_name_en | 公司英文全称 | Seres Group Co.,Ltd. | 可能为空(如未披露英文名称) |
org_short_name_en | 公司英文简称 | SERES | 常见于国际化业务的公司 |
main_operation_business | 主营业务描述 | 新能源汽车及核心三电(电池、电驱、电控)的研发、制造、销售 | 关键字段,反映公司核心竞争力和收入来源 |
operating_scope | 工商注册的经营范围 | 制造、销售:汽车零部件、机动车辆零部件... | 包含详细法律表述,可能含冗余信息 |
district_encode | 注册地区编码(行政区划代码) | 500106 | 对应国家统计局编码(如500106=重庆市沙坪坝区) |
org_cn_introduction | 公司中文简介 | 赛力斯始创于1986年,是... | 包含公司历史、战略定位等宣传性内容 |
legal_representative | 法人代表姓名 | 张正萍 | 需注意变更(如公司控制权变动) |
general_manager | 总经理姓名 | 张正萍 | 可能与法人代表为同一人 |
secretary | 董事会秘书姓名 | 申薇 | 信息披露直接责任人 |
established_date | 公司成立日期(13位时间戳格式:表示自1970年1月1日00:00:00 UTC以来的总毫秒数) | 1178812800000 | 需转换为日期(示例对应2007-05-12) |
reg_asset | 注册资本(单位:元) | 1509782193.0 | 反映公司法定资本规模 |
staff_num | 员工总数 | 16102 | 需结合行业特性分析(如制造业人数通常较多) |
telephone | 公司联系电话 | 86-23-65179666 | 包含国际区号(86为中国) |
postcode | 公司注册地邮编 | 401335 | 可用于地理信息分析 |
fax | 公司传真号码 | 86-23-65179777 | 逐渐被电子化沟通方式取代 |
投资者关系邮箱 | 601127@seres.cn | 用于股东沟通和信息披露 | |
org_website | 公司官网网址 | www.seres.com.cn | 可爬取官网获取更多业务动态 |
reg_address_cn | 中文注册地址 | 重庆市沙坪坝区五云湖路7号 | 法律文件送达地址 |
reg_address_en | 英文注册地址 | None | 境外上市公司可能填写 |
office_address_cn | 中文办公地址 | 重庆市沙坪坝区五云湖路7号 | 可能与注册地址一致 |
office_address_en | 英文办公地址 | None | 适用于跨国企业 |
currency_encode | 货币编码 | 019001 | 对应标准编码(如019001=人民币) |
currency | 货币名称 | CNY | 财务报表记账货币 |
listed_date | 上市日期(时间戳格式) | 1465920000000 | 需转换(示例对应2016-06-15) |
provincial_name | 所属省份 | 重庆市 | 用于区域经济分析 |
actual_controller | 实际控制人(含持股比例) | 张兴海 (13.79%) | 可能通过多层股权结构控制,需注意最终受益人分析 |
classi_name | 企业性质分类 | 民营企业 | 其他可能值:国有企业、外资企业等 |
pre_name_cn | 曾用中文名称 | 重庆小康工业集团股份有限公司 | 反映公司历史重组/更名信息 |
chairman | 董事长姓名 | 张正萍 | 公司决策核心人物 |
executives_nums | 高管人数 | 20 | 包括董事会、监事会、高级管理人员 |
actual_issue_vol | 实际发行数量(股) | 142500000.0 | IPO或增发时的实际发行量 |
issue_price | 发行价格(元/股) | 5.81 | 重要历史数据,用于计算募资总额 |
actual_rc_net_amt | 实际募集资金净额(元) | 738451000.0 | 扣除发行费用后的净募集金额 |
pe_after_issuing | 发行后市盈率 | 18.19 | 反映IPO时的估值水平 |
online_success_rate_of_issue | 网上发行中签率 | 0.110176 | 中签率=发行量/申购量,越低说明申购越火爆 |
affiliate_industry | 所属行业分类(字典格式) | {'ind_code':'BK0025','ind_name':'汽车整车'} | 行业代码与名称对应,可用于行业对比分析 |
四、A股-行情报价
接口:stock_bid_ask_em
目标:单次返回指定股票的行情报价数据
输入参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol="000001"; 股票代码 |
接口示例:
import akshare as ak
stock_bid_ask_em_df = ak.stock_bid_ask_em(symbol="000001")
print(stock_bid_ask_em_df)
输出示例:
item value 0 sell_5 1.144000e+01 1 sell_5_vol 1.485200e+06 2 sell_4 1.143000e+01 3 sell_4_vol 1.769200e+06 4 sell_3 1.142000e+01 5 sell_3_vol 1.431100e+06 6 sell_2 1.141000e+01 7 sell_2_vol 1.586300e+06 8 sell_1 1.140000e+01 9 sell_1_vol 2.076800e+06 10 buy_1 1.139000e+01 11 buy_1_vol 6.200000e+03 12 buy_2 1.138000e+01 13 buy_2_vol 2.698500e+06 14 buy_3 1.137000e+01 15 buy_3_vol 2.013600e+06 16 buy_4 1.136000e+01 17 buy_4_vol 2.422500e+06 18 buy_5 1.135000e+01 19 buy_5_vol 4.041000e+06 20 最新 1.140000e+01 21 均价 1.138000e+01 22 涨幅 1.800000e-01 23 涨跌 2.000000e-02 24 总手 4.618690e+05 25 金额 5.256708e+08 26 换手 2.400000e-01 27 量比 5.800000e-01 28 最高 1.141000e+01 29 最低 1.135000e+01 30 今开 1.137000e+01 31 昨收 1.138000e+01 32 涨停 1.252000e+01 33 跌停 1.024000e+01 34 外盘 2.385060e+05 35 内盘 2.233630e+05
输出字段说明:
名称 | 类型 | 描述 |
---|---|---|
item | object | - |
value | float64 | - |
字段 | 说明 | 示例值(当前数据) |
---|---|---|
sell_n | 卖n价(第n档卖出报价) | (n=5)11.44元 |
sell_n_vol | 卖n挂单量(手) | (n=5)1,485,200手 |
buy_n | 买n价(第n档买入报价) | (n=1)11.39元 |
buy_n_vol | 买n挂单量(手) | (n=1)6,200手 |
字段 | 说明 | 公式/计算逻辑 |
---|---|---|
最新 | 当前成交价 | 最后一笔成交价格 |
均价 | 当日平均成交价 | 总成交金额 / 总成交量 |
涨幅 | 涨跌幅度(百分比) | (最新价 - 昨收价)/昨收价 × 100% |
涨跌 | 涨跌绝对值 | 最新价 - 昨收价 |
总手 | 累计成交量(手) | 1手=100股 |
金额 | 总成交金额(元) | ∑(每笔成交价 × 成交量) |
换手 | 换手率(百分比) | 总成交量 / 流通股数 × 100% |
量比 | 相对成交量强度 | 当前成交量 / 过去5日平均成交量 |
最高 | 当日最高价 | - |
最低 | 当日最低价 | - |
今开 | 当日开盘价 | - |
昨收 | 前日收盘价 | - |
涨停 | 涨停价 | 昨收价 × 1.1(主板) |
跌停 | 跌停价 | 昨收价 × 0.9(主板) |
外盘 | 主动买入量(手) | 买方主动以卖价成交的累计量 |
内盘 | 主动卖出量(手) | 卖方主动以买价成交的累计量 |
五、运用示例
import akshare as ak
import pandas as pd
def get_stock_report(symbol):
# 获取东方财富基础数据
em_info = ak.stock_individual_info_em(symbol=symbol)
# 生成雪球股票代码
if symbol.startswith("6"):
# 沪市A股(主板60开头,科创板688开头)
xq_symbol = f"SH{symbol}"
elif symbol.startswith("0") or symbol.startswith("3"):
# 深市A股(主板00开头,创业板30开头)
xq_symbol = f"SZ{symbol}"
elif symbol.startswith("4") or symbol.startswith("8"):
# 北交所股票(43/83/87开头,新三板代码)
xq_symbol = f"BJ{symbol}"
else:
raise ValueError(f"无法识别的股票代码格式: {symbol}")
xq_info = ak.stock_individual_basic_info_xq(symbol=xq_symbol)
# 获取实时行情
quote = ak.stock_bid_ask_em(symbol=symbol)
# 整合数据
report_df = pd.concat([
em_info.set_index('item')['value'],
xq_info.set_index('item')['value'],
quote.set_index('item')['value']
], axis=0)
return report_df.dropna()
# 使用示例
report = get_stock_report("300927")#A股
print(report[['总市值', 'staff_num', '最新', '换手']])
六、总结
1、接口概览
接口示例 | 数据源 | 输入参数 | 主要功能 |
---|---|---|---|
stock_individual_info_em | 东方财富 | symbol="603777"; 股票代码 timeout=None; 默认不设置超时参数 | 个股信息查询 |
stock_individual_basic_info_xq | 雪球 | symbol="SH601127"; 股票代码 token=None; timeout=None; 默认不设置超时参数 | 个股信息查询 |
stock_bid_ask_em | 东方财富 | symbol="603777"; 股票代码 | 行情报价 |
2、 注意事项
-
代码格式要求
-
东方财富接口使用纯数字代码(如
"000001"
) -
雪球接口需要带交易所前缀(如
"SH601127"
)
-
-
数据更新频率
-
财务数据(如市值)一般按日更新
-
行情数据(如买卖五档)为实时数据
-