无法读取加拿大统计局 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)。
我正在尝试从 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)。