标签: sdmx

将sdmx-xml文件读入R中的数据帧

我想知道是否有人设法将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)

xml r dataset sdmx

6
推荐指数
1
解决办法
2796
查看次数

统计数据和元数据交换(SDMX)

我坚持使用SDMX,因为我找不到足够的资源来学习(编程代码)SDMX.

喜欢:-

 Creating structure
 Reading Structure
 Writing data .. etc 
Run Code Online (Sandbox Code Playgroud)

是的,其个人网站上有一些指南,但这些还不足以开始使用sdmx.所以,如果您有任何经验,请向我所有朋友提出我的个人要求,请分享.

任何帮助将不胜感激

xml schema xsd xml-parsing sdmx

5
推荐指数
0
解决办法
983
查看次数

欧盟统计局的 pandas 数据挖掘

我正在开始使用 python 和 pandas 来分析来自欧盟统计局等统计机构的数据。我发现有两种方法可以从欧盟统计局获取数据。

  • pandas_datareader:看起来很容易使用,但我发现获取一些特定数据时存在一些问题
  • pandasdmx:我发现它有点复杂,但它似乎是一个有前途的解决方案,但文档很差

我使用免费的 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”

这里有什么问题?我环顾四周但没有解决这个问题 …

python pandas pandas-datareader sdmx

5
推荐指数
1
解决办法
5169
查看次数

标签 统计

sdmx ×3

xml ×2

dataset ×1

pandas ×1

pandas-datareader ×1

python ×1

r ×1

schema ×1

xml-parsing ×1

xsd ×1