yfinance 数据导出 4 个实战场景:股价存 CSV、财报存 Excel

yfinance 数据导出 4 个实战场景:股价存 CSV、财报存 Excel yfinance 数据导出 4 个实战场景股价存 CSV、财报存 Excel【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance这篇文章基于开源项目 yfinance按 4 个真实场景演示 yfinance 数据导出的完整做法留存股价快照、整理财务三表、批量落盘一篮子标的、修复历史价格。每个场景只给最小可运行代码读完即可照做。若尚未安装先在终端执行pip install yfinance。一行代码留存股价快照操作步骤用股票代码创建Ticker对象调history()方法按时间窗口取行情表最后用 pandas 的to_csv()落盘。只涉及两个关键参数period控制时间范围1y表示近一年max为全部历史interval控制颗粒度1d即日线。最小代码下面这段代码把 AAPL 近一年的日线数据存到当前目录的aapl_1y.csv文件里包含日期、开盘、最高、最低、收盘、成交量等列。import yfinance as yf aapl yf.Ticker(AAPL) hist aapl.history(period1y, interval1d) hist.to_csv(aapl_1y.csv)可能踩的坑⚠️ 代码写错或该区间无交易时hist是空表导出前先用len(hist)确认to_csv后在 Excel 里打开出现乱码时补上encodingutf_8_sig参数。多 Sheet 写入财务三表 Excel操作步骤Ticker对象的income_stmt、balance_sheet、cash_flow三个属性直接返回年度利润表、资产负债表、现金流量表的 DataFrame实现见 yfinance/ticker.py。用 pandas 的ExcelWriter作上下文管理器把三张表写进同一个工作簿的三个工作表离开with块时自动保存关闭。写入 Excel 需先装引擎pip install openpyxl。最小代码下面代码取 MSFT 的年度三张财报用reset_index()把财年索引摊平成普通列写入msft_3stmts.xlsx的Income、Balance、CashFlow三个工作表。import yfinance as yf import pandas as pd msft yf.Ticker(MSFT) with pd.ExcelWriter(msft_3stmts.xlsx) as writer: msft.income_stmt.reset_index().to_excel(writer, sheet_nameIncome) msft.balance_sheet.reset_index().to_excel(writer, sheet_nameBalance) msft.cash_flow.reset_index().to_excel(writer, sheet_nameCashFlow)可能踩的坑⚠️ 三张表的列财年可能起止不一致跨表对比前留意索引年份要按季度看就换用quarterly_income_stmt这类属性。一篮子标的批量下载落盘操作步骤多只标的同时处理时用模块级的yf.download()把多个代码用空格拼成一个字符串传入底层由 yfinance/multi.py 统一发起请求。group_byticker会让股票代码成为列的第一层之后用df[AAPL]就能单挑出一只标的不传该参数时列按字段名混排。最小代码下面代码把 SPY、AAPL、MSFT 近三个月的日线存成一个 CSV行是日期列按标的分组。import yfinance as yf df yf.download(SPY AAPL MSFT, period3mo, group_byticker) df.to_csv(basket_3mo.csv)可能踩的坑⚠️ 某只代码写错不会中断整体下载只会让该标的的列全是 NaN建议落盘前用df.isna().all(axis0)检查一下哪只缺数据。用 repair 修复价格跳变与缺口操作步骤Yahoo 原始数据偶有问题个别日期收盘价高出百倍、漏做分红或拆股调整导致价格跳变、整行缺失。history()提供repairTrue开关检测到异常后自动用更细颗粒度重建对应区间并在结果表加一列Repaired?标出被修复的行更多修复类型与原理见 doc/source/advanced/price_repair.rst。最小代码下面代码取 AAPL 五年日线并开启修复先打印被修复的行数再把结果存盘。import yfinance as yf aapl yf.Ticker(AAPL) hist aapl.history(period5y, repairTrue) print(hist[Repaired?].sum()) hist.to_csv(aapl_5y_repaired.csv)下图是 8TRA.DE 修复前后的对比2023-06-02 该股票分红 0.7但 Yahoo 未下调前一交易日的 Adj Close价格序列出现断档修复后该列被重新调整。可能踩的坑⚠️repair会按小时级粒度重抓受影响区间只对最近几天开开关既慢又没必要建议放在较长时间范围上一次性跑完并存盘避免反复抓取。下一步可以做什么想减少重复抓取开销可以看文档advanced/caching.rst里的缓存机制完整 API 与更多可运行示例从 doc/source/index.rst 入手。遇到报价异常的标的仓库tests/data/目录存放了多组坏数据与修复结果的 CSV 对照文件编写自己的校验脚本时可以直接参考。【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考