yfinance 数据导出:2 种格式、4 步落盘,把股价 CSV 和财务 Excel 一次备齐
【免费下载链接】yfinanceDownload market data from Yahoo! Finance's API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance
周五下午的部门周会,你要交一份 Excel 里装着三只股票半年 K 线、外加利润表的数据包。平时手抄数据根本来不及,用 yfinance 把股价拉成 CSV、把财务报表写进 Excel,两三个文件就能搞定。这篇文章按真实干活流程走一遍数据导出,从装库、落盘到排坑,全部用日常写法。
环境:一条命令装库,一个概念够你开工
pip install yfinance装完就可以开工。整个库里最高频的对象是Ticker,把它理解成一只股票的遥控器:股价、财务报表、公司信息,都是对它喊一声就返回的。类定义在 yfinance/ticker.py 里,源码不复杂,想细看随时翻。
股价数据导出为 CSV:日常最高频的一步
想拿 AAPL 最近一年的日线,存下来给同事用:
import yfinance as yf t = yf.Ticker("AAPL") hist = t.history(period="1y") hist.to_csv("AAPL_1y.csv", encoding="utf_8_sig") # 带 BOM,避免乱码这一行to_csv就把 DataFrame 落盘了,输出文件里是 Date、Open、High、Low、Close、Volume 这几列,Excel 直接能打开。
财务报表写入 Excel 多工作表:三个 Sheet 一次写清
周会上领导看的不是 K 线,是利润表和现金流量表。yfinance 的 Ticker 直接暴露了这三张表的属性,配合ExcelWriter可以一个工作簿写三个 Sheet:
import yfinance as yf msft = yf.Ticker("MSFT") with ExcelWriter("MSFT_financials.xlsx") as writer: msft.income_stmt.reset_index().to_excel(writer, sheet_name="Income Statement") msft.balance_sheet.reset_index().to_excel(writer, sheet_name="Balance Sheet") msft.cash_flow.reset_index().to_excel(writer, sheet_name="Cash Flow")三张表各占一个工作表,跨表拉公式、做图表都方便;reset_index()顺手把多级索引拍平,Excel 里不会看到一行空白的索引列。
批量导出多只股票 + 定时下载:别再手动循环
三只股票别写 for 循环,Tickers一次就能拉齐:
import yfinance as yf tickers = yf.Tickers("AAPL MSFT GOOG") data = tickers.history(period="3mo") # 一次拉齐多只股票 for name, df in data.items(): df.to_csv(f"{name}_3mo.csv")想每天收盘后自动跑,把上面几行存成脚本,Linux 上交给 crontab 定个时间就行,这就是 yfinance 定时下载的全部套路;Windows 用任务计划程序也一样。更多批量处理写法在 doc/source/reference/examples/ 里,脚本都是直接能跑的。
数据看着不对?两个高频坑 🐛
价格断崖式跳了一下
K 线里某一天收盘价突然往下跳一截,多半是那天发了股息或者拆股,原始价格没做调整。打开auto_adjust就能自动复权:
hist = t.history(period="5y", auto_adjust=True)复权就是把历史上每次分红、拆股按系数回算进价格,序列连续之后才适合算收益率。下图是修复前后对比,红框处正是除息日缺了调整量导致的跳变。
复权逻辑在 yfinance/utils.py 里,想看细节可以翻这个文件。
CSV 打开中文列名全是乱码
Windows 版 Excel 默认按本地编码读 CSV,普通 UTF-8 的中文列名会全变乱码。导出时指定带 BOM 的编码即可:
hist.to_csv("数据.csv", encoding="utf_8_sig")往哪走
仓库doc/source/reference/examples/目录里有下载、搜索、板块查询等成篇示例脚本,照着改就能上手。想要盘中实时数据,可以再看yfinance/live.py里的 WebSocket 接口,比轮询省事。
【免费下载链接】yfinanceDownload market data from Yahoo! Finance's API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考