【Python】我最喜欢使用获取股票数据的库

· 快讯

关于免费获取中国股票数据,我个人最常用也最推荐的是 AkShare——它就像一把「瑞士军刀」,覆盖广、更新快、开箱即用,尤其适合快速获取实时行情、资金流、行业数据等场景。下面从几个角度详细说说我的使用体验和理由:

✅为什么我偏爱 AkShare?

1.零门槛,无需注册/Token

对比 Tushare(需注册获取Token)和 Baostock(部分接口需登录),AkShare 无需任何认证,复制代码直接跑通。适合快速验证想法,避免注册流程打断思路。

2.数据源丰富且实时性强

聚合 新浪、腾讯、东方财富、交易所 等多源数据,实时行情延迟低(3~15秒)。覆盖股票、基金、期货、期权、宏观、外汇、加密货币等 全品类金融数据

3.接口设计简洁直观

函数命名清晰(如 stock_zh_a_hist 代表A股历史数据),参数少且符合直觉。返回标准的 pandas.DataFrame,无需二次解析。

4.社区活跃,更新迅猛

GitHub 上 ⭐️ 22k+ Star,开发者响应问题及时(项目链接)。几乎每周更新,新增接口快(如北向资金、龙虎榜等特色数据)。

AkShare 高频使用场景 & 代码示例

▶️场景1:批量下载全A股实时行情

import akshare as ak# 一键获取全市场4800+只股票实时行情(含涨跌幅、成交量、换手率等)df_real_time = ak.stock_zh_a_spot_em()print(f"当前涨停股票数:{len(df_real_time[df_real_time[涨跌幅] >= 9.9])}")

✅ 输出字段:代码,名称,最新价,涨跌幅,成交量(手),成交额(元),换手率,市盈率...

▶️场景2:获取个股历史K线(带复权)

# 获取贵州茅台 (600519) 2024年日线前复权数据df_maotai = ak.stock_zh_a_hist(symbol="600519",period="daily",adjust="qfq", # 可选 qfq(前复权), hfq(后复权), (不复权)start_date="20240101",end_date="20240630")# 用matplotlib绘制K线import matplotlib.pyplot as pltplt.figure(figsize=(12, 6))plt.plot(df_maotai[日期], df_maotai[收盘], label=贵州茅台)plt.title(2024年贵州茅台前复权价格走势)plt.legend()plt.show()

⚖️什么情况下选其他工具?

虽然我主力用 AkShare,但特定场景会切换工具:

需要分钟级K线(>5年历史) → 切到 BaoStock(AkShare的分钟数据覆盖较短)。需要完整财务指标(ROE/毛利率等) → 用 Tushare Pro(需积分,但字段更规范)。需要盘口订单流/Level2数据 → 用 米筐(RiceQuant) 等付费工具(非免费)。

我的高效使用心法

善用 ak.get_futures_contracts() 等函数:先查支持的数据接口列表,避免重复造轮子。搭配 polars 替代 pandas:当数据量 >100万行时,用 polars 加速处理(AkShare原生支持)。错误重试机制:用 tenacity 库自动重试网络请求(应对接口限流)。from tenacity import retry, stop_after_attempt@retry(stop=stop_after_attempt(3))def safe_ak_query():return ak.stock_zh_a_spot()safe_ak_query()

总结一句话:

「日常用 AkShare,分钟线用 BaoStock,基本面用 Tushare」90% 的需求 AkShare 都能优雅解决,它的 免注册+多源聚合 特性完美契合 Pythonic 的「快速原型」哲学。

如果需要某类特定数据(如可转债、期权波动率、行业资金流),可以告诉我具体需求,我直接给你写 AkShare 的代码模板!