什么是 Tushare?
Tushare 是一个免费、开源的 Python财经数据接口包,它为金融分析、量化投资等领域的数据获取提供了极大的便利,你可以通过它轻松获取股票、期货、基金、宏观经济、新闻等海量数据。

核心特点:
- 数据全面:覆盖 A股、港股、美股、期货、基金、债券、数字货币等市场的历史和实时行情数据。
- 接口丰富:除了行情数据,还提供财务数据、资金流向、宏观经济指标、新闻公告等。
- Pythonic:API 设计符合 Python 的使用习惯,易于学习和上手。
- 活跃社区:拥有庞大的用户群体和活跃的社区支持,遇到问题容易找到解决方案。
- 免费与付费:提供免费的数据接口,但有一定的频率限制,对于更专业、更大量、更高频的数据需求,可以申请付费 Pro 版本。
安装与配置
1 安装
你可以通过 Python 的包管理工具 pip 来安装 Tushare。
# 安装最新稳定版 pip install tushare # 如果需要安装特定版本 pip install tushare==1.2.89
2 获取 Token 并配置
Tushare 使用 Token(令牌)来识别用户身份,这是调用接口的凭证。
- 注册账号:访问 Tushare 官网,完成注册。
- 获取 Token:登录后,在个人主页的“接口Token”一节中,你可以找到你的 Token。
- 配置 Token:在 Python 代码中,你需要设置这个 Token。
推荐做法:将 Token 设置为环境变量,而不是直接写在代码里,这样更安全。
- 在 Linux 或 macOS 中:
export TUSHARE_TOKEN='你的token'
- 在 Windows 中 (命令提示符):
set TUSHARE_TOKEN=你的token
- 在 Python 代码中设置:
import tushare as ts # 直接设置你的token ts.set_token('你的token')
基本使用示例
Tushare 的使用非常直观,通常遵循“获取接口 -> 设置参数 -> 调用”的模式。
1 初始化 Pro API
获取 Token 后,你需要初始化一个 pro_api 对象。
import tushare as ts
# 设置token (如果未通过环境变量设置)
# ts.set_token('你的token')
# 初始化pro接口
pro = ts.pro_api()
2 获取股票日线行情数据
这是最常用的功能之一,获取某只股票的每日行情数据。
import tushare as ts
import pandas as pd
# 初始化pro接口
pro = ts.pro_api()
# 获取股票日线数据
# ts_code: 股票代码 ('000001.SZ' 表示平安银行)
# start_date: 开始日期 (格式: YYYYMMDD)
# end_date: 结束日期 (格式: YYYYMMDD)
df_daily = pro.daily(ts_code='000001.SZ', start_date='20250101', end_date='20251231')
# 将数据打印出来
print(df_daily.head())
# 也可以保存为 CSV 文件
df_daily.to_csv('pingan_bank_daily_2025.csv', index=False)
输出示例:
ts_code trade_date open high low close pre_close change pct_chg vol amount
0 000001.SZ 20251229 11.52 11.59 11.40 11.43 11.58 -0.150 -1.2953 183822.45 212025.2890
1 000001.SZ 20251228 11.58 11.65 11.52 11.58 11.52 0.060 0.5208 198397.13 229658.2655
2 000001.SZ 20251227 11.50 11.62 11.49 11.52 11.51 0.010 0.0868 163456.15 188438.5150
3 000001.SZ 20251226 11.45 11.53 11.43 11.51 11.45 0.060 0.5240 166919.36 192392.3570
4 000001.SZ 20251225 11.40 11.48 11.38 11.45 11.43 0.020 0.1749 145027.25 166525.3985
可以看到,返回的是一个 pandas.DataFrame 对象,非常方便进行后续的数据处理和分析。
3 获取股票列表
如果你想获取所有 A 股的列表,可以使用 stock_basic 接口。
# 获取A股列表 df_stock_list = pro.stock_basic(exchange='SZ', list_status='L') # L:上市, P:暂停上市, D:退市 print(df_stock_list.head())
4 获取指数成分股
以沪深300为例。
# 获取沪深300成分股 df_hs300 = pro.index_weight(index_code='000300.SH') print(df.hs300.head())
5 获取财务数据
获取公司的资产负债表信息。
# 获取资产负债表数据 df_balance_sheet = pro.balancesheet(ts_code='000001.SZ', period='20250331') print(df_balance_sheet.head())
Tushare Pro vs. Tushare 免费版
| 特性 | Tushare 免费版 | Tushare Pro (付费) |
|---|---|---|
| 数据覆盖 | 核心数据 | 全面,包含更多细分领域数据 |
| 数据更新频率 | T+1 (延迟一天) | 部分高频数据 (如分钟级、逐笔) |
| 数据条数限制 | 有 (每个接口每天有调用次数限制) | 无 (或非常高) |
| 数据长度限制 | 有 (单次请求最多5000条) | 无 (可拉取全量历史数据) |
| 接口稳定性 | 一般 | 高优先级,更稳定 |
| 专属客服支持 | 无 | 有 |
| 适用人群 | 个人学习者、小型项目 | 专业量化团队、金融机构、学术研究 |
对于初学者和大多数个人项目,免费版已经足够使用。
进阶使用技巧
1 数据缓存
为了避免重复请求接口,Tushare 提供了简单的缓存功能,这对于调试和减少调用次数非常有用。
# 设置缓存目录
ts.set_token('你的token')
pro = ts.pro_api()
# 使用缓存
df_cached = pro.daily(ts_code='000001.SZ', start_date='20250101', end_date='20251231', cache='daily_data')
# 不使用缓存
df_no_cache = pro.daily(ts_code='000001.SZ', start_date='20250101', end_date='20251231', cache=False)
2 与 Pandas 和 Matplotlib 结合使用
Tushare 返回的是 DataFrame,可以无缝地与 pandas 和 matplotlib 等库结合,进行数据分析与可视化。
import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 获取数据
pro = ts.pro_api()
df = pro.daily(ts_code='000001.SZ', start_date='20250101', end_date='20251231')
# 将日期列转换为datetime类型
df['trade_date'] = pd.to_datetime(df['trade_date'])
# 绘制股价走势图
plt.figure(figsize=(14, 7))
plt.plot(df['trade_date'], df['close'], label='收盘价')'平安银行 (000001.SZ) 2025年收盘价走势')
plt.xlabel('日期')
plt.ylabel('价格 (元)')
plt.legend()
plt.grid(True)
plt.show()
Tushare Python 版本是国内金融数据获取的利器,它通过简洁的 API 将复杂的金融数据结构化,并以 pandas.DataFrame 的形式呈现,极大地降低了量化投资和金融分析的门槛。
学习建议:
- 从官网开始:务必仔细阅读 Tushare Pro 官方文档,里面详细列出了所有可用的接口及其参数。
- 先玩转免费版:熟悉基本的数据获取和
pandas操作。 - 关注社区:在 Tushare 的社区或知识星球里,有很多大佬分享的实用代码和项目,可以学到很多技巧。
