如果你在做数据分析、量化研究,或者是金融领域的开发者,可能会经常遇到一个问题:从哪里能方便地获取到国内股票、基金、期货等市场的实时或历史数据?
市面上有不少数据平台,但往往要么收费高昂,要么接口复杂,要么数据不全。今天我要推荐一个我个人经常使用的 Python 库------Akshare。
Akshare 是什么?
Akshare 是一个基于 Python 的免费、开源的金融数据接口库。它的目标很简单:让用户能够用几行代码就获取到国内主流的金融数据。
这个项目由一位国内开发者维护,目前已经在 GitHub 上获得了超过 8k 的星标,社区活跃,更新频率也很高。
为什么选择 Akshare?
我自己用 Akshare 大概有一年多了,中间也对比过其他一些方案。下面几个特点让我一直留着它:
1. 完全免费,数据源稳定
Akshare 的数据主要来自公开的财经网站和交易所接口,比如东方财富、新浪财经、网易财经等。你不需要注册账号,也不用担心突然收费。对于个人开发者、学生或者小团队来说,这一点非常友好。
2. 接口丰富,覆盖全面
它支持的数据类型很多:
- 股票(A股、港股、美股)
- 指数(沪深指数、全球指数)
- 基金(公募基金净值、持仓)
- 期货(国内商品期货、金融期货)
- 债券、外汇、宏观经济数据
- 甚至还包括舆情数据、财经新闻
基本上日常研究中需要用到的数据,它都覆盖了。
3. 使用简单,上手极快
Akshare 的接口设计得很直观,函数名基本能做到"见名知意"。比如:
python
import akshare as ak
# 获取 A 股实时行情
stock_zh_a_spot_df = ak.stock_zh_a_spot()
# 获取某只股票的历史日线数据
stock_zh_a_hist_df = ak.stock_zh_a_hist(symbol="000001", period="daily")
不用花太多时间看文档,就能快速写出可用的代码。
4. 返回格式规范
数据默认以 pandas DataFrame 格式返回,这对后续的数据处理和分析非常方便。你不用自己去解析 HTML 或者 JSON,直接就能用。
几个实际使用示例
获取单只股票的历史数据
python
import akshare as ak
# 获取贵州茅台(600519)从 2020 年至今的日线数据
df = ak.stock_zh_a_hist(symbol="600519",
period="daily",
start_date="20200101",
end_date="20251231")
print(df.head())
获取公募基金列表
python
# 获取当前市场上所有公募基金的基本信息
fund_list = ak.fund_em_open_fund_info()
print(f"共有 {len(fund_list)} 只公募基金")
查看宏观经济指标
python
# 获取中国居民消费价格指数(CPI)月度数据
cpi_df = ak.macro_china_cpi()
print(cpi_df.tail())
安装与注意事项
安装很简单:
bash
pip install akshare
不过有两点需要注意:
- 数据源的稳定性:因为 Akshare 依赖第三方网站,如果对方改版或限制访问,某些接口可能会暂时失效。不过作者和社区通常会在几天内修复。
- 使用频率:高频、大量请求可能会被目标网站封 IP,建议适当加入延时,用于个人研究是没问题的。
适合谁用?
- 量化交易初学者:不想在数据获取上花太多时间和金钱。
- 金融专业学生:做课程作业或毕业论文时需要数据。
- 数据分析师:需要快速提取某些市场数据做交叉分析。
- 个人投资者:想定期拉取自己的持仓数据做本地化分析。
写在最后
Akshare 对我来说是一个"够用、好用、不用钱"的工具。它可能没有 Wind、Tushare Pro 那么强的商业支持,也没有那么全的历史数据,但对于大多数非机构用户来说,它的免费、便捷已经足够解决 80% 的数据需求。
如果你之前一直在为找数据而头疼,或者想自动化自己的投资数据分析流程,不妨试试 Akshare。
项目地址:GitHub - akshare
当然,如果你在使用中发现某些接口有问题,也可以去 GitHub 上提 Issue,或者直接看源码自己修复------这也是开源项目的魅力所在。
附:我自己用 Akshare 做的一个小脚本,每周自动拉取自选股数据并发邮件,大概 50 行代码搞定。如果你有兴趣,我下次可以分享出来。
如果你有更好的数据获取方案,或者在使用中遇到什么问题,欢迎留言交流。