使用pandas_datareader读取FRED数据时报错:No timezone found
解决pandas_datareader读取FRED数据时的"GDP: No timezone found, symbol may be delisted"错误
问题重现
使用pandas_datareader从FRED读取GDP数据时,出现错误提示:GDP: No timezone found, symbol may be delisted,即使设置了ignore_tz=True也无法解决,代码如下:
import pandas_datareader.data as web import datetime start = datetime.datetime(2010, 1, 1) end = datetime.datetime(2022, 1, 27) gdp = web.DataReader('GDP', 'fred', start, end, ignore_tz=True)
解决方案
1. 升级pandas_datareader到最新版本
旧版本的pandas_datareader对FRED的时区处理存在兼容性问题,升级到最新版大概率能解决:
pip install --upgrade pandas-datareader
2. 调整查询的日期范围
GDP是FRED上的季度频率数据,仅在每个季度末发布数据点。原代码的结束日期2022-01-27不在数据发布节点上,可能触发时区相关的异常。将结束日期改为最近的季度末日期(比如2021-12-31)再尝试:
import pandas_datareader.data as web import datetime start = datetime.datetime(2010, 1, 1) end = datetime.datetime(2021, 12, 31) gdp = web.DataReader('GDP', 'fred', start, end)
3. 改用更稳定的fredapi库
如果上述方法都无效,推荐使用专门针对FRED的fredapi库,它的兼容性和稳定性更好:
首先安装库:
pip install fredapi
然后编写代码(需要在FRED官网免费注册获取API密钥):
from fredapi import Fred import datetime # 替换为你的FRED API密钥 fred = Fred(api_key='你的API密钥') start = datetime.datetime(2010, 1, 1) end = datetime.datetime(2022, 1, 27) gdp = fred.get_series('GDP', start=start, end=end)
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

