Python之yahoo-finance包语法、参数和实际应用案例
2026/6/7 15:33:54 网站建设 项目流程

Python yahoo-finance 包完整教程(功能+安装+语法+8大案例+避坑指南)

yahoo-finance是 Python 中免费、轻量、无API密钥的金融数据抓取工具,基于雅虎财经官网接口,可快速获取股票、基金、加密货币、指数等实时行情、历史数据、财务报表、分红拆股等核心金融数据,是量化交易、金融分析、数据可视化的必备工具包。

注意:官方稳定包为yfinanceyahoo-finance是旧版别名,推荐直接用 yfinance,用法完全一致)。


一、核心功能

  1. 标的基础信息:股票名称、交易所、货币单位、行业板块等
  2. 历史行情数据:日K/周K/月K/分钟级K线(开盘价、收盘价、最高价、最低价、成交量)
  3. 实时报价数据:最新价、涨跌幅、成交量、市值等实时指标
  4. 财务数据:资产负债表、利润表、现金流量表(年度/季度)
  5. 分红与拆股数据:历史分红金额、拆股比例
  6. 多标的批量获取:同时获取多只股票/基金数据
  7. 支持全球标的:美股、A股、港股、加密货币、指数、ETF等

二、安装方法

1. 标准安装(推荐)

pipinstallyfinance

2. 国内镜像加速(解决安装慢)

pipinstallyfinance-ihttps://pypi.tuna.tsinghua.edu.cn/simple

3. 验证安装

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. 关键参数详解

参数可选值/说明
period1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,max(最大历史数据)
interval分钟级:1m,2m,5m,15m,30m;小时级:60m;日/周/月:1d,1wk,1mo
auto_adjustTrue:收盘价自动复权(量化分析必备);False:原始价格
tickersA股: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无数据

原因

  1. 股票代码错误(A股未加.SS、港股未加.HK
  2. 时间周期/间隔不合法(分钟级数据仅支持最近30天)
  3. 标的已退市

解决

  • A股:600519.SS,港股:0700.HK
  • 分钟级数据只能用period="30d"

错误2:网络超时/连接失败

原因:雅虎财经服务器在境外,国内网络不稳定

解决

  1. 切换网络(手机热点)
  2. 降低请求频率,不要频繁大量请求
  3. 使用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(量化分析标准做法)


六、使用注意事项

  1. 标的代码规范

    • A股:代码 +.SS(上交所)/.SZ(深交所),如000001.SZ(平安银行)
    • 港股:代码 +.HK,如00001.HK
    • 加密货币:BTC-USDETH-USD
    • 指数:^GSPC(标普500)、^HSI(恒生指数)
  2. 数据频率限制

    • 不要短时间内大量高频请求,会被雅虎封禁IP
    • 批量数据优先用yf.download(),而非循环Ticker
  3. 数据时效性

    • 实时数据有1-15分钟延迟(免费接口限制)
    • 历史数据完整可靠,适合回测分析
  4. 依赖补充

    • 数据分析需搭配:pandasnumpy
    • 可视化需搭配:matplotlibseaborn
  5. 合规使用

    • 仅用于个人学习/研究,禁止商业用途批量爬取
    • 遵守雅虎财经使用条款

总结

  1. yfinance是免费获取雅虎财经全品类金融数据的首选工具,无需API密钥;
  2. 核心用法:Ticker(单标的)+download(批量数据),auto_adjust=True必开;
  3. 覆盖股票、基金、加密货币、指数,支持历史行情、财务报表、分红拆股;
  4. 避坑关键:代码格式正确、网络稳定、时间周期合法、合规请求。

《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章,前6章涵盖深度学习基础,包括张量运算、神经网络原理、数据预处理及卷积神经网络等;后5章进阶探讨图像、文本、音频建模技术,并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法,每章附有动手练习题,帮助读者巩固实战能力。内容兼顾数学原理与工程实现,适配PyTorch框架最新技术发展趋势。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询