一、 AKShare 简介
-
定位:AKShare 是一个开源的 Python 库,专注于提供股票、基金、期货、期权、外汇等金融数据接口。
-
akshare官网:Welcome to AKShare's Online Documentation! — AKShare 1.16.61 文档
-
特点:数据源丰富、接口简洁、支持主流数据格式(如 Pandas DataFrame)。
-
适用场景:量化交易、数据分析、学术研究等。
二、安装与配置
安装 AKShare
pip install akshare --upgrade
依赖库安装
AKShare 依赖 pandas
, requests
等库,若未自动安装,可手动安装。
三、A股-股票数据市场总貌
今日学习A股-股票数据市场总貌:AKShare 股票数据 — AKShare 1.16.61 文档
1、上海证券交易所
接口:stock_sse_summary()
目标:单次返回最近交易日的股票数据总貌(当前交易日的数据需要交易所收盘后统计)。
输入参数:无需输入。
接口示例:
import akshare as ak
# 获取上交所每日概况数据
sse_summary = ak.stock_sse_summary()
print(sse_summary)
输出示例:
项目 股票 主板 科创板 0 流通股本 47362.98 45701.69 1661.29 1 总市值 529247.16 461022.79 68224.38 2 平均市盈率 14.34 13.28 43.39 3 上市公司 2282 1696 586 4 上市股票 2321 1735 586 5 流通市值 501746.94 448912.27 52834.66 6 报告时间 20250325 20250325 20250325 8 总股本 49381.44 47143.27 2238.17
输出字段说明:
名称 | 类型 |
---|---|
项目 | object |
股票 | object |
科创板 | object |
主板 | object |
p:不太了解科创板与主板,然后在网上找了个图。
项目 | 说明 |
---|---|
流通股本 | 当前市场上可自由交易的股票数量(单位:亿股)。 |
总市值 | 上市公司总股本 × 当前股价(单位:亿元)。 |
平均市盈率 | 总市值 ÷ 净利润(反映市场对公司的估值水平)。 |
上市公司 | 在该板块上市的公司总数(家)。 |
上市股票 | 上市的股票总数(含A股、B股、优先股等)。 |
流通市值 | 流通股本 × 当前股价(单位:亿元)。 |
总股本 | 公司已发行的全部股票数量(含限售股,单位:亿股)。 |
2、 深圳证券交易所
2.1 证券类别统计
接口: stock_szse_summary()
目标:单次返回指定 date 的市场总貌数据-证券类别统计(当前交易日的数据需要交易所收盘后统计)
输入参数:
名称 | 类型 | 描述 |
---|---|---|
date | str | date="20200619"; 当前交易日的数据需要交易所收盘后统计 |
接口示例:
import akshare as ak
stock_szse_summary_df = ak.stock_szse_summary(date="20250325")
print(stock_szse_summary_df)
输出示例:
证券类别 数量 成交金额 总市值 流通市值 0 股票 2899 7.423054e+11 3.466094e+13 2.947773e+13 1 主板A股 1485 3.948273e+11 2.133231e+13 1.928209e+13 2 主板B股 39 4.095880e+07 5.156409e+10 5.143089e+10 3 创业板A股 1375 3.474372e+11 1.327706e+13 1.014421e+13 4 基金 759 6.988440e+10 1.135153e+12 1.105820e+12 5 ETF 448 6.882649e+10 1.042062e+12 1.042062e+12 6 LOF 289 7.516009e+08 3.429957e+10 3.429957e+10 7 封闭式基金 1 1.243145e+06 1.680267e+09 1.680267e+09 8 基础设施基金 21 3.050584e+08 5.711153e+10 2.777805e+10 9 债券 15298 3.013875e+11 NaN NaN 10 债券现券 14641 4.627866e+10 8.544444e+13 2.879673e+12 11 债券回购 27 2.535600e+11 NaN NaN 12 ABS 630 1.548770e+09 4.351199e+11 4.351199e+11 13 期权 592 5.257660e+08 NaN NaN
输出字段说明:
名称 | 类型 | 描述 |
---|---|---|
证券类别 | object | - |
数量 | int64 | 注意单位: 只 |
成交金额 | float64 | 注意单位: 元 |
总市值 | float64 | - |
流通市值 | float64 | - |
证券类别 | 说明 |
---|---|
股票 | 包含所有A股(主板、创业板等)的汇总数据。 |
主板A股 | 上海/深圳主板上市的人民币普通股(面向境内投资者)。 |
主板B股 | 以美元(沪市)或港币(深市)交易的股票,面向境外投资者。 |
创业板A股 | 深圳创业板上市公司股票,定位为成长型创新企业。 |
基金 | 包含场内交易的所有基金产品(ETF、LOF等)。 |
ETF | 交易所交易基金,跟踪指数或资产组合。 |
LOF | 上市型开放式基金,可在交易所和场外申赎。 |
封闭式基金 | 基金份额固定,存续期内不可申购赎回。 |
基础设施基金 | 投资于基础设施项目的公募REITs(不动产投资信托基金)。 |
债券 | 场内交易的所有债券类别汇总(现券、回购、ABS等)。 |
债券现券 | 直接交易的债券(不含回购)。 |
债券回购 | 以债券为抵押的短期融资交易(如质押式回购)。 |
ABS | 资产支持证券(Asset-Backed Securities)。 |
期权 | 场内交易的股票或指数期权(衍生品)。 |
数量 | 上市公司数量,例:主板A股上市公司数量 |
2.2 地区交易排序
接口:stock_szse_area_summary
目标:单次返回指定 date 的市场总貌数据-地区交易排序数据
输入参数:
名称 | 类型 | 描述 |
---|---|---|
date | str | date="202203"; 年月 |
接口示例:
import akshare as ak
stock_szse_area_summary_df = ak.stock_szse_area_summary(date="202502")
print(stock_szse_area_summary_df)
输出示例:
序号 地区 总交易额 占市场 股票交易额 基金交易额 债券交易额 0 1 上海 8.705550e+12 16.099 5.525492e+12 6.459899e+11 2.534068e+12 1 2 深圳 6.737108e+12 12.458 4.435663e+12 4.514147e+11 1.850030e+12 2 3 浙江 4.951493e+12 9.156 4.112537e+12 1.511388e+11 6.878177e+11 3 4 北京 4.821783e+12 8.917 3.324484e+12 3.022807e+11 1.195018e+12 4 5 江苏 4.064272e+12 7.516 2.935962e+12 2.444186e+11 8.838912e+11 5 6 境外地区 2.164013e+12 4.002 2.144742e+12 1.927151e+10 0.000000e+00 6 7 广东 2.108859e+12 3.900 1.784651e+12 6.756662e+10 2.566416e+11 7 8 福建 2.106140e+12 3.895 1.516011e+12 8.694325e+10 5.031861e+11 8 9 广州 2.100100e+12 3.884 1.411336e+12 1.527892e+11 5.359747e+11 9 10 西藏 1.947719e+12 3.602 1.660716e+12 1.009596e+11 1.860431e+11 10 11 四川 1.767103e+12 3.268 1.349666e+12 5.617231e+10 3.612643e+11 11 12 湖北 1.581313e+12 2.924 1.084845e+12 4.635172e+10 4.501169e+11 12 13 山东 1.579490e+12 2.921 1.222253e+12 6.264690e+10 2.945894e+11 13 14 湖南 1.123438e+12 2.077 8.718440e+11 1.165786e+11 1.350149e+11 14 15 河南 8.795083e+11 1.626 7.223003e+11 2.458637e+10 1.326216e+11 15 16 江西 8.646282e+11 1.599 6.241084e+11 1.743504e+10 2.230847e+11 16 17 安徽 8.478590e+11 1.568 6.946397e+11 2.117054e+10 1.320488e+11 17 18 陕西 7.424512e+11 1.373 5.562897e+11 1.575464e+10 1.704069e+11 18 19 重庆 6.650989e+11 1.230 5.178340e+11 2.533346e+10 1.219315e+11 19 20 辽宁 6.506810e+11 1.203 5.164256e+11 1.756709e+10 1.166883e+11 20 21 河北 5.163202e+11 0.955 4.137602e+11 1.396717e+10 8.859281e+10 21 22 广西 4.431346e+11 0.819 3.259028e+11 1.061001e+10 1.066218e+11 22 23 山西 4.060970e+11 0.751 3.047903e+11 1.980266e+10 8.150406e+10 23 24 天津 3.916210e+11 0.724 3.023102e+11 1.499440e+10 7.431639e+10 24 25 黑龙江 2.958860e+11 0.547 2.336478e+11 1.035929e+10 5.187884e+10 25 26 吉林 2.789587e+11 0.516 1.916494e+11 1.049077e+10 7.681852e+10 26 27 贵州 2.727909e+11 0.504 1.492068e+11 1.164391e+10 1.119402e+11 27 28 云南 2.525119e+11 0.467 2.139688e+11 4.663529e+09 3.387951e+10 28 29 新疆 1.909437e+11 0.353 1.637895e+11 3.376295e+09 2.377790e+10 29 30 海南 1.628419e+11 0.301 1.400915e+11 4.868256e+09 1.788213e+10 30 31 甘肃 1.611008e+11 0.298 1.399655e+11 4.625294e+09 1.651000e+10 31 32 内蒙古 1.566178e+11 0.290 1.239134e+11 3.462498e+09 2.924184e+10 32 33 宁夏 9.940685e+10 0.184 8.633739e+10 3.528293e+09 9.541167e+09 33 34 青海 3.968739e+10 0.073 3.120010e+10 1.165394e+09 7.321893e+09
输出字段说明:
名称 | 类型 | 描述 |
---|---|---|
序号 | int64 | - |
地区 | object | - |
总交易额 | float64 | 注意单位: 元 |
占市场 | float64 | 注意单位: % |
股票交易额 | float64 | 注意单位: 元 |
基金交易额 | float64 | 注意单位: 元 |
债券交易额 | float64 | 注意单位: 元 |
2.3 股票行业成交
接口:stock_szse_sector_summary
目标:单次返回指定 symbol 和 date 的统计资料-股票行业成交数据
输入参数:
名称 | 类型 | 描述 |
---|---|---|
symbol | str | symbol="当月"; choice of {"当月", "当年"} |
date | str | date="202501"; 年月 |
接口示例:
import akshare as ak
stock_szse_sector_summary_df = ak.stock_szse_sector_summary(symbol="当年", date="202501")
print(stock_szse_sector_summary_df)
输出示例:
项目名称 项目名称-英文 交易天数 成交金额-人民币元 成交金额-占总计 \ 0 合计 Total 18 12797346256776 100.00 1 农林牧渔 Agriculture 18 81959102700 0.64 2 采矿业 Mining 18 92263889071 0.72 3 制造业 Manufacturing 18 8629767870655 67.43 4 水电煤气 Utilities 18 92119234528 0.72 5 建筑业 Construction 18 79341083157 0.62 6 批发零售 Wholesale & Retail 18 446585758971 3.49 7 运输仓储 Transportation 18 101119645056 0.79 8 住宿餐饮 Hotels & Catering 18 12977773203 0.10 9 信息技术 IT 18 1778343828765 13.90 10 金融业 Finance 18 556014586952 4.34 11 房地产 Real Estate 18 130027421601 1.02 12 商务服务 Business Support 18 403570860326 3.15 13 科研服务 Research & Development 18 110626856303 0.86 14 公共环保 Environmental Protection 18 82012479434 0.64 15 居民服务 Resident Services 18 1380962740 0.01 16 教育 Education 18 32550128302 0.25 17 卫生 Public Health 18 42095615991 0.33 18 文化传播 Media 18 107581655354 0.84 19 综合 Conglomerates 18 17007503667 0.13 成交股数-股数 成交股数-占总计 成交笔数-笔 成交笔数-占总计 0 1102116260223 100.00 1072706301 100.00 1 9399492707 0.85 7661044 0.71 2 9878192740 0.90 9355248 0.87 3 658476162920 59.75 715973899 66.74 4 16229887048 1.47 12802444 1.19 5 15274277217 1.39 10222345 0.95 6 52130678407 4.73 40706994 3.79 7 10863950008 0.99 11426446 1.07 8 2114778738 0.19 1728478 0.16 9 129291809569 11.73 137478307 12.82 10 41461501835 3.76 31633210 2.95 11 31788728507 2.88 13878880 1.29 12 71465288349 6.48 38310245 3.57 13 6923026099 0.63 10972681 1.02 14 17729676291 1.61 10919804 1.02 15 148411858 0.01 217920 0.02 16 7073096176 0.64 3040949 0.28 17 5628801958 0.51 4706600 0.44 18 14651178792 1.33 10017645 0.93 19 1587321004 0.14 1653162 0.15
输出字段说明:
名称 | 类型 | 描述 |
---|---|---|
项目名称 | object | - |
项目名称-英文 | object | - |
交易天数 | int64 | - |
成交金额-人民币元 | int64 | |
成交金额-占总计 | float64 | 注意单位: % |
成交股数-股数 | int64 | - |
成交股数-占总计 | float64 | 注意单位: % |
成交笔数-笔 | int64 | - |
成交笔数-占总计 | float64 | 注意单位: % |
3、上海证券交易所-每日概况
接口:stock_sse_deal_daily
目标:单次返回指定日期的每日概况数据, 当前交易日数据需要在收盘后获取; 注意仅支持获取在 20211227(包含)之后的数据。
输入参数:
名称 | 类型 | 描述 |
---|---|---|
date | str | date="20250221"; 当前交易日的数据需要交易所收盘后统计; 注意仅支持获取在 20211227(包含)之后的数据 |
接口示例:
import akshare as ak
stock_sse_deal_daily_df = ak.stock_sse_deal_daily(date="20250325")
print(stock_sse_deal_daily_df)
输出示例:
单日情况 股票 主板A 主板B 科创板 股票回购 0 挂牌数 2321.0000 1692.0000 43.0000 586.0000 0.00 1 市价总值 529247.1600 460028.1300 994.6600 68224.3800 0.00 2 流通市值 501746.9400 448176.3900 735.8900 52834.6600 0.00 3 成交金额 5168.8100 4300.2500 2.2800 866.2700 0.38 4 成交量 456.6500 432.4200 0.5400 23.6900 0.24 5 平均市盈率 14.3400 13.3000 7.5400 43.3900 NaN 6 换手率 0.9766 0.9348 0.2294 1.2697 0.00 7 流通换手率 1.0302 0.9595 0.3100 1.6396 0.00
输出字段说明:
名称 | 类型 | 描述 |
---|---|---|
单日情况 | object | 包含了网页所有字段 |
股票 | float64 | - |
主板A | float64 | - |
主板B | float64 | - |
科创板 | float64 | - |
股票回购 | float64 | - |
单日情况 | 说明 |
---|---|
挂牌数 | 各板块上市公司的数量(单位:家)。 |
市价总值 | 所有上市公司总股本 × 当前股价(单位:亿元)。 |
流通市值 | 可自由交易的股票市值(单位:亿元)。 |
成交金额 | 当日该板块股票成交总额(单位:亿元)。 |
成交量 | 当日该板块股票成交总股数(单位:亿股)。 |
平均市盈率 | 总市值 ÷ 净利润(反映板块整体估值水平)。 |
换手率 | 成交量 ÷ 总股本(反映整体筹码交换频率,单位:%),也称‘周转率’。 |
流通换手率 | 成交量 ÷ 流通股本(更精准反映实际可交易部分的活跃度,单位:%)。 |
四、运用示例
1、绘制上交所行业成交占比
import matplotlib.pyplot as plt
import akshare as ak
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 获取数据(注意调整日期参数)
szse_industry = ak.stock_szse_sector_summary(symbol="当年", date="202301")[1:]# 日期改为有效年份
# 提取饼图数据
industry_names = szse_industry['项目名称']
trade_amount = szse_industry['成交金额-人民币元']
# 绘制饼图
plt.figure(figsize=(10, 8))
plt.pie(trade_amount,
labels=industry_names,
autopct='%1.1f%%',
startangle=90)
plt.title('深交所行业成交金额占比(2023年)')
plt.axis('equal') # 保持圆形
plt.legend(industry_names, loc='best', bbox_to_anchor=(1, 0.5))
plt.show()
2、绘制地区总交易额前10渐变柱状图
import matplotlib.pyplot as plt
import akshare as ak
import numpy as np
# 获取并处理数据
szse_area = ak.stock_szse_area_summary(date="202306").head(10)
# 创建可视化图表
plt.figure(figsize=(15, 8))
ax = szse_area.head(10).plot.bar(
x="地区",
y="总交易额",
color=plt.cm.Blues_r(np.linspace(0.2, 1, 10)), # 直接生成颜色数组
edgecolor='black',
linewidth=0.8,
alpha=0.95,
grid=True
)
# 设置图表标题和坐标轴
plt.title("深圳证券交易所地区交易额分布 Top10 (2023年二季度)",
fontsize=16, fontweight='bold', pad=20)
plt.xlabel("地区", fontsize=12, labelpad=12)
plt.ylabel("交易金额(亿元)", fontsize=12, labelpad=12)
# 格式化y轴刻度
ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: f'{x/1e8:.0f}'))
# 添加自定义数据标签
for i, v in enumerate(szse_area.head(10)["总交易额"]):
ax.text(i, v * 0.92, f'{v/1e8:.2f}亿', # 显示两位小数
ha='center', va='top',
color='white',
fontweight='semibold',
fontsize=10)
# 优化视觉元素
ax.grid(True, linestyle=':', alpha=0.6, color='gray')
ax.spines[['top', 'right']].set_visible(False)
ax.tick_params(axis='both', which='major', labelsize=10.5)
plt.xticks(rotation=48, ha='right', fontsize=11)
norm = plt.Normalize(szse_area.head(10)["总交易额"].min(), szse_area.head(10)["总交易额"].max())
sm = plt.cm.ScalarMappable(norm=norm, cmap='Blues_r')
sm.set_array([])
plt.colorbar(sm, label='交易额等级',
orientation='vertical',
shrink=0.8,
aspect=20)
plt.tight_layout()
plt.show()
五、总结
1、接口概览
交易所 | 功能描述 | 输入参数 | 示例调用 |
---|---|---|---|
上海证券交易所 | 股票数据总貌(最近交易日) | 无 | ak.stock_sse_summary() |
每日成交概况 | date (格式:"YYYYMMDD" ) | ak.stock_sse_deal_daily(date="20250221") | |
深圳证券交易所 | 证券类别统计(数量、市值等) | date (格式:"YYYYMMDD" ) | ak.stock_szse_summary(date="20200619") |
地区交易排序(按总交易额) | date (格式:"YYYYMM" ) | ak.stock_szse_area_summary(date="202412") | |
股票行业成交数据(分当月/当年) | symbol ("当月"或"当年")date (格式:"YYYYMM" ) | ak.stock_szse_sector_summary(symbol="当年", date="202501") |
2、注意事项
-
数据时效性
-
实时数据需在交易所收盘后获取(如当日数据需等待统计完成)。
-
stock_sse_deal_daily
仅支持 2021年12月27日后的日期。
-
-
参数格式
-
日期格式必须严格匹配:
-
日级数据:
"YYYYMMDD"
(如20250221
) -
月级数据:
"YYYYMM"
(如202203
)。
-
-
-
输出字段单位
-
注意单位差异。
-
百分比字段以小数形式显示(如
16.349%
显示为16.349
)。
-