yfinance 快速上手指南:用 Python 拉取雅虎财经行情数据
【免费下载链接】yfinanceDownload market data from Yahoo! Finance's API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance
如果你写过几行 pandas,就想把股票的历史价格、财务报表或实时行情装进 DataFrame,那 yfinance 就是干这个的。它是一个 Python 库,专门从雅虎财经的公开 API 下载市场数据——pip一条命令装好,几行代码就能跑起来。
30 秒了解项目 🧭
它不是交易软件,而是数据工具:把雅虎财经上的行情、财报、期权数据变成 pandas 表格,方便你用 Python 继续加工。适合做金融研究、写分析脚本的 Python 新手和普通开发者。
核心价值:3 行代码,把一只股票一整年的日线数据装进一个 DataFrame。
三步上手:yfinance 安装与快速上手 📦
第 1 步,安装。在终端执行:
pip install yfinance第 2 步,拉数据。这就是最短的可用示例:
import yfinance as yf msft = yf.Ticker("MSFT") hist = msft.history(period="1y") print(hist.tail())第 3 步,当表格用。返回的就是标准 pandas DataFrame,hist["Close"].mean()这类操作直接可用。到这里,你已经会用它拉历史行情了。
它能帮你做什么 🎯
常用入口一览:
| 你想做的事 | 入口 |
|---|---|
| 查一只票 | yf.Ticker |
| 一批票逐个查 | yf.Tickers |
| 批量下载行情 | yf.download |
| 实时盯盘 | yf.WebSocket/yf.AsyncWebSocket |
| 搜代码、查资讯 | yf.Search |
拉一只股票的历史行情:3 行 Python 代码
Ticker对象几乎包办单只股票的所有事:
history(period="1y")拉日线,也能换interval="1h"拉小时线;balance_sheet、cashflow拿资产负债表和现金流;info是公司概况,option_chain(...)拿期权链。
属性直接取,不用关心背后的请求细节。
批量下载多只股票的行情数据
一个字符串里空格隔开代码即可:
data = yf.download("SPY AAPL", period="1mo")想要每只票的列分开放,传group_by="ticker";票多的时候加threads=True开多线程,速度明显更快。
实时盯盘:订阅 WebSocket 行情推送
def handler(message): print(message) with yf.WebSocket() as ws: ws.subscribe(["AAPL", "BTC-USD"]) ws.listen(handler)有AsyncWebSocket可以写进 async 程序里,用法基本一致。
雅虎的数据不干净?用 repair 自动修复
非美国市场的数据经常出问题:分红没调整、拆股没处理,甚至美元/便士搞混导致价格差 100 倍。加个repair=True参数,yfinance 会尝试自动修复,还会多出一列Repaired?标记被改过的行:
不知道代码?先搜一下
yf.Search("AAPL", max_results=10).quotes能返回匹配的报价列表,.news拿相关新闻,适合当代码字典用。
一个真实例子:用组合权重算年化收益 📈
痛点:你手上有四只票,每月想算一次组合收益和波动率,手动对表太费劲。
解法:批量下载收盘价,交给 pandas 算。
import yfinance as yf weights = {"AAPL": 0.3, "MSFT": 0.25, "GOOGL": 0.25, "AMZN": 0.2} prices = yf.download(" ".join(weights), period="1y")["Close"] returns = prices.pct_change().dropna() port = returns @ list(weights.values()) print("年化收益:", port.mean() * 252, " 年化波动:", port.std() * 252**0.5)效果:两行数字就是组合的年化收益与年化波动率,数据还能直接喂给后续的画图或回测流程。
避坑提醒 ⚠️
- yfinance 是非官方开源工具,与雅虎没有关联,数据使用权以雅虎的使用条款为准。
- 雅虎 API 仅面向个人使用,别拿它当商业产品的数据源。
- 非美国市场数据质量更差,建议加
repair=True,尤其拉伦敦、港股的票时。 - 查币种以
Ticker.history_metadata['currency']为准,别信Ticker.info。 - 返回数据依赖 pandas 和 numpy,这两个库必须先装好。
- 控制请求频率,别写死循环一口气打上千只票,容易把自己封了。
yfinance 干的就是把雅虎财经的数据搬进 Python 这件事——装好它,你离第一张行情表只差三行代码。接下来建议翻翻仓库里的 doc/source/reference/ 目录,每个组件都配了可直接运行的示例脚本,照着抄一遍基本就熟了。
【免费下载链接】yfinanceDownload market data from Yahoo! Finance's API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考