You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pandasdmx包获取IMF的SMDX数据?

如何使用pandasdmx包获取IMF的SMDX数据?

我来帮你解决这个问题!你遇到的404错误是因为pandasdmx默认的IMF SDMX端点已经过时了——IMF现在的官方SDMX服务地址不是旧的sdmxcentral.imf.org,而是直接使用他们的REST API端点https://dataservices.imf.org/REST/SDMX_JSON.svc/。下面是具体的解决步骤和代码示例:

方法一:修正pandasdmx的IMF端点,直接请求目标数据

既然你已经明确知道要获取的数据集(PCPS)、指标组合(M.W00.PZINC)和时间范围(2021-2022),不需要先调用dataflow(),可以直接构造请求:

import pandasdmx as sdmx

# 初始化IMF请求,指定正确的API端点
imf = sdmx.Request(
    'IMF',
    url='https://dataservices.imf.org/REST/SDMX_JSON.svc/'
)

# 对应你原始查询的参数,直接请求数据
data_response = imf.data(
    resource_id='PCPS',  # 数据集代码,对应你URL里的PCPS
    key='M.W00.PZINC',   # 维度组合:频率(M=月度).经济体(W00=世界总和).指标(PZINC=锌价格指数)
    params={'startPeriod': '2021', 'endPeriod': '2022'}  # 时间范围
)

# 转换为易读的DataFrame格式
df = sdmx.to_pandas(data_response)
print(df)

方法二:如果想先查看可用数据流(可选)

如果你需要确认IMF提供的数据流/数据集代码,可以调用dataflow(),但同样要使用正确的端点:

# 获取PCPS数据集的详细数据流信息
flow_response = imf.dataflow(resource_id='PCPS')

# 或者获取IMF所有可用的数据流(数据量较大)
# flow_response = imf.dataflow()

替代方案:直接用requests调用IMF REST API

如果对SDMX的结构还是感到困惑,直接使用requests包调用你原来的查询URL会更直观,因为IMF的API支持直接返回JSON格式数据:

import requests
import pandas as pd

# 你原来的查询URL(替换为HTTPS更安全)
url = 'https://dataservices.imf.org/REST/SDMX_JSON.svc/CompactData/PCPS/M.W00.PZINC.?startPeriod=2021&endPeriod=2022'

response = requests.get(url)
data = response.json()

# 解析JSON数据为DataFrame
series_data = data['CompactData']['DataSet']['Series']
observations = series_data['Obs']

df = pd.DataFrame(observations)
# 转换时间和数值类型
df['TIME_PERIOD'] = pd.to_datetime(df['@TIME_PERIOD'])
df['VALUE'] = pd.to_numeric(df['@OBS_VALUE'])
df = df.set_index('TIME_PERIOD')['VALUE']

print(df)

关键说明

  1. 端点问题:这是你最初遇到404的核心原因——pandasdmx默认的IMF SDMX端点已经停用,必须手动指定https://dataservices.imf.org/REST/SDMX_JSON.svc/
  2. 参数对应关系:你原始URL里的PCPS/M.W00.PZINC分别对应data()方法里的resource_id和key参数,时间范围通过params传递
  3. SDMX结构理解:IMF的SDMX数据里,key是维度的组合(频率、经济体、指标等),不同数据集的维度顺序可能不同,你可以通过IMF的数据帮助文档确认维度规则

备注:内容来源于stack exchange,提问作者chamaoskurumi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 12:58:07