我想知道是否有人设法将SDMX-XML文件读入数据帧.我想阅读的文件是https://www.ecb.europa.eu/stats/sdmx/icpf/1/data/pension_funds.xml(1mb).我将文件保存为"pensions_funds.xml"到pwd并尝试使用XML包来读取它:
fileName <- system.file("pensions", "pensions_funds.xml", package="XML")
parsed<-xmlTreeParse("pension_funds.xml",getDTD=F)
r<-xmlRoot(parsed)
tmp = xmlSApply(r, function(x) xmlSApply(x, xmlValue))
Run Code Online (Sandbox Code Playgroud)
上面的几行基本上遵循这里的例子http://www.omegahat.org/RSXML/gettingStarted.html 但我想我首先需要以某种方式忽略标题(我已经粘贴在文件的前几页下面)我想读书.所以我认为上面的内容可能会起作用,但它会从错误的节点开始.我想抓住他们的time_period和ref_area索引的obs_values.
第一件事就是找到正确的节点然后从那里开始,但是我怀疑我可能是傻瓜的事,因为我对数据格式知之甚少,而且我不确定XML包可以用于SDMX-XML文件.更聪明的人似乎试图这样做 http://opensdmxdevelopers.wikispaces.com/RSDMX 我找不到这个包在其主页上下载 https://r-forge.r-project.org/projects/rsdmx / (我看不到任何链接/下载部分但也许我是盲目的)它似乎是早期阶段.rsdmx的存在建议使用xml包来读取sdmx可能并不容易,所以我准备在这个阶段放弃,除非任何人都成功了.其实我主要对阅读这个文件感兴趣 http://www.ecb.europa.eu/stats/sdmx/bsi/1/data/outstanding_amounts.xml 但是这是一个10mb的文件,所以我开始变小了.
edit3 使用Mischa注释库("XML")中的更改尝试sgibb对大文件的回答
url <- "http://www.ecb.europa.eu/stats/sdmx/bsi/1/data/outstanding_amounts.xml"
sdmxHandler <- function() {
## data.frame which stores results
data <- data.frame(stringsAsFactors=FALSE)
## counter to store current row
i <- 1
## temp value to store current REF_AREA
## temp value to store current REF_AREA
refArea <- NA
bsItem <- NA
bsCountSector <- NA
## handler subroutine for …Run Code Online (Sandbox Code Playgroud) 我坚持使用SDMX,因为我找不到足够的资源来学习(编程代码)SDMX.
喜欢:-
Creating structure
Reading Structure
Writing data .. etc
Run Code Online (Sandbox Code Playgroud)
是的,其个人网站上有一些指南,但这些还不足以开始使用sdmx.所以,如果您有任何经验,请向我所有朋友提出我的个人要求,请分享.
任何帮助将不胜感激
我正在开始使用 python 和 pandas 来分析来自欧盟统计局等统计机构的数据。我发现有两种方法可以从欧盟统计局获取数据。
我使用免费的 Azure 笔记本、在线服务,但我不认为这会让我的情况变得更加复杂。
让我解释一下pandas_datareader的问题。根据 pandas 文档,在 API 部分中,有一个简短的文档包并且它可以工作。除了所示的示例(效果很好)之外,其他表也会出现问题。例如,我可以通过以下简单的代码获取有关欧洲房价的数据,其ID表是prc_hpi_a:
import pandas_datareader.data as web
import datetime
df = web.DataReader('prc_hpi_a', 'eurostat')
Run Code Online (Sandbox Code Playgroud)
但该表包含三种类型的住宅数据:总计、现有和新建。我只得到现有的住宅,我不知道如何得到其他的。您有针对这些类型的过滤的解决方案吗?
其次是使用pandasdmx 的路径。这里就比较复杂了。我的想法是将所有数据上传到 pandas DataFrame,然后我可以根据需要进行分析。说起来容易,但我没有找到很多教程来解释这段话:将数据上传到 pandas 结构。例如,我找到了这个教程,但我坚持第一步,即实例化客户端:
import pandasdmx
from pandasdmx import client
#estat=client('Eurostat', 'milk.db')
Run Code Online (Sandbox Code Playgroud)
它返回:
-------------------------------------------------- ------------------------- ImportError Traceback (最近一次调用最后一次) in () 1 import pandasdmx ----> 2 from pandasdmx import client 3 estat=client('欧盟统计局', 'milk.db')
导入错误:无法导入名称“client”
这里有什么问题?我环顾四周但没有解决这个问题 …