
yfinance 实战指南3 个步骤免费获取全球股票行情数据【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinanceyfinance 是一个基于 Python 的开源库专门用来从雅虎财经公开接口下载股票、指数、基金等市场数据全程无需注册、无需付费、也不需要 API 密钥。读完这篇文章你不仅能完成安装并拉取第一份行情还能掌握批量抓取、异常数据自动修复和常见报错排查最快 5 分钟就能搭起属于自己的数据管道。一张可疑的价格表让我开始较真数据质量去年做回测时我发现一只英国股票连着几天的收盘价全是 0.15可前后一天明明写着 14.55。起初我以为是网络抖动导致下载出错重试了三次结果依旧。后来查资料才明白雅虎偶尔会把英镑和便士搞混让价格出现整整 100 倍的偏差。类似的坑还有分红日没做调整、拆股日价格断层、成交量整段消失……如果你的分析恰好建立在这些坏数据上结论自然站不住脚。这正是 yfinance 让人安心的原因之一它把数据清洗内置进了下载流程能在取数时自动识别并修正这类异常。上图是官方文档里 AET.L 的真实案例左侧连续几行 0.15 的价格被自动修正到 14.55 附近前后量级恢复一致不再污染你的回测结果。手动整理行情数据的三个硬伤以及它的解法在遇到 yfinance 之前我试过各种土办法去拿数据它们各有各的麻烦对比维度传统做法使用 yfinance数据获取爬网页解析表格页面一改版就全部失效一行代码调用统一接口复权处理自己维护分红和拆股日历逐日手工折算auto_adjust 与 repair 参数自动完成多市场支持每个市场一套格式需要写大量兼容代码全球市场统一返回 Pandas 结构表格里的核心差别很清晰传统方案把大量时间花在取数据和洗数据上而 yfinance 把这两件事都压缩成了参数。省下来的时间你理应花在分析本身。三步上手从安装到批量下载只需要几分钟第一步安装在终端执行一行命令pip install yfinance依赖的 pandas、numpy 等库会一并装好全程不需要配置任何密钥或账号。第二步拉取单只股票的历史行情import yfinance as yf # 创建一个 Ticker 对象代表苹果公司 aapl yf.Ticker(AAPL) # 拉取 2023 年全年日线数据返回 Pandas DataFrame df aapl.history(start2023-01-01, end2023-12-31) print(df.tail())预期结果一个包含 Open、High、Low、Close、Volume 等列的表索引是带时区的日期。一句话解释Ticker.history()是获取单只证券历史数据最直接的入口start/end与period两种时间写法任选其一。第三步一条命令批量下载多只股票import yfinance as yf # 一次下载多只股票period 控制时间范围repair 开启自动修复 data yf.download([AAPL, MSFT, NVDA], period1y, group_byticker, repairTrue, progressFalse) # 单独取出某只股票的收盘价序列 print(data[NVDA][Close].head())预期结果一个带多层列名的面板数据可以用data[股票代码]直接切片。一句话解释yf.download()底层使用多线程并行请求比 for 循环逐只拉取快得多是批量场景的首选入口。至此你的基础数据管道已经通了 ✅。进阶提升让脏数据自动变干净并避开三个常见坑自动修复而不是手动补数据在history()或download()中传入repairTrue就会对返回结果做一轮体检覆盖缺失的分红调整、漏掉的拆股调整、100 倍错价等场景。被修过的行会打上标记方便你核对import yfinance as yf # 下载容易出错的 AET.L并开启自动修复 df yf.download(AET.L, period3mo, repairTrue, progressFalse) # 只看被修复过的行 print(df[df[Repaired?] True].tail())预期结果Repaired?列标注出被修正的记录你可以据此确认修复范围。完整的修复规则说明写在项目文档docs/advanced/price_repair.rst中值得专门翻一翻。上图演示了拆股场景某日发生 1:10 拆股后更早的价格会被统一折算保证整条序列前后可比不会出现一夜腰斩的假象。坑一分钟级数据拿不到历史现象用interval1m想拉几个月的数据结果只有最近一小段。 原因雅虎对分钟级数据只保留最近 60 天这是接口本身的限制。 正确做法分钟数据搭配period1d或5d使用需要更长历史时改用日线或周线。坑二报错找不到时区YFTzMissingError现象运行时抛出时区缺失错误或者返回的时间索引带错了时区。 原因本地缓存的时区表过期或者安装的版本过旧。 正确做法先升级到最新版必要时用yf.set_tz_cache_location()重新指定缓存目录。坑三批量下载时个别股票返回 NaN现象多只股票一起下载时个别代码对应的数据全是空值。 原因代码本身无效或请求过于密集触发了限流。 正确做法让yf.download自带线程并行处理对单个失败项用 try/except 捕获后跳过不要死磕。使用 yfinance 的 6 条最佳实践清单需要复权价做策略分析时保持默认auto_adjustTrue要还原真实成交价再改为False。研究分红和拆股记录用ticker.dividends、ticker.splits或给history()加actionsTrue。数据异常先别急着手动修先试repairTrue并留意返回里的Repaired?列。抓多只股票优先走yf.download批量接口别写 for 循环逐个请求。分钟级数据最多回溯 60 天做跨年回测请改用日线、周线或月线。只需要当前价、市值这类快照信息时用ticker.fast_info它比info更轻量、响应更快。现在轮到你了从安装到批量下载核心其实只有三行关键代码从拿到数据到确保数据可信也只需多传一个repairTrue。yfinance 把金融数据获取的门槛压到了最低——不需要密钥不需要翻半天文档更不必为数据质量提心吊胆。下一步建议你选一只自己真正感兴趣的股票比如你持仓的那只用文中的代码跑一遍先看历史行情再开启修复对照差异最后把它接进你的投资组合监控脚本。数据就是力量而 yfinance 就是那把免费的钥匙 。【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考