无法读取加拿大统计局 sdmx 文件

Cannot read Statistics Canada sdmx file

我正在尝试从 Statistics Canada 中读取一些加拿大人口普查数据 (“加拿大、省和地区”地理级别的 XML 选项)。我看到 xml 文件是 SDMX 格式,并且提供了一个结构文件,但我不知道如何从 xml 文件中读取数据。

Python里面好像有2个选项,pandasdmx和sdmx1,都说可以读取本地文件。当我尝试

import sdmx

datafile = '~/Documents/Python/Generic_98-401-X2016059.xml'

canada = sdmx.read_sdmx(datafile)

它似乎读取了前 903 行,然后产生了以下内容:

Traceback (most recent call last):
  File "/home/username/.local/lib/python3.10/site-packages/sdmx/reader/xml.py", line 238, in read_message
    raise NotImplementedError(element.tag, event) from None
NotImplementedError: ('{http://www.SDMX.org/resources/SDMXML/schemas/v2_0/message}GenericData', 'start')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/username/.local/lib/python3.10/site-packages/sdmx/reader/__init__.py", line 126, in read_sdmx
    return reader().read_message(obj, **kwargs)
  File "/home/username/.local/lib/python3.10/site-packages/sdmx/reader/xml.py", line 259, in read_message
    raise XMLParseError from exc
sdmx.exceptions.XMLParseError: NotImplementedError: ('{http://www.SDMX.org/resources/SDMXML/schemas/v2_0/message}GenericData', 'start')

发生这种情况是因为我没有加载 sdmx 文件的结构(Structure_98-401-X2016059.xml 在上面的 StatsCan link 的 zip 文件中)?如果是这样,我该如何加载它并告诉 sdmx 在阅读时使用它 datafile?

sdmx 和 pandasdmx 的文档只显示了从在线提供商加载文件的示例,而不是从本地文件加载文件的示例,所以我被卡住了。我对 python 的了解有限,因此非常感谢任何帮助。

作为参考,我可以使用 rsdmx github 中的说明在 R 中读取文件。我希望能够在 Python.

中执行 same/similar

提前致谢。

从对文档的粗略检查来看,加拿大统计局似乎不是默认包含的来源之一。但是有一个 sdmx.add_source 函数。我建议您尝试一下(在加载数据之前)。

As per the sdmx1 developer,StatsCan 使用旧的、不受支持的 SDMX 版本(2.0 版)。当前版本为 2.1,rsdmx1 仅支持此版本(支持也将针对即将推出的 v.3)。