如何用AKShare获取金融数据(附程序代码)
01
AKShare简介
- 什么是AKShare?
AKShare(官网:akshare.xyz)是一个基于Python的开源金融数据接口库,旨在使个人投资者和研究人员能够方便地获取广泛的金融数据。
AKShare提供的数据类型包括股票、期货、期权、基金、债券、指数、数字货币、外汇、宏观、衍生品、等各种金融数据。AKShare 开源财经数据接口库所采集的数据皆来自公开的数据源。
AKShare有以下特点:
广泛的数据覆盖:AKShare提供了A股、港股、美股、期货、期权、外汇、基金、债券、数字货币等多种数据的获取方式。
易于使用:AKShare的接口设计简洁明了,用户只需要简单的函数调用就可以获取所需的数据。 - 如何安装AKShare?
AKShare可以通过pip进行安装,安装命令如下:
pip install akshare –upgrade
如果遇到安装网络超时可改用国内pip源安装:
pip install akshare -i http://mirrors.aliyun.com/pypi/simple/ –trusted-host=mirrors.aliyun.com –user –upgrade
由于目前版本更新迭代频繁, 请在使用 AKShare 前先升级, 命令如下所示:
pip install akshare –upgrade -i https://pypi.org/simple
安装提示:
目前 AKShare 仅支持 64 位版本的操作系统安装和使用;
目前 AKShare 仅支持 Python 3.8(64 位) 及以上版本;
AKShare 推荐安装最新版本的 Anaconda (64 位), 可以解决大部分环境配置问题。 - 使用AKShare
要使用AKShare,需要先导入库,如下所示:
import akshare as ak
AKShare提供的数据非常多,以下选取常用的一些数据进行说明,其他数据的获取方法大同小异。AKShare的官网(akshare.xyz)对数据接口有详细的说明,更多信息请参照官网。由于AKShare的版本更新迭代比较频繁,有些数据接口在版本更新后可能有变动,以下例子中如遇数据获取异常,请参看官网的相关数据接口调整。
02
从AKShare获取行情数据
- 股票历史行情数据
使用Akshare的stock_zh_a_hist接口可以从东方财富网站获取指定A股上市公司的历史行情数据。这些数据包括日频率、周频率、月频率的数据,以及不同复权方式的数据。
接口返回单次指定的沪深京 A 股上市公司、指定周期和指定日期间的历史行情日频率数据。历史数据按日频率更新。请注意,当日收盘价需要在收盘后获取。
使用示例:
(1)获取不复权的历史行情数据
stock_zh_a_hist_df = ak.stock_zh_a_hist(symbol=”000001″, period=”daily”, start_date=”20170301″, end_date=’20210907′, adjust=””)
(2)获取前复权的历史行情数据
stock_zh_a_hist_df = ak.stock_zh_a_hist(symbol=”000001″, period=”daily”, start_date=”20170301″, end_date=’20210907′, adjust=”qfq”)
(3)获取后复权的历史行情数据
stock_zh_a_hist_df = ak.stock_zh_a_hist(symbol=”000001″, period=”daily”, start_date=”20170301″, end_date=’20210907′, adjust=”hfq”)
数据示例:

stock_zh_a_hist接口的输入参数解释:
symbol (str): 股票代码,例如 ‘603777’。股票代码可以使用ak.stock_zh_a_spot_em()接口获取。
period (str): 时间周期,可选的值有{‘daily’, ‘weekly’, ‘monthly’}。
start_date (str): 查询开始日期,格式如 ‘20210301’。
end_date (str): 查询结束日期,格式如 ‘20210616’。
adjust (str): 数据复权方式。默认返回不复权的数据;设为’qfq’则返回前复权后的数据;设为’hfq’则返回后复权后的数据。
timeout (float): 请求超时时间,如果不设置则默认不设置超时参数。
stock_zh_a_hist接口的输出:
日期 (object): 交易日期。
开盘 (float64): 开盘价格。
收盘 (float64): 收盘价格。
最高 (float64): 当日最高价。
最低 (float64): 当日最低价。
成交量 (int64): 当日成交量,单位为手。
成交额 (float64): 当日成交金额,单位为元。
振幅 (float64): 当日振幅,单位为%。
涨跌幅 (float64): 当日涨跌幅,单位为%。
涨跌额 (float64): 当日涨跌额,单位为元。
换手率 (float64): 当日换手率,单位为%。
- 股票实时行情数据
使用akshare的以下两个接口可以从东方财富网站获取实时的五档买卖数据和行情数据:
(1)接口:stock_bid_ask_em
这个接口提供了股票的实时买卖报价信息。
输入参数:
symbol (str): 股票代码,例如 “000001”。
输出:
item (object): 报价项目,例如 “sell_5″,”sell_4″,”buy_3” 等。
value (float64): 报价值。
使用示例:
stock_bid_ask_em_df = ak.stock_bid_ask_em(symbol=”000001″)
数据示例:
(2)接口:stock_zh_a_spot_em
这个接口提供了所有A股上市公司的实时行情数据。包括了股票代码,名称,最新价,涨跌幅,涨跌额,成交量,成交额,振幅,市盈率等多个字段。
使用示例:
stock_zh_a_spot_em_df = ak.stock_zh_a_spot_em()
数据示例: - 指数历史行情数据
akshare库提供了一个名为stock_zh_index_daily的接口,可以用于获取股票指数的历史行情数据。这些数据是从新浪财经获取的,历史数据按日频率更新。
使用这个接口,你可以获取到一个股票指数的所有历史行情数据。接口的使用方法如下:
stock_zh_index_daily_df = ak.stock_zh_index_daily(symbol=”sz399552″)
在这个示例中,我们获取了代码为”sz399552″的股票指数的所有历史行情数据。
这个接口返回的数据包含以下几个字段:
date、open、high、low、close、volume。
数据示例: - 指数实时行情数据
akshare库的stock_zh_index_spot接口可以获取新浪财经网站上的实时指数行情数据。以下是如何使用这个接口的范例代码:
stock_zh_index_spot_df = ak.stock_zh_index_spot()
这个接口返回的数据包括以下字段:
代码、名称、最新价、涨跌额、涨跌幅、昨收、今开、最高、最低、成交量、成交额。
数据示例:
03
从AKShare获取基本面数据
- 财务报告
在AKShare库中,stock_financial_report_sina接口提供了从新浪财经获取特定股票的财务报告数据的功能。此接口覆盖了三大财务报表:资产负债表,利润表和现金流量表。
此接口能够在单次调用中获取指定报表的所有年份数据的历史数据。接口的输入参数包括stock和symbol。stock为带有市场标识的股票代码,例如”sh600600″。而symbol则是您想要查询的财务报告类型,可以选择”资产负债表”,”利润表”或”现金流量表”。
该接口的输出是一个包含了多种财务数据的数据框,其中包括报告日期、流动资产等各种财务指标。
以下是一个使用此接口的示例。在这个示例中,我们获取了带有股票代码”sh600600″的资产负债表数据:
stock_financial_report_sina_df = ak.stock_financial_report_sina(stock=”sh600600″, symbol=”资产负债表”)
运行上述代码后,您将得到一个包含了指定股票财务数据的dataframe。数据示例如下:
图片 - 基本面关键指标
使用 AKShare 库的 stock_financial_abstract 函数,可以轻松获取特定股票代码的财务关键指标。
这个接口的主要功能是获取新浪财经网站上的财务报表中的关键指标。每次调用,您可以获取一个股票代码对应的所有历史关键指标数据。
输入参数:
symbol(str):股票代码,例如 “600004”
输出:
获取的数据包括多个关键财务指标,如归母净利润、营业总收入、营业成本、净利润、扣非净利润等。
使用示例:
#获取股票代码为 “600004” 的财务关键指标
stock_financial_abstract_df = ak.stock_financial_abstract(symbol=”600004″)
数据示例:
图片
- 盈利预测数据
AKShare库中的盈利预测接口是stock_profit_forecast_ths,此接口源自同花顺,专门用于盈利预测。这个接口能够返回特定股票代码(symbol)和指标(indicator)的数据。
接口示例:预测年报每股收益:
stock_profit_forecast_ths_df = ak.stock_profit_forecast_ths(symbol=”600519″, indicator=”预测年报每股收益”)
数据示例:
输入参数解释:
输入参数包括股票代码(symbol)和指标(indicator)。例如,如果你想获取股票代码为”600519″的预测年报每股收益,你需要将symbol设置为”600519″,并将indicator设置为”预测年报每股收益”。
indicator的可选值包括”预测年报每股收益”、”预测年报净利润”、”业绩预测详表-机构”和”业绩预测详表-详细指标预测”。
输出:
当indicator设置为”预测年报每股收益”时,输出的参数包括:年度、预测机构数、最小值、均值、最大值和行业平均数。
当indicator设置为”预测年报净利润”时,输出的参数包括:年度、预测机构数、最小值、均值、最大值、行业平均数。
当indicator设置为”业绩预测详表-机构”时,输出的参数包括:机构名称、研究员、各年的预测年报每股收益、报告日期。
当indicator设置为”业绩预测详表-详细指标预测”时,输出的参数包括:预测指标、各年的实际值、各年的预测平均值。
04
从AKShare获取特色数据
- 主力控盘:机构参与度
在AKShare库中,stock_comment_detail_zlkp_jgcyd_em接口允许用户从东方财富网获取特定股票的机构参与度数据。
此接口在单次调用中可获取所有相关数据,输入参数仅需要指定symbol,也就是股票代码。
返回的数据包含了日期(date)和机构参与度(value)。注意,value字段的单位是百分比,代表机构投资者持股的比例。
以下是一个使用此接口的示例:
stock_comment_detail_zlkp_jgcyd_em_df = ak.stock_comment_detail_zlkp_jgcyd_em(symbol=”600000″)
数据示例: - 资金流向
在AKShare中可以用stock_individual_fund_flow接口从东方财富网获取个股资金流向的数据。该接口单次可以获取指定市场和股票的近 100 个交易日的资金流数据。
该接口有2个输入参数:
stock(str)为 股票代码,例如:stock=”000425″;
market(str)为市场,上海证券交易所: sh, 深证证券交易所: sz, 北京证券交易所: bj,例如:market=”sh”。
输出的数据包括:
日期、收盘价、涨跌幅(单位: %)、主力净流入-净额、主力净流入-净占比(单位: %)、超大单净流入-净额、超大单净流入-净占比(单位: %)、大单净流入-净额、大单净流入-净占比(单位: %)、中单净流入-净额、中单净流入-净占比(单位: %)、小单净流入-净额、小单净流入-净占比
接口示例:
stock_individual_fund_flow_df = ak.stock_individual_fund_flow(stock=”600094″, market=”sh”)
数据示例:
在这篇文章中,我们仅仅举例说明了AKShare库中的部分功能,探索了如何利用它获取A股市场的一些常用数据。实际上,AKShare库提供的数据远不止这些,各类金融数据都可以在这个强大的库中找到,这些数据包含了大量的信息,等待我们去挖掘。
发布者:爱吃肉的小猫,转载请注明出处:https://www.95sca.cn/archives/45917
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!