Python3.6使用Quandl、pandas获取当前股票价格失败求助
嘿,我来帮你搞定这个从Quandl获取股票数据的问题!你的代码目前有几个小问题,我一步步帮你修复:
问题修复与完整方案
1. 补全代码并简化日期处理
你代码里current_day那行没写完,应该是strftime("%d"),不过其实完全没必要把日期拆成单独的年、月、日整数——直接用datetime对象传给数据读取器会更简洁,也不容易出错。
2. Quandl数据访问的关键注意点
现在用pandas_datareader调用Quandl需要两个前置操作:
- 先安装依赖包:
pip install quandl pandas-datareader - 去Quandl官网免费注册,获取你的API密钥,否则会被限制访问
3. 完整可运行的代码
我把整个流程整理好了,包含用户输入起始日期、格式转换、数据获取和异常处理:
import datetime as dt import pandas_datareader.data as web import quandl # 替换成你自己的Quandl API密钥 quandl.ApiConfig.api_key = "YOUR_QUANDL_API_KEY" def fetch_stock_data(ticker, start_date_str): # 把用户输入的yyyymmdd格式字符串转成datetime对象 start_date = dt.datetime.strptime(start_date_str, "%Y%m%d") # 获取当前日期 end_date = dt.datetime.now() try: # 从Quandl获取数据,注意WIKI数据集部分已迁移,若失效可换EOD数据集 stock_data = web.DataReader(ticker, 'quandl', start_date, end_date) # 反转数据让最新日期排在最后(Quandl默认返回的是倒序) stock_data = stock_data.iloc[::-1] print(f✅ 成功获取{ticker}从{start_date_str}到{end_date.strftime("%Y%m%d")}的股票数据:") print(stock_data.head()) return stock_data except Exception as e: print(f❌ 获取数据失败:{str(e)}") return None # 示例调用 target_ticker = 'TSLA' user_start_date = input("请输入起始日期(格式yyyymmdd):") fetch_stock_data(target_ticker, user_start_date)
备选方案:用yfinance替代Quandl
如果觉得Quandl的API密钥配置麻烦,也可以用yfinance库(无需密钥,更稳定),代码如下:
import datetime as dt import yfinance as yf def fetch_stock_data_yfinance(ticker, start_date_str): start_date = dt.datetime.strptime(start_date_str, "%Y%m%d") end_date = dt.datetime.now() # 直接下载数据 stock_data = yf.download(ticker, start=start_date, end=end_date) print(f✅ 成功获取{ticker}从{start_date_str}到{end_date.strftime("%Y%m%d")}的股票数据:") print(stock_data.head()) return stock_data # 示例调用 target_ticker = 'TSLA' user_start_date = input("请输入起始日期(格式yyyymmdd):") fetch_stock_data_yfinance(target_ticker, user_start_date)
内容的提问来源于stack exchange,提问作者Landscape
相关产品推荐
相关产品推荐

