澳大利亚统计局 SDMX 超时问题
Australian Bureau of Statistics SDMX timeout issue
我正在尝试使用 pandasdmx 下载澳大利亚统计局的数据。
我可以使用 SDMX 下载 ERP_COB 没问题,但对于 SA2、年龄和性别的 ERP,我收到超时错误。
我已将时间段限制为 2018 年,但仍在计时 out.The 奇怪的是它有时有效但大部分时间无效。
我想尝试限制年龄或性别等参数,但不确定如何执行此操作。
任何帮助将不胜感激。
提前致谢。
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')
如果您打开日志记录,
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 联系。
很大程度上要感谢 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')
我正在尝试使用 pandasdmx 下载澳大利亚统计局的数据。 我可以使用 SDMX 下载 ERP_COB 没问题,但对于 SA2、年龄和性别的 ERP,我收到超时错误。 我已将时间段限制为 2018 年,但仍在计时 out.The 奇怪的是它有时有效但大部分时间无效。 我想尝试限制年龄或性别等参数,但不确定如何执行此操作。 任何帮助将不胜感激。
提前致谢。
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')
如果您打开日志记录,
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 联系。
很大程度上要感谢 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')