AKShare教程
1. 什么是 AKShare?
- 定义: AKShare 是一个基于 Python 的开源金融数据接口库。
- 目标: 旨在为用户提供一个简洁、统一、易用的接口,以方便地获取来自网络上各种公开数据源的金融和经济数据。
- 特点:
- 免费开源: 完全免费使用,代码公开透明。
- 数据广泛: 覆盖股票(A股、港股、美股)、期货(国内、国际)、期权、基金、债券、外汇、数字货币、宏观经济指标、行业数据、新闻舆情等多个领域。
- 接口统一: 尽可能使用相似的函数命名和参数风格,降低学习成本。
- 输出标准: 主要返回 Pandas DataFrame 格式,便于后续在 Python 中进行数据分析和处理。
- 社区活跃: 有持续的更新和维护,能够较快地适应数据源的变化。
2. 安装 AKShare
安装非常简单,使用 pip 即可:
pip install akshare -i https://pypi.tuna.tsinghua.edu.cn/simple # 使用清华镜像源加速
或者直接使用官方源:
pip install akshare
建议定期更新以获取最新的数据接口和修复:
pip install --upgrade akshare
3. 核心使用方法
AKShare 的使用模式通常遵循以下步骤:
- 导入库:
import akshare as ak
- 查找接口: 访问 AKShare 官方文档 (https://akshare.akfamily.xyz/ 或 https://akshare.readthedocs.io/),找到你需要的数据对应的函数接口。文档按数据类型分类,非常清晰。
- 调用函数: 使用
ak.函数名()
并传入必要的参数(如股票代码symbol
、日期start_date
,end_date
、周期period
等)。 - 处理数据: 函数通常会返回一个或多个 Pandas DataFrame,你可以直接对其进行分析、可视化或存储。
4. 主要数据模块及示例
AKShare 的数据接口极其丰富,这里列举一些最常用和代表性的模块:
-
股票 (Stock)
- A 股历史行情:
ak.stock_zh_a_hist(symbol="000001", period="daily", start_date="20230101", end_date="20231231", adjust="qfq")
(获取平安银行日线前复权数据) - 实时行情:
ak.stock_zh_a_spot_em()
(获取所有 A 股的实时行情 - 来自东方财富) - 板块数据:
ak.stock_board_concept_name_em()
(获取概念板块名称) - 个股基本信息:
ak.stock_individual_info_em(symbol="000001")
- 港股、美股:也有对应的
stock_hk_...
和stock_us_...
系列函数。
- A 股历史行情:
-
期货 (Futures)
- 国内期货历史行情:
ak.get_futures_daily(start_date='20230101', end_date='20231231', market="CZCE")
(获取郑商所所有品种日线数据) - 具体合约历史行情:
ak.futures_zh_daily_sina(symbol="IF2407")
(获取中证 IF2407 合约日线数据 - 来自新浪财经) - 主力合约映射:
ak.futures_main_mapping_em()
(获取东方财富的主力合约代码)
- 国内期货历史行情:
-
基金 (Fund)
- 公募基金净值:
ak.fund_open_fund_info_em(fund="161725", indicator="单位净值走势")
(获取某基金单位净值) - ETF 历史行情:
ak.fund_etf_hist_em(symbol="510300")
(获取沪深300ETF历史行情)
- 公募基金净值:
-
宏观经济 (Macro)
- 中国宏观数据:
ak.macro_china_gdp_yearly()
(获取中国年度 GDP 数据) - CPI/PPI:
ak.macro_china_cpi_monthly()
/ak.macro_china_ppi_monthly()
- LPR 利率:
ak.macro_china_lpr()
- 美联储利率:
ak.macro_usa_federal_fund_rate()
- 全球宏观:提供来自 FRED、世界银行等的数据接口。
- 中国宏观数据:
-
数字货币 (Crypto)
- 主流交易所行情:
ak.crypto_hist(symbol='BTCUSDT', period='daily', start_date='20230101', end_date='20231231')
(获取 BTC/USDT 日线数据 - 默认可能来自币安)
- 主流交易所行情:
-
其他
- 外汇:
ak.fx_pair_hist(symbol="USDCNH", period="daily", start_date="...")
- 债券:
ak.bond_zh_cov_daily(symbol="128013")
(可转债日线) - 新闻:
ak.js_news(channel="头条")
(获取金十数据快讯)
- 外汇:
5. 常用参数说明
symbol
: 标的代码,如股票代码 ‘600519’,期货合约 ‘IF2407’,基金代码 ‘161725’ 等。具体格式需参考函数文档。period
: 数据周期,常用 ‘daily’ (日线), ‘weekly’ (周线), ‘monthly’ (月线),部分接口支持分钟线 (‘1’, ‘5’, ‘15’, ‘30’, ‘60’)。start_date
,end_date
: 起始和结束日期,格式通常为 ‘YYYYMMDD’ 或 ‘YYYY-MM-DD’。adjust
: 复权选项(主要用于股票),‘qfq’ (前复权), ‘hfq’ (后复权), ‘’ 或 None (不复权)。
6. 优势总结
- 一站式获取: 极大简化了从不同网站手动爬取或寻找 API 的过程。
- 易于集成: 返回 Pandas DataFrame,无缝对接 Python 数据科学生态(NumPy, SciPy, Matplotlib, Scikit-learn 等)。
- 持续更新: 社区维护,能较快修复失效接口和增加新数据源。
- 学习成本低: 对于有 Python 和 Pandas 基础的用户来说上手很快。
7. 注意事项与局限性
- 数据源稳定性: AKShare 依赖于公开的网络数据源。如果源网站改版、限制访问或关闭,对应接口可能会失效,需要等待库作者更新。
- 数据准确性与及时性: 数据来源于公开网络,其准确性和实时性可能不如专业的付费金融数据终端(如 Wind, Bloomberg)。对于高频交易等场景,需谨慎评估。
- 潜在的访问限制: 短时间内大量、频繁地调用某些接口,可能会触发数据源网站的反爬虫机制,导致 IP 被临时封禁。建议合理设置请求间隔。
- 接口变化: 随着库的迭代,函数名、参数或返回的数据结构可能会有微调,更新版本后需注意兼容性。
- 文档依赖: 由于接口众多且参数各异,强烈依赖官方文档来查找和确认具体用法。
8. 学习资源
- 官方文档 (首选): https://akshare.akfamily.xyz/ (国内访问快) 或 https://akshare.readthedocs.io/
- GitHub 仓库: https://github.com/akfamily/akshare (查看源码、提交 Issue、参与讨论)
- 社区/教程: 网络上可以搜索到很多基于 AKShare 的使用教程和量化分析文章。
总结
AKShare 是一个功能强大且极具价值的 Python 金融数据工具,特别适合个人量化爱好者、金融研究人员、学生以及需要便捷获取各类金融数据的开发者。它极大地降低了金融数据获取的门槛。掌握其基本使用方法,并善用官方文档,你就能轻松地将丰富的金融数据融入到你的分析和应用中。但同时也要注意其数据源依赖性和潜在的限制。