ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

三行代码拉取股票数据:yfinance免费财经数据获取完整教程

2026/8/18 2:52:00 拓冰建站 浏览量
三行代码拉取股票数据:yfinance免费财经数据获取完整教程 三行代码拉取股票数据yfinance免费财经数据获取完整教程【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance周五下午四点五十三分老板发来一条消息小陈下周一例会前把咱们持仓的苹果、微软、特斯拉过去五年的收益曲线算出来再看看那两只欧洲基金的分红记录对不对。你手头没有彭博终端公司也没买数据接口网上的免费行情站要么只给三个月要么导出成歪七扭八的表格。三秒后你意识到今晚又要加班了。但其实不用。一个叫yfinance的开源 Python 库就能让你免费、零配置地下载雅虎财经上的全球市场数据——股价、分红、拆股、财报、期权、实时行情一行代码起步。它没有会员制、不需要注册、不申请 API 密钥装好就能用。这篇文章会用一次周一交差的真实过程带你从头到尾走一遍。周一交差的第一个难题怎么把历史股价拿到本地yfinance 解决的第一件事是把数据变成你能直接拿去算的东西。它的安装只有一条命令pip install yfinance装完验证一下能不能用打开 Python 输入import yfinance as yf apple yf.Ticker(AAPL) history apple.history(period5y) print(history.head())这段代码解决获取苹果过去 5 年历史行情的问题。运行后你会看到一张带时间索引的表格列包含 Open开盘价、High最高价、Low最低价、Close收盘价、Adj Close复权价和 Volume成交量——已经是 pandas 的 DataFrame 格式可以直接mean()、plot()不用做任何格式转换。从敲下命令到拿到数据我实测约 3 秒。三只股票一起拉别用循环第一版方案你写了for循环一只只请求三只花了十几秒。老板说下回要加到三十只那得等到明年。yfinance 的download()就是为批量而生的data yf.download([AAPL, MSFT, TSLA], period5y, group_byticker)这段解决一次获取多只股票的历史数据的问题。运行后data[AAPL]、data[MSFT]各是一张独立行情表三十只股票也是同一句话的事yfinance 会自己管理并发请求。批量下载的核心实现可以看 yfinance/data.py 和 yfinance/tickers.py想深挖网络请求逻辑的读者可以按图索骥。真正让我吓一跳的它居然会修数据周一早上你开始画收益曲线却发现一个诡异现象某只伦敦上市的基金价格长期横在 0.15 附近成交量却是空的怎么看都不对。这类异常不是个例。雅虎的数据对美股比较上心但到了英国、香港、北欧市场就时常出乱子货币单位搞混英镑记成便士价格直接差 100 倍、分红日期标错、除息日价格没调整、甚至整行数据缺失。市面上大多数工具的策略是数据原样给你脏不脏你自己负责。yfinance 的做法是内置一套价格修复引擎你只需多传一个参数data yf.download(AAPL, period1y, repairTrue)这段解决自动检测并修复历史价格中的异常值的问题。运行后返回的表格里会多出一列Repaired?凡是动过手术的行都会被标记出来你可以亲眼看到哪些数据被修正了、修成了什么。它会自动识别 100 倍价格错误、补做缺失的分红调整、还原股票拆分、重构缺失的行情行连基金资本利得被重复计算这类刁钻问题也覆盖到了。修复逻辑的完整说明在 doc/source/advanced/price_repair.rst测试用例在 tests/test_price_repair.py每一条修复规则都有对应的数据样本验证。老板要的分红对不对也能查收益曲线画完了还剩那两只欧洲基金的分红核对。yfinance 里一只股票的动作记录分红、拆股、资本利得都是独立接口apple yf.Ticker(AAPL) print(apple.dividends.tail()) # 历次分红 print(apple.splits.tail()) # 历次拆股这段解决核对股票分红与拆股记录的问题。运行后你会看到每次分红的确切日期和金额配合前面的repairTrue拉取的复权价就能判断某次分红到底有没有被正确计入价格。想顺便看看基本面apple.info里有市盈率、股息率、市值等上百个字段apple.financials、apple.balance_sheet、apple.cashflow则分别给出利润表、资产负债表和现金流。财务数据解析的代码集中在 yfinance/scrapers/ 目录从雅虎原始报文到标准表格的转换都在那里完成。汇报时能加分的两个彩蛋数据交差之后如果你还想要点超出预期的素材yfinance 还有两块平时少有人写的能力实时行情。它的 WebSocket 模块能订阅多只股票的价格推送成交后几乎实时回调。适合做盯盘小工具或量化信号的盘中触发代码在 yfinance/live.py。条件筛选器。Screener支持你写出市盈率低于 20、市值大于 50 亿的美股这类查询直接返回候选列表不用自己下载全市场再过滤。实现在 yfinance/screener/ 目录。别忘了这个库自己也是门生意yfinance 能在雅虎接口频繁改动时持续可用靠的不是运气而是一套规范的开发流程。它采用标准的 main / dev / feature / bugfix 多分支管理新功能先在分支上开发验证稳定后才合并历史数据修复规则这类高风险改动尤其谨慎如果你想参与贡献或了解它的质量控制方式可以从 CONTRIBUTING.md 和 tests/ 目录读起——几十个测试文件覆盖了数据修复、并发下载、时区处理等几乎所有核心行为。用之前记住三件小事最后给你三句过来人的提醒都能让你少踩坑第一历史数据是 T1 更新的昨天的行情今天凌晨才能拿到实时数据符合雅虎公开政策通常有约 15 分钟延迟做日内高频交易别指望它。第二复权价默认开启auto_adjustTrue时返回的 Adj Close 已经处理过分红拆股做长期收益分析直接用即可。第三数据仅供个人学习与研究商用前务必查阅雅虎财经的使用条款尊重上游规则项目才能活得久。现在你可以试试这样装好 yfinance跑一遍yf.Ticker(你关注的股票).history(period1mo)看一眼最近一个月的 K 线。从一条命令到一张图从一张图到一套自己的分析流程往往就差这五分钟。【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考