当前位置: 首页 > news >正文

5分钟免费获取股票数据:yfinance 完整上手指南

5分钟免费获取股票数据:yfinance 完整上手指南

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

上个月我想算算自己手里几只股票到底赚了多少,结果光是找历史行情就折腾了一整天:各大财经网站的数据格式五花八门,想要分红和拆分记录还得逐个注册账号,更别提那些动辄上千元一年的付费 API。直到我发现了 yfinance——一个能免费、快速、完整地从雅虎财经抓取股票行情、财务数据和实时报价的 Python 库,几行代码就解决了我全部的痛点。这篇文章就带你从零跑通它,并顺手搭一个你自己的"小投资仪表盘"。

一、先搞懂它到底是个什么

把雅虎财经想象成一家"数据食堂",里面什么菜都有:股票价格、分红、财报、期权……但后厨不会直接对你开放。yfinance 就是那个帮你取餐的外卖员——你只需说出菜名,它就跑进后厨端出一份打包整齐的餐盒。

整个过程只有四个角色:

你(说出想要的) → yfinance(下单+取餐) → 雅虎财经(数据后厨) → DataFrame(装好的餐盒)

这个"餐盒"就是 pandas 的 DataFrame,一种像 Excel 表格一样的数据结构。也就是说,你拿到手的不是乱七八糟的网页,而是一张可以直接算平均值、画曲线、做回测的标准表格。yfinance 替你包办了网络请求、解析、格式转换这些脏活累活,你要做的只是点菜。

二、三行命令,拿到第一份行情

安装它只需要一行命令:

pip install yfinance

装好后,跑通你的第一段代码:

import yfinance as yf msft = yf.Ticker("MSFT") hist = msft.history(period="1mo") print(hist.tail())

这段代码做了什么:它创建了一个微软(MSFT)的 Ticker 对象,拉取最近一个月的日线数据,然后打印最后几行。你会看到每天的开盘价、最高价、最低价、收盘价、成交量,以及自动复权后的 Adj Close。从安装到看到真实数据,全程不到 5 分钟。

三、主线实战:搭一个迷你投资仪表盘

光拿一只股票没意思,我们进入正题——做一个能算总资产的迷你投资仪表盘。功能按"新手→常用→进阶"三级递进,每一级都是独立可运行的代码。

新手级:单只股票的历史走势

import yfinance as yf aapl = yf.Ticker("AAPL") df = aapl.history(start="2023-01-01", end="2024-01-01") df["MA20"] = df["Close"].rolling(20).mean() # 顺手算个20日均线 print(df.tail())

这段代码做了什么:拉取苹果一整年的日线,并新增一列 20 日均线,方便你直接观察趋势。

常用级:批量下载,一次算清整个组合

循环一只只请求又慢又啰嗦,yfinance 提供了download()一键批量下载,内部还会自动并发加速:

import yfinance as yf portfolio = {"AAPL": 10, "MSFT": 5, "GOOGL": 3} data = yf.download(list(portfolio), period="1y", group_by="ticker") total = 0 for t, shares in portfolio.items(): price = data["Close"][t].iloc[-1] total += price * shares print(f"{t}: {shares}股 × {price:.2f} = {price * shares:.2f}") print(f"组合总市值: {total:.2f}")

这段代码做了什么:一次请求拿到三只股票一整年的数据,遍历每只股票取最新收盘价乘以持仓数,最后算出组合总市值。

进阶级:让 yfinance 帮你修复坏数据

雅虎财经的数据并不总是干净的,常见坑有:分红后没有调整价格、股票拆分后历史价格断层、甚至美元/分混用导致价格差了 100 倍。yfinance 内置了数据修复机制,一个参数就能开启:

import yfinance as yf data = yf.download("0700.HK", period="1y", repair=True) print(data[data["Repaired?"] == True]) # 只看被修复过的行

这段代码做了什么:下载腾讯控股一年的行情并开启修复,打印出所有被自动修正的日期和数值。返回结果里新增的Repaired?列会标出哪些行被动过。

上图就是一次典型的"价格 100 倍错误"修复演示:图表里有一段价格异常地低,repair 开启后 yfinance 会自动识别并把整段数据校准回正确水平。

四、翻车日志:我踩过的 3 个坑

初学阶段我把能踩的坑都踩了一遍,现在总结给你,帮你直接绕开。

坑 1:股票代码写错,返回空数据现象:history()返回空的 DataFrame,提示 No data found。 原因:雅虎财经的代码有自己的格式,港股、欧股都要带交易所后缀。 修复:把"腾讯"换成"0700.HK",把"阿里巴巴"换成"9988.HK""BABA"

坑 2:要了"一年前的每分钟数据"现象:yf.download("AAPL", period="1y", interval="1m")返回空表。 原因:分钟级日内数据最多只能回溯 60 天,这是雅虎的限制,不是 bug。 修复:分钟级数据用短周期period="5d",要看长期历史就换interval="1d"

坑 3:明明有分红,价格曲线却出现诡异跳变现象:某天收盘价突然跌了一大截,跟实际走势对不上。 原因:分红除权或货币单位混用导致的 100 倍错误,原样数据不可信。 修复:拉数据时加上repair=True,让 yfinance 自动把除权调整补回来。

像上图这样,某天发了分红但历史价格没有同步调整,yfinance 会检测出来并手动把 Adj Close 修正,保证整条曲线连续可比。

五、进阶组合技:把它的上限用起来

组合技 1:WebSocket 实时行情监控

download()拿到的是"过去",实时价格可以交给内置的 WebSocket 推送:

import yfinance as yf def on_price_update(ws, message): print("价格更新:", message) with yf.WebSocket() as ws: ws.subscribe(["AAPL", "MSFT"]) ws.listen(on_price_update)

这段代码做了什么:订阅苹果和微软的实时报价,每来一条新行情就打印一条。很适合写盘中小助手。

组合技 2:批量数据 + 自动缓存

yfinance 会把时区、ISIN 等信息缓存到本地,重复请求秒回。配合Tickers类可以同时管理多个对象:

tickers = yf.Tickers("AAPL MSFT GOOGL") for name in tickers.tickers: info = tickers.tickers[name].info print(name, info.get("longName"), info.get("currentPrice"))

组合技 3:把财报和期权也拉进来

历史行情只是冰山一角,同一只股票的财务报表、期权链、分析师目标价都是现成的:

apple = yf.Ticker("AAPL") print(apple.financials.head()) # 利润表 chain = apple.option_chain(apple.options[0]) print(chain.calls.head()) # 最近到期日的看涨期权

六、现在就开始

从"想分析股票"到"看到数据",yfinance 把中间所有麻烦都替你抹平了。现在就动手:安装 yfinance,用你的真实持仓跑一遍上面那个组合市值小脚本,你会立刻感受到"数据自由"的快乐。

想继续深入,这些地方值得收藏:

  • 官方文档:doc/source/index.rst,从安装到高级用法都有
  • 进阶教程:doc/source/advanced/,里面有缓存、多级列、价格修复等主题
  • 核心源码:yfinance/ticker.py(单只股票)、yfinance/multi.py(批量下载)、yfinance/live.py(实时行情)
  • 参考示例:doc/source/reference/examples/,每个场景都有可运行的例子
  • 想读源码仓库:git clone https://gitcode.com/GitHub_Trending/yf/yfinance

上图是项目自己的分支管理策略:main 放稳定版、dev 放开发版,功能分支和修复分支各司其职。这样一个高质量的开源项目,代码组织方式本身就值得你翻一翻学习。

数据是投资的起点,而 yfinance 把起点铺到了你的终端里。跑起来吧,第一个结果正在等你。

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

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

http://www.cnnetsun.cn/news/4073374.html

相关文章:

  • Windows Defender 移除全攻略:从一键脚本到预装镜像,10 分钟告别误报与卡顿
  • Qwen3.8-27B单卡部署实战:从环境搭建到应用集成
  • Proxmox VE虚拟机静默启动失败:AppArmor权限问题深度排查与解决
  • 免费开源AI简历编辑器Magic Resume快速上手:3分钟从空白页到专业简历
  • 增益操纵攻击:如何让稳定系统在不知不觉中走向危险
  • 数字隐写术入门:从LSB原理到Python实现与安全分析
  • Redis可视化工具Another RDM安装配置与核心功能实战指南
  • TVA-World架构:开启具身智能时代新纪元(14)
  • TVA-World架构:开启具身智能时代新纪元(7)
  • Python异步Redis客户端:原理、实践与FastAPI集成指南
  • 2027北京Ai算力液冷技术展(赛逸展):完整呈现算力液冷产业闭环
  • 研一如何快速进入科研状态?四个步骤帮你少走三个月弯路
  • Node.js安装与配置全指南:从零搭建JavaScript全栈开发环境
  • 零基础也能跑!Lens-Turbo-3.8B-bf16 文生图快速入门指南:5 分钟生成你的第一张 AI 图片
  • 抖音批量下载工具实战指南:去水印保存视频、图文与直播回放
  • DDrawCompat 完整使用指南:让 DirectX 1-7 老游戏在现代 Windows 上重获新生
  • 如何免费阅读Medium会员文章?装这款浏览器扩展,一招绕过付费墙
  • 键盘音效模拟器免费实测:普通键盘一秒拥有机械轴手感,零成本畅玩18套音效
  • 免费音乐聚合实战:10分钟装好MusicFree插件,一个播放器听遍全网资源
  • 零基础玩转lift-oQ4:用发票图片体验PDF转JSON的7个真实案例
  • 操作系统面试通关终极指南:基于Operating_System的30+高频面试题精讲
  • BetterJoy上手完全指南:让Switch手柄通吃PC游戏与模拟器的XInput映射方案
  • Equalizer APO 音频均衡器使用教程:5 步让你的 Windows 声音脱胎换骨
  • 百度文库免费下载一键激火,亲测可用
  • OpenCore Legacy Patcher 终极指南:让旧款 Mac 重获新生,畅跑最新 macOS
  • 引射器工程计算进阶:物性处理、损失系数与迭代策略实战解析
  • 计算机进制转换:从二进制到十六进制的核心原理与实战应用
  • awesome-unity-games解谜与平台篇:7款开源游戏源码,提升你的关卡设计思维
  • 亚马逊软件和亚马逊后台有什么区别?核心差异深度对比
  • xy-VSFilter光栅化器原理详解:高质量字幕描边与阴影特效的实现