yfinance 安装后如何用 Ticker 获取个股历史价格并完成首次数据验证
2026/9/13 5:16:58 网站建设 项目流程

yfinance 安装后如何用 Ticker 获取个股历史价格并完成首次数据验证

【免费下载链接】yfinanceDownload market data from Yahoo! Finance's API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance

安装 yfinance 之后,大多数人的第一个真实需求是:拿到某只股票的历史行情,并确认拿到的数据是对的。这篇文章只覆盖这一条路径:通过pip安装 yfinance,用Ticker.history()拉取单只个股的历史价格表,然后做一次可核对的首次数据验证——包括返回结构、币种核对和空结果的含义。

安装 yfinance

官方安装方式是从 PyPI 用pip安装(见 README):

$ pip install yfinance

默认安装会带上curl_cffi这个依赖。如果你的环境不能装它,文档提供了不安装curl_cffi的替代方式(见 advanced/install)。该命令会先下载项目仓库的 requirements 文件、排除curl_cffi后安装其余依赖,再安装不带依赖的 yfinance,会实际修改当前 Python 环境:

curl -fsSL https://raw.githubusercontent.com/ranaroussi/yfinance/main/requirements.txt | grep -vi '^curl_cffi' | pip install -r /dev/stdin pip install --no-deps yfinance

用 Ticker.history() 获取历史价格

创建Ticker对象并调用history()就是取历史行情的完整入口,官方快速开始示例(见 doc/source/index.rst 和示例文件 examples/ticker.py):

import yfinance as yf dat = yf.Ticker("MSFT") # get historical market data df = dat.history(period='1mo') print(df)

history()返回一个pandas.DataFrame,价格列为OpenHighLowCloseAdj Close(列名定义在 yfinance/const.py 的_PRICE_COLNAMES_)。首次使用只需理解几个影响结果的参数,其余保持默认即可,参数说明来自 PriceHistory.history 的官方文档:

参数说明
period取值1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,max;未指定start/end时默认'1mo'
interval取值1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo,默认'1d'
start/end日期字符串(YYYY-MM-DD)或 datetime;start含当日,end不含当日
auto_adjust是否自动调整 OHLC,默认True
repair是否修复 Yahoo 数据错误,默认False
timeout请求超时秒数,默认10

periodstart/end可以组合使用(例如end = start + period),但三者不能同时指定,periodstartend最多设置两个。

两点边界需要注意:

  • 日内数据(分钟/小时级interval)无法回看最近 60 天以前的范围;
  • 30m数据实际是从 Yahoo 取15m再重采样得到的,这是文档说明的 Yahoo API 缺陷的绕法。

首次数据验证

拿到df后,按下面三步做一次验证。

1. 确认返回结构与行数。history()的返回类型是pandas.DataFrame(见 PriceHistory 类文档):

print(df.head()) print(df.shape)

如果返回的是空表,说明请求本身出了问题而不是数据少。源码中明确的处理逻辑是:每个有效 ticker 都有时区,时区缺失意味着该代码无效(例如已退市),此时会记录错误并返回空 DataFrame(见 yfinance/scrapers/history.py 中history()YFTzMissingError分支)。所以“代码不对/已退市”和“数据为空”是不同的信号,先检查 ticker 代码是否有效。

2. 核对币种。官方文档(见 advanced/price_repair)要求以history_metadata里的currency为准来确认真实币种,而不是Ticker.info

print(dat.history_metadata['currency'])

3. 检查错误是否被隐藏。默认配置下部分异常只写日志不抛出。如果想在首次运行就让异常直接抛出便于定位,按源码中的提示设置yf.config.debug.hide_exceptions = False;文档同时说明history()raise_errors参数已弃用,不要继续用它。

限制与下一步

  • README 与文档首页都强调:Yahoo! finance API 仅限个人使用,yfinance 与 Yahoo 无关联,数据使用权利需遵守 Yahoo 服务条款。
  • 取到的价格如果出现异常(如 100 倍错误、缺失行、错误的分红/拆股调整),history()提供repair=True参数进行修复,该功能默认关闭,修复细节见 advanced/price_repair。
  • 单只 ticker 的完整方法列表(infodividendssplits等)见 yfinance.stock,多 ticker 下载则使用yf.download(),入口在 reference 总览。

【免费下载链接】yfinanceDownload market data from Yahoo! Finance's API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询