如何通过yfinance获取股票历史市值?有无替代Python工具?
解决yfinance无法获取历史市值的方案及替代工具
一、用yfinance间接计算历史市值
yfinance确实没有直接提供历史市值的API,但可以通过历史股价 × 对应时期的流通股数间接计算,步骤如下:
- 获取目标时间段的历史股价数据
- 获取同期的历史流通股数数据
- 合并两者计算市值
代码示例:
import yfinance as yf import pandas as pd ticker = yf.Ticker('AAPL') # 获取过去4年的历史调整后收盘价 hist_price = ticker.history(period='4y')['Close'] # 获取对应时间段的历史流通股数 hist_shares = ticker.get_shares_full(start=hist_price.index[0], end=hist_price.index[-1]) # 合并数据并填充空缺(流通股数不会频繁变动) merged_data = pd.merge( hist_price, hist_shares, left_index=True, right_index=True, how='left' ).ffill() # 计算历史市值 merged_data['MarketCap'] = merged_data['Close'] * merged_data['Shares'] print(merged_data['MarketCap'])
二、替代yfinance的Python工具
如果需要更直接的历史市值数据,这些工具更适配需求:
- Alpha Vantage:提供免费的历史市值API,通过
TIME_SERIES_DAILY_ADJUSTED接口可获取含市值的每日数据,免费版有调用次数限制,适合小批量查询。 - Polygon.io:数据精度高,支持多资产类型,有专门的历史市值接口,免费版提供基础数据,付费版解锁更多高级功能。
- pandas-datareader:可对接Yahoo Finance、Alpha Vantage等多个数据源,封装简洁,适合和pandas生态结合,获取历史市值时可通过计算或对接对应数据源接口实现。
内容的提问来源于stack exchange,提问作者rulf
相关产品推荐
相关产品推荐

