求助:Pandas Datareader无法读取tickers列表中的股票代码
Hey there! Let's break down why you're hitting this roadblock and fix it step by step—no overly complex jargon, promise.
核心原因:Google Finance的数据源已失效
Google shut down its official Finance API years ago, and the Google Finance integration in pandas-datareader has long been deprecated(废弃). Any code that uses 'google' as the data source parameter (like web.DataReader(tickers, 'google', start, end)) simply won't work anymore. That's the main reason your ticker list isn't being read correctly—there's no working endpoint to send the request to.
适合新手的替代方案
Since you're new to Python, I'll recommend the easiest, most reliable options:
1. 使用yfinance(最推荐)
yfinance是一个维护良好的库,替代了旧的Yahoo Finance API,用法和pandas-datareader几乎一致,上手超简单:
- 先用pip安装:
pip install yfinance - 然后用这段代码拉取你的股票数据:
import yfinance as yf import datetime # 你的股票代码列表 tickers = ['AAPL', 'MSFT', 'GOOG'] start_date = datetime.datetime(2023, 1, 1) end_date = datetime.datetime(2023, 12, 31) # 拉取数据 stock_data = yf.download(tickers, start=start_date, end=end_date) print(stock_data.head())
运行后会返回一个pandas DataFrame,包含你需要的所有价格数据,完全符合你对pandas-datareader的预期。
2. 使用Alpha Vantage(如果坚持用pandas-datareader)
如果你想继续用pandas-datareader,Alpha Vantage是一个免费的替代选择(你只需要在官网申请一个免费API密钥):
- 先确保安装了pandas-datareader:
pip install pandas-datareader - 去Alpha Vantage官网申请免费API密钥(2分钟就能搞定),然后用这段代码:
import pandas_datareader.data as web import datetime tickers = ['AAPL'] start = datetime.datetime(2023, 1, 1) end = datetime.datetime(2023, 12, 31) api_key = 'YOUR_FREE_API_KEY' # 替换成你的密钥 data = web.DataReader(tickers, 'av-daily', start=start, end=end, api_key=api_key) print(data.head())
注意:免费版Alpha Vantage有请求频率限制,适合小批量股票代码的查询。
总结
别再在失效的Google Finance集成上浪费时间了——yfinance对Python新手来说是最省心的选择,文档完善,能可靠满足大部分股票数据需求。
内容的提问来源于stack exchange,提问作者MakoTheShark




