4

我正在尝试使用 pandasdmx 下载澳大利亚统计局的数据。我可以使用 SDMX 下载 ERP_COB 没问题,但对于 SA2 的 ERP,年龄和性别我收到超时错误。我将时间段限制为仅 2018 年,但仍然超时。奇怪的是它有时有效,但大多数情况下无效。我想尝试限制年龄或性别等参数,但不知道如何做到这一点。任何帮助将非常感激。

提前致谢。

from pandasdmx import Request

Agency_Code = 'ABS'
Dataset_Id = 'ABS_ERP_ASGS2016'
ABS = Request(Agency_Code)
data_response = ABS.data(resource_id='ABS_ERP_ASGS2016', params={'startTime': '2018','endTime': '2018'})
def timeout(self, value):
    self.client.config['timeout'] = 10000
ERP2018=data_response.write().unstack().reset_index()

ERP2018 = ERP2018[(ERP2018.REGIONTYPE =='AUS') | (ERP2018.REGIONTYPE =='STE')]

ERP2018.to_csv('c:\\Temp\\erp2018.csv')
4

2 回答 2

1

多亏了Anthony Kong,我才设法弄清楚了这一点。

我已经修改了 resource_id 以匹配 ABS 网站上给出的 URL,以对我的请求应用过滤器,以允许较小的请求并且没有超时。感谢 ABS 工作人员,我还被告知如何更改 ABS 超时值。见下文。

from pandasdmx import Request

Agency_Code = 'ABS'
Dataset_Id = 'ABS_ERP_ASGS2016'
ABS = Request(Agency_Code)
ABS.client.config['timeout'] = 100000
data_response = ABS.data(resource_id='ABS_ERP_ASGS2016/ERP.3+1+2.TT+A04+A59+A10+A15+A20+A25+A30+A35+A40+A45+A50+A55+A60+A65+A70+A75+A80+8599.AUS+STE..A/all?', params={'startTime': '2009','endTime': '2018'})

ERP2018=data_response.write().unstack().reset_index()

ERP2018.to_csv('c:\\Temp\\erp2018.csv')
于 2020-02-17T23:26:38.597 回答
0

如果您打开日志记录,

 import logging

 from pandasdmx import Request
 Agency_Code = 'ABS'
 Dataset_Id = 'ABS_ERP_ASGS2016'
 ABS = Request(Agency_Code, log_level=logging.INFO)

您可以看到该Request模块正在尝试从http://stat.data.abs.gov.au/sdmx-json/data/ABS_ERP_ASGS2016下载。如果你在浏览器中尝试这个 url,你会发现你没有从 ABS 服务器得到任何东西。

我认为您的 python 代码没有任何问题。

奇怪的是,没有上一年(2015 年)或下一年(2017 年、2018 年)的数据集。所以这个数据集似乎是一个奇怪的结果。

很可能是数据问题。您可以联系 pandasdmx 的维护人员或直接与 ABS 交谈。

于 2020-02-17T21:58:37.733 回答