大家好,我是木木。
今天给大家分享一个金融数据接口的 Python 库,akshare。
akshare
akshare 是一个覆盖股票、基金、债券、宏观、期货等公开金融数据的 Python 库。它的接口非常多,适合研究、教学、策略原型和数据探索。使用它时要记住一点:很多数据来自公开网页或第三方站点,代码层面要做好缓存、限速、字段校验和失败重试,不能把外部站点当成本地数据库。
项目地址:https://github.com/akfamily/akshare
官方文档:https://akshare.akfamily.xyz/
三大特点
覆盖面广
股票、基金、债券、宏观、期货等方向都有大量函数入口。
上手直接
多数函数返回 pandas DataFrame,适合接到分析脚本和 Notebook。
需控风险
公开数据源会变动,生产化时要做字段校验、缓存和降级策略。
最佳实践
安装方式:pip install akshare。本文的 demo 不请求外部行情站点,先展示函数目录、签名和接入注册表,避免发布时受网络和上游站点波动影响。
第一段代码解决的问题是:快速摸清 akshare 当前安装版本和主要方向下的函数数量。
importwarningswarnings.filterwarnings("ignore")importakshareasakprefixes=["stock","fund","bond","macro","futures"]print("akshare:",ak.__version__)forprefixinprefixes:funcs=[namefornameindir(ak)ifname.startswith(prefix+"_")]print(f"{prefix}: {len(funcs)} functions")print("sample stock APIs:")fornamein[nfornindir(ak)ifn.startswith("stock_zh_a")][:6]:print("-",name)
第二段代码解决的问题是:在真正拉数据前先检查目标函数签名和文档首行,减少误用参数。
importwarningsimportinspectwarnings.filterwarnings("ignore")importakshareasaktargets=["stock_zh_a_spot_em","fund_open_fund_info_em","macro_china_cpi"]fornameintargets:func=getattr(ak,name)doc=(func.__doc__or"").strip().splitlines()[0]print(name)print(" signature:",inspect.signature(func))print(" doc:",doc[:56])
环境与版本信息
本文示例使用 Python 3.11.0、akshare 1.18.64、pandas 2.3.3。实际拉取行情或宏观数据时,还会受到网络、数据源变更和访问频率影响。
高级功能
akshare 的进阶用法不在于一次调用多少接口,而在于把接口治理起来。注册表可以帮助你统一数据集名称、函数入口和期望字段,后面再接缓存和校验就顺了。
importwarningsfromdataclassesimportdataclasswarnings.filterwarnings("ignore")importakshareasak@dataclassclassDatasetSpec:name:strfunction:strkey_columns:tuple[str,...]registry=[DatasetSpec("a_share_spot","stock_zh_a_spot_em",("code","name","last_price")),DatasetSpec("china_cpi","macro_china_cpi",("month","national")),DatasetSpec("open_fund","fund_open_fund_info_em",("fund_code","nav")),]print("registered datasets:",len(registry))forspecinregistry:print(f"{spec.name}: {hasattr(ak,spec.function)} -> {spec.function}")print(" columns:",", ".join(spec.key_columns))
适用场景
适合金融数据探索、量化研究原型、教学案例、宏观指标分析和离线报表补充数据。
不适用场景
不适合直接承载高频交易生产链路,也不适合在没有缓存、没有字段校验、没有重试策略的情况下给线上服务实时调用。
上线检查
- 固定 akshare 版本并记录函数名。2. 对返回字段做 schema 校验。3. 对外部请求做缓存、限速和超时。4. 保存原始数据快照,方便追溯上游变化。
总结
akshare 的魅力是数据入口丰富,但越丰富越要治理。把函数目录、字段和缓存策略先管住,它会是研究阶段非常顺手的工具。