Я начинаю работу по анализу данных таких институтов статистики, как Евростат, используя python и т. Д. Панд.Я обнаружил, что есть два способа получения данных из Евростата.
- 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')
Но в таблице есть три типаданные о жилищах: ВСЕГО, СУЩЕСТВУЮЩИХ и НОВЫХ.Я получил только Существующие жилища , и я не знаю, как получить другие.У вас есть решение для этих типов фильтрации.
Во-вторых, есть путь с использованием pandasdmx .Здесь все сложнее.Моя идея состоит в том, чтобы загрузить все данные в DataFrame панды, а затем я могу анализировать, как я хочу.Легко сказать, но я не нашел много уроков, объясняющих этот отрывок: загрузите данные в структуры панд.Например, я нашел этот учебник , но я застрял на первом шаге, то есть для создания экземпляра клиента:
import pandasdmx
from pandasdmx import client
#estat=client('Eurostat', 'milk.db')
и он возвращает:
--------------------------------------------------------------------------- ImportError Traceback (последний вызов был последним) в () 1 import pandasdmx ----> 2из клиента импорта pandasdmx 3 estat = client ('Eurostat', 'milk.db')
ImportError: невозможно импортировать имя 'client'
В чем здесь проблема?Я посмотрел вокруг, но не нашел ответа на эту проблему
Я также следовал этому руководству :
from pandasdmx import Request
estat = Request('ESTAT')
metadata = estat.datastructure('DSD_une_rt_a').write()
metadata.codelist.iloc[8:18]
resp = estat.data('une_rt_a', key={'GEO': 'EL+ES+IE'}, params={'startPeriod': '2007'})
data = resp.write(s for s in resp.data.series if s.key.AGE == 'TOTAL')
data.columns.names
data.columns.levels
data.loc[:, ('PC_ACT', 'TOTAL', 'T')]
Я получил данные, но моя цель - загрузить ихк структуре панд (Series, DataFrame и т. д.), так что я могу легко справиться со своей работой.Как это сделать?На самом деле я сделал с этой рабочей строкой (ниже предыдущих):
s=pd.DataFrame(data)
Но это не сработает, если я попытаюсь получить другие таблицы данных.Позвольте мне объяснить на другом примере таблицу Harmonized Index Current Price :
estat = Request('ESTAT')
metadata = estat.datastructure('DSD_prc_hicp_midx').write()
resp = estat.data('prc_hicp_midx')
data = resp.write(s for s in resp.data.series if s.key.COICOP == 'CP00')
Здесь возвращается ошибка, а именно:
--------------------------------------------------------------------------- AttributeError Traceback (последний вызов был последним) в () 2 metadata = estat.datastructure ('DSD_prc_hicp_midx'). Write () 3 соответственно= estat.data ('prc_hicp_midx') ----> 4 data = resp.write (s для s в resp.data.series, если s.key.COICOP == 'CP00') 5 # metadata.codelist 6 #data.loc [:, ('TOTAL', 'INX_Q', 'EA', 'Q')]
~ / anaconda3_501 / lib / python3.6 / site-packages / pandasdmx / api.py в getattr (self, name) 622 Сделать атрибуты сообщения непосредственно читаемыми из экземпляра Response 623 '' '-> 624 return getattr (self.msg, name) 625 626 def _init_writer (self, writer):
AttributeError: у объекта «DataMessage» нет атрибута «data»
Почему он не получает данные сейчас?Что не так сейчас?
Я потерял почти целый день, ища какие-то наглядные примеры и объяснения.У вас есть что предложить?Есть ли полная и понятная документация?Я нашел также эту страницу с другими примерами, объясняющими использование категориальных схем, но это не для Евростата (как объяснено в какой-то момент)
Оба метода могли бы работать, кроме некоторых объясненных проблем, но мне также нужно предложение определенно использовать метод для запроса Евростата, а также многих других учреждений, таких как ОЭСР, Всемирный банк и т. Д. Не могли бы вы мне помочь?к окончательному и рабочему решению, даже если оно отличается для каждого учреждения?