Я начинаю работу по анализу данных из статистических институтов, таких как Евростат, с использованием python и т. Д. Pandas. Я выяснил, что есть два способа получить данные от Евростата.
- pandas_datareader: кажется, очень легко использовать, но я обнаружил некоторые проблемы с получением некоторых конкретных данных
- pandasdmx: я нашел это немного сложным, но это кажется многообещающим решением, но документация оставляет желать лучшего.
Я использую бесплатный блокнот Azure, онлайн-службу, но не думаю, что это еще больше усложнит мою ситуацию .
Позвольте мне объяснить проблемы для pandas_datareader. Согласно документации pandas, в разделе API существует этот короткий документированный пакет, и он работает. Помимо показанного примера, который прекрасно работает, возникает проблема с другими таблицами. Например, я могу получить данные о цене на жилье в Европе, таблица идентификаторов prc_hpi_a с этим простым кодом:
import pandas_datareader.data as web
import datetime
df = web.DataReader('prc_hpi_a', 'eurostat')
Но в таблице есть три типа данных о жилищах: ИТОГО, СУЩЕСТВУЮЩИЕ и НОВЫЕ. У меня есть только Существующие дома, и я не знаю, как получить другие. У вас есть решение для таких видов фильтрации.
Во-вторых, есть путь с использованием pandasdmx. Здесь все сложнее. Моя идея состоит в том, чтобы загрузить все данные в DataFrame pandas, а затем я могу анализировать, как захочу. Легко сказать, но я не нашел много руководств, объясняющих этот отрывок: загрузка данных в структуры pandas. Например, я нашел это руководство, но я остановился на первом шаге, а именно на создании экземпляра клиента:
import pandasdmx
from pandasdmx import client
#estat=client('Eurostat', 'milk.db')
и он возвращает:
-------------------------------------------------- ------------------------- ImportError Traceback (последний вызов последний) в () 1 import pandasdmx ----> 2 from pandasdmx import client 3 estat = client ('Евростат', 'milk.db')
ImportError: невозможно импортировать имя «клиент»
В чем проблема? Я осмотрелся, но ответа на эту проблему нет
Я также следил за этим руководством:
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')]
Я получил данные, но моя цель - загрузить их в структуру pandas (Series, DataFrame и т. Д.), Чтобы я мог легко справиться с моей работой. Как это сделать? Собственно я сделал с этой рабочей строкой (ниже предыдущих):
s=pd.DataFrame(data)
Но это не сработает, если я попытаюсь получить другие таблицы данных. Позвольте мне пояснить еще один пример о текущей цене гармонизированного индекса таблица:
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 (последний вызов последний) в () 2 metadata = estat.datastructure ('DSD_prc_hicp_midx'). Write ( ) 3 resp = estat.data ('prc_hicp_midx') ----> 4 data = resp.write (s для s в resp.data.series, если s.key.COICOP == 'CP00') 5 # metadata.codelist 6 # data.loc [:, ('ИТОГО', 'INX_Q', 'EA', 'Q')]
~ / anaconda3_501 / lib / python3.6 / site-packages / pandasdmx / api.py в getattr (self, name) 622 Сделать атрибуты сообщения доступными для чтения непосредственно из экземпляра ответа 623 '' '-> 624 return getattr (self.msg, name) 625 626 def _init_writer (self, writer):
AttributeError: объект DataMessage не имеет атрибута data
Почему он не получает данные сейчас? Что случилось сейчас?
Я потерял почти день, ища ясные примеры и объяснения. У вас есть что предложить? Есть полная и понятная документация? Я также нашел эту страницу с другими примерами, объясняющими использование категориальных схем, но это не для Евростата (как объяснялось в какой-то момент)
Оба метода могут работать, за исключением некоторых объясненных проблем, но мне также нужно предложение, чтобы иметь определенный метод для использования, чтобы запросить Евростат, а также многие другие учреждения, такие как ОЭСР, Всемирный банк и т. Д. а рабочее решение, даже если оно для каждого заведения разное?