Python yahoo-finance 包完整教程(功能+安装+语法+8大案例+避坑指南)
yahoo-finance是 Python 中免费、轻量、无API密钥的金融数据抓取工具,基于雅虎财经官网接口,可快速获取股票、基金、加密货币、指数等实时行情、历史数据、财务报表、分红拆股等核心金融数据,是量化交易、金融分析、数据可视化的必备工具包。
注意:官方稳定包为
yfinance(yahoo-finance是旧版别名,推荐直接用 yfinance,用法完全一致)。
一、核心功能
- 标的基础信息:股票名称、交易所、货币单位、行业板块等
- 历史行情数据:日K/周K/月K/分钟级K线(开盘价、收盘价、最高价、最低价、成交量)
- 实时报价数据:最新价、涨跌幅、成交量、市值等实时指标
- 财务数据:资产负债表、利润表、现金流量表(年度/季度)
- 分红与拆股数据:历史分红金额、拆股比例
- 多标的批量获取:同时获取多只股票/基金数据
- 支持全球标的:美股、A股、港股、加密货币、指数、ETF等
二、安装方法
1. 标准安装(推荐)
pipinstallyfinance2. 国内镜像加速(解决安装慢)
pipinstallyfinance-ihttps://pypi.tuna.tsinghua.edu.cn/simple3. 验证安装
importyfinanceasyfprint(yf.__version__)# 输出版本号即安装成功三、核心语法与常用参数
1. 核心对象:Ticker(单个标的)
用于获取单只股票/基金/指数的所有数据,语法:
importyfinanceasyf# 创建标的对象(股票代码:美股直接输代码,A股加.SS,港股加.HK)ticker=yf.Ticker("AAPL")# 苹果公司2. 核心函数:download(批量历史数据)
用于批量获取多只标的、多时间周期的历史行情,语法:
data=yf.download(tickers,# 标的代码(字符串/列表,如 "AAPL" 或 ["AAPL", "MSFT"])start=None,# 开始日期(YYYY-MM-DD)end=None,# 结束日期(YYYY-MM-DD)period="max",# 时间周期(替代start/end,优先级更高)interval="1d",# 数据间隔:1m/5m/1h/1d/1wk/1moauto_adjust=True,# 自动复权(默认True,修正分红/拆股,推荐开启)actions=True,# 是否返回分红/拆股数据(默认True)threads=True,# 多线程批量获取(提速)progress=True# 显示下载进度)3. 关键参数详解
| 参数 | 可选值/说明 |
|---|---|
period | 1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,max(最大历史数据) |
interval | 分钟级:1m,2m,5m,15m,30m;小时级:60m;日/周/月:1d,1wk,1mo |
auto_adjust | True:收盘价自动复权(量化分析必备);False:原始价格 |
tickers | A股:600519.SS(茅台)、港股:0700.HK(腾讯)、加密货币:BTC-USD |
四、8个实际应用案例(可直接运行)
案例1:获取单只股票实时基础信息
importyfinanceasyf# 苹果股票ticker=yf.Ticker("AAPL")# 获取基础信息info=ticker.info# 打印核心指标print("股票名称:",info['longName'])print("当前价格:",info['currentPrice'])print("市值:",info['marketCap'])print("市盈率:",info['trailingPE'])print("货币单位:",info['currency'])案例2:获取股票历史日K线数据
importyfinanceasyf# 获取茅台(A股)近1年日K线ticker=yf.Ticker("600519.SS")# 历史数据(自动复权)hist=ticker.history(period="1y",interval="1d")# 查看前5行数据print(hist.head())# 保存为CSV文件hist.to_csv("茅台历史数据.csv")案例3:批量获取多只美股数据
importyfinanceasyf# 多只股票代码stocks=["AAPL","MSFT","GOOGL","AMZN"]# 批量下载近3个月数据data=yf.download(stocks,period="3mo",auto_adjust=True)# 查看收盘价数据print("收盘价数据:")print(data['Close'].head())案例4:获取股票分红与拆股数据
importyfinanceasyf ticker=yf.Ticker("AAPL")# 获取分红+拆股actions=ticker.actions# 单独获取分红dividends=ticker.dividends# 单独获取拆股splits=ticker.splitsprint("近10年分红:")print(dividends.tail(10))案例5:获取股票财务报表(利润表)
importyfinanceasyf ticker=yf.Ticker("AAPL")# 年度利润表income_stmt=ticker.income_stmt# 季度利润表quarterly_income=ticker.quarterly_income_stmtprint("苹果年度利润表:")print(income_stmt.head())案例6:获取加密货币实时数据(BTC)
importyfinanceasyf# 比特币兑美元btc=yf.Ticker("BTC-USD")# 近7天小时级数据btc_hist=btc.history(period="7d",interval="1h")print("比特币近10条小时数据:")print(btc_hist.tail(10))案例7:获取指数数据(标普500/纳斯达克)
importyfinanceasyf# 标普500sp500=yf.Ticker("^GSPC")# 纳斯达克100nasdaq=yf.Ticker("^NDX")# 近1年数据sp500_data=sp500.history(period="1y")print("标普500近5日收盘价:")print(sp500_data['Close'].tail())案例8:数据可视化(股票收盘价走势图)
importyfinanceasyfimportmatplotlib.pyplotasplt# 设置中文显示plt.rcParams["font.family"]=["SimHei","WenQuanYi Micro Hei","Heiti TC"]plt.rcParams["axes.unicode_minus"]=False# 获取数据ticker=yf.Ticker("AAPL")hist=ticker.history(period="1y")# 绘图plt.figure(figsize=(12,6))plt.plot(hist['Close'],label='苹果收盘价(复权)',color='#2196F3')plt.title('苹果股票近1年收盘价走势',fontsize=14)plt.xlabel('日期',fontsize=12)plt.ylabel('价格(美元)',fontsize=12)plt.legend()plt.grid(alpha=0.3)plt.show()五、常见错误与解决方案
错误1:YahooError: No data found无数据
原因:
- 股票代码错误(A股未加
.SS、港股未加.HK) - 时间周期/间隔不合法(分钟级数据仅支持最近30天)
- 标的已退市
解决:
- A股:
600519.SS,港股:0700.HK - 分钟级数据只能用
period="30d"
错误2:网络超时/连接失败
原因:雅虎财经服务器在境外,国内网络不稳定
解决:
- 切换网络(手机热点)
- 降低请求频率,不要频繁大量请求
- 使用
yf.download(threads=False)关闭多线程
错误3:财务报表字段缺失
原因:部分标的(A股/小众股票)雅虎财经未收录完整财务数据
解决:优先用美股/港股头部标的,A股财务数据推荐用其他专用库
错误4:分钟级数据获取失败
原因:interval="1m"仅支持最近7天,5m/15m仅支持最近60天
解决:
# 正确用法hist=ticker.history(period="7d",interval="1m")错误5:auto_adjust=False数据异常
原因:未开启自动复权,分红/拆股导致价格跳变
解决:永远开启auto_adjust=True(量化分析标准做法)
六、使用注意事项
标的代码规范
- A股:代码 +
.SS(上交所)/.SZ(深交所),如000001.SZ(平安银行) - 港股:代码 +
.HK,如00001.HK - 加密货币:
BTC-USD、ETH-USD - 指数:
^GSPC(标普500)、^HSI(恒生指数)
- A股:代码 +
数据频率限制
- 不要短时间内大量高频请求,会被雅虎封禁IP
- 批量数据优先用
yf.download(),而非循环Ticker
数据时效性
- 实时数据有1-15分钟延迟(免费接口限制)
- 历史数据完整可靠,适合回测分析
依赖补充
- 数据分析需搭配:
pandas、numpy - 可视化需搭配:
matplotlib、seaborn
- 数据分析需搭配:
合规使用
- 仅用于个人学习/研究,禁止商业用途批量爬取
- 遵守雅虎财经使用条款
总结
yfinance是免费获取雅虎财经全品类金融数据的首选工具,无需API密钥;- 核心用法:
Ticker(单标的)+download(批量数据),auto_adjust=True必开; - 覆盖股票、基金、加密货币、指数,支持历史行情、财务报表、分红拆股;
- 避坑关键:代码格式正确、网络稳定、时间周期合法、合规请求。
《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章,前6章涵盖深度学习基础,包括张量运算、神经网络原理、数据预处理及卷积神经网络等;后5章进阶探讨图像、文本、音频建模技术,并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法,每章附有动手练习题,帮助读者巩固实战能力。内容兼顾数学原理与工程实现,适配PyTorch框架最新技术发展趋势。