akshare股票数据学习(一)

一、 AKShare 简介

  • 定位:AKShare 是一个开源的 Python 库,专注于提供股票、基金、期货、期权、外汇等金融数据接口。

  • akshare官网:Welcome to AKShare's Online Documentation! — AKShare 1.16.61 文档

  • 特点:数据源丰富、接口简洁、支持主流数据格式(如 Pandas DataFrame)。

  • 适用场景:量化交易、数据分析、学术研究等。

二、安装与配置

安装 AKShare

pip install akshare --upgrade

依赖库安装

AKShare 依赖 pandasrequests 等库,若未自动安装,可手动安装。

三、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 的市场总貌数据-证券类别统计(当前交易日的数据需要交易所收盘后统计)

输入参数:

名称类型描述
datestrdate="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 的市场总貌数据-地区交易排序数据

输入参数:

名称类型描述
datestrdate="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 的统计资料-股票行业成交数据

输入参数:

名称类型描述
symbolstrsymbol="当月"; choice of {"当月", "当年"}
datestrdate="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(包含)之后的数据。

输入参数:

名称类型描述
datestrdate="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-
主板Afloat64-
主板Bfloat64-
科创板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、注意事项 

  1. 数据时效性

    • 实时数据需在交易所收盘后获取(如当日数据需等待统计完成)。

    • stock_sse_deal_daily 仅支持 2021年12月27日后的日期。

  2. 参数格式

    • 日期格式必须严格匹配:

      • 日级数据:"YYYYMMDD"(如 20250221

      • 月级数据:"YYYYMM"(如 202203)。

  3. 输出字段单位

    • 注意单位差异。

    • 百分比字段以小数形式显示(如 16.349% 显示为 16.349)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值