ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

3 步把 yfinance 数据导出成 CSV 和 Excel:从股价到财务报表

3 步把 yfinance 数据导出成 CSV 和 Excel:从股价到财务报表 3 步把 yfinance 数据导出成 CSV 和 Excel从股价到财务报表【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance你从雅虎财经拉了股票数据结果要交报告、发给同事却卡在这堆数据怎么存成文件这一步。yfinance 就是干这个的Python 库里最常被用来下载雅虎财经的股价、财务报表等市场数据拿到的都是标准 pandas DataFrame存成 CSV、Excel 各只要一行代码。这篇文章能直接上手的一行命令把历史股价存成 CSV 文件把利润表、资产负债表、现金流量表写进同一个 Excel 的不同工作表批量下载多只股票并修复导出前发现的价格跳变快速跑通一条命令装好1 分钟出第一份 CSV pip install yfinance装完打开 Python核心入口就是Ticker类——每只股票对应一个对象数据都从它身上取import yfinance as yf apple yf.Ticker(AAPL) hist apple.history(period1y) # 取近 1 年的日线 hist.to_csv(apple_stock_data.csv)运行后当前目录会多出apple_stock_data.csv里面是日期、开高低收、成交量、分红和拆股记录Excel 能直接打开。Ticker类就定义在 yfinance/ticker.py想扩展别的接口可以从这里看起。把财务报表导出成 Excel 多工作表做季度报告的人最熟悉这种场景利润表、资产负债表、现金流量表分属三张表却要塞进同一个工作簿里给财务同学对比。pandas 的ExcelWriter正好能一次写入多个工作表import yfinance as yf import pandas as pd msft yf.Ticker(MSFT) with pd.ExcelWriter(msft_financial_data.xlsx) as writer: # 每张报表写进独立工作表 msft.income_stmt.to_excel(writer, sheet_nameIncome Statement) msft.balance_sheet.to_excel(writer, sheet_nameBalance Sheet) msft.cash_flow.to_excel(writer, sheet_nameCash Flow)产出的msft_financial_data.xlsx里有三个工作表跨表做公式和图表都不用再合并文件。income_stmt、balance_sheet、cash_flow这三个属性的实现都在 yfinance/ticker.py 中取数逻辑可以顺着源码往下看。批量导出多只股票用 download 一行搞定股票不止一只的时候别一只一只循环Ticker。顶层函数yf.download直接接收多个代码返回一个带多级列的宽表列按股票代码 字段组织import yfinance as yf data yf.download(SPY AAPL MSFT, period3mo) data.to_csv(watchlist_3mo.csv)watchlist_3mo.csv里三行表头股票、字段对应三列一组用 Excel 的从表格创建透视表或 pandas 的stack都能很快拆成扁表。想每只股票单独一个文件就改用yf.Tickers(AAPL MSFT GOOG)再遍历更多批量写法在 doc/source/reference/examples/ 目录里都有现成脚本。导出前先修数据100 倍价格错误和除息跳变 数据本身有坑的时候先导出再修等于白干。雅虎接口偶尔会把某段时间的价格整体放大 100 倍肉眼很难发现对比Close和Adj Close就能发现异常区间再用repair一键修复hist yf.Ticker(AET).history(period1y) print(hist.repair()) # 查看检测到的异常 hist hist.repair().copy() # 原地修复后导出 hist.to_csv(aet_1d_fixed.csv)另一种常见情况是分红日Adj Close缺失、导致价格序列在除息日断崖式下跌同样走repair流程补齐检测与修复的具体算法都在 yfinance/utils.py想确认修复到底改动了哪些列读这个文件比看文档更快。踩坑与排错导出的 CSV 用 Excel 打开中文乱码症状文件名或表头带中文双击打开全是å开头的乱码。修复hist.to_csv(数据.csv, encodingutf_8_sig)原因Excel 默认按本地编码Windows 下多为 GBK读 CSVutf_8_sig会带 BOM 头Excel 就能自动识别成 UTF-8。分钟级数据超过 10 年取不全症状interval1m加上很长period返回的只有一小段或干脆报错。修复按 7 天以内的窗口分段下载再拼接chunks [yf.Ticker(AAPL).history(starts, ende, interval1m) for s, e in segments] # segments 为分段日期区间 data pd.concat(chunks)原因雅虎接口对分钟级数据的单次返回窗口有上限分段是官方文档推荐的做法。财务报表导出后行名挤在一列不好用症状income_stmt.to_excel(...)导出的表指标名全堆在左上角的索引区没法筛选排序。修复转置后再导出行名就变成普通一列了msft.income_stmt.T.reset_index().rename( columns{index: Indicator}).to_excel(msft_income.xlsx)原因这些报表的行索引是指标名如Total Revenue索引列不进数据区reset_index把它降级成普通列即可参与筛选。下一步更多导出场景——期权链、基金持仓、实时行情——都有现成脚本可抄直接翻 doc/source/reference/examples/ 目录每个文件都能独立运行。贡献流程写得很细想给项目加功能可以从 CONTRIBUTING.md 看起。打开终端把你手里那只股票的数据先跑成一份 CSV。【免费下载链接】yfinanceDownload market data from Yahoo! Finances API项目地址: https://gitcode.com/GitHub_Trending/yf/yfinance创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表