- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开始一项工作,使用 python 和 pandas 分析来自 Eurostat 等统计机构的数据。我发现有两种方法可以从 Eurostat 获取数据。
我使用免费的 Azure 笔记本,online service ,但我认为这不会使我的情况更加复杂。
让我解释一下 pandas_datareader 的问题。根据 Pandas 文档,in the section API , 有 this short documented package它有效。除了显示的示异常(exception),它工作得很好,但其他表会出现问题。例如,我可以获得关于 European house price 的数据, 哪个 ID 表是 prc_hpi_a 用这个简单的代码:
import pandas_datareader.data as web
import datetime
df = web.DataReader('prc_hpi_a', 'eurostat')
但是该表具有关于住宅的三种类型的数据:TOTAL、EXISTING 和 NEW。我只有现房,我不知道如何获得其他的。您是否有针对这些类型过滤的解决方案。
其次是使用 pandasdmx 的路径。这里比较复杂。我的想法是将所有数据上传到一个pandas DataFrame,然后我可以随意分析。说起来容易,但是我没找到很多教程解释这段话:upload data to pandas structures。比如我找到this tutorial ,但我坚持第一步,即实例化一个客户端:
import pandasdmx
from pandasdmx import client
#estat=client('Eurostat', 'milk.db')
它返回:
--------------------------------------------------------------------------- ImportError Traceback (most recent call last) in () 1 import pandasdmx ----> 2 from pandasdmx import client 3 estat=client('Eurostat', 'milk.db')
ImportError: 无法导入名称'client'
这里有什么问题?我环顾四周,但没有解决这个问题
我也关注了this tutorial :
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)
但是如果我尝试获取其他数据表,它就不起作用了。让我用另一个关于 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 (most recent call last) in () 2 metadata = estat.datastructure('DSD_prc_hicp_midx').write() 3 resp = estat.data('prc_hicp_midx') ----> 4 data = resp.write(s for s in resp.data.series if 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 in getattr(self, name) 622 Make Message attributes directly readable from Response instance 623 ''' --> 624 return getattr(self.msg, name) 625 626 def _init_writer(self, writer):
AttributeError: 'DataMessage' object has no attribute 'data'
为什么现在获取不到数据?现在怎么了?
我几乎花了一天时间四处寻找一些明确的例子和解释。你有什么建议吗?是否有完整清晰的文档?我还发现了this page与其他例子一起,解释了分类方案的使用,但它不适用于欧盟统计局(如在某些时候解释的那样)
除了一些已解释的问题外,这两种方法都可以使用,但我还需要一个建议来确定使用的方法,查询 Eurostat 以及许多其他机构,如经合组织、世界银行等...您能否指导我找到一个明确且可行的解决方案,即使每个机构的解决方案都不一样?
最佳答案
这是我对我的问题的明确回答,适用于从 Eurostat 收集的每种类型的数据。我在这里发帖是因为它对很多人都有用。
让我提出一些例子。他们生成了三个带有数据和正确时间索引的 pandas 系列(EU_unempl、EU_GDP、EU_intRates)
#----Unemployment Rate---------
dataEU_unempl=pd.read_json('http://ec.europa.eu/eurostat/wdds/rest/data/v2.1/json/en/ei_lmhr_m?geo=EA&indic=LM-UN-T-TOT&s_adj=NSA&unit=PC_ACT',typ='series',orient='table',numpy=True) #,typ='DataFrame',orient='table'
x=[]
for i in range(int(sorted(dataEU_unempl['value'].keys())[0]),1+int(sorted(dataEU_unempl['value'].keys(),reverse=True)[0])):
x=numpy.append(x,dataEU_unempl['value'][str(i)])
EU_unempl=pd.Series(x,index=pd.date_range((pd.to_datetime((sorted(dataEU_unempl['dimension']['time']['category']['index'].keys())[(sorted(int(v) for v in dataEU_unempl['value'].keys())[0])]),format='%YM%M')), periods=len(x), freq='M')) #'1/1993'
#----GDP---------
dataEU_GDP=pd.read_json('http://ec.europa.eu/eurostat/wdds/rest/data/v2.1/json/en/namq_10_gdp?geo=EA&na_item=B1GQ&s_adj=NSA&unit=CP_MEUR',typ='series',orient='table',numpy=True) #,typ='DataFrame',orient='table'
x=[]
for i in range((sorted(int(v) for v in dataEU_GDP['value'].keys())[0]),1+(sorted((int(v) for v in dataEU_GDP['value'].keys()),reverse=True))[0]):
x=numpy.append(x,dataEU_GDP['value'][str(i)])
EU_GDP=pd.Series(x,index=pd.date_range((pd.Timestamp(sorted(dataEU_GDP['dimension']['time']['category']['index'].keys())[(sorted(int(v) for v in dataEU_GDP['value'].keys())[0])])), periods=len(x), freq='Q'))
#----Money market interest rates---------
dataEU_intRates=pd.read_json('http://ec.europa.eu/eurostat/wdds/rest/data/v2.1/json/en/irt_st_m?geo=EA&intrt=MAT_ON',typ='series',orient='table',numpy=True) #,typ='DataFrame',orient='table'
x=[]
for i in range((sorted(int(v) for v in dataEU_intRates['value'].keys())[0]),1+(sorted((int(v) for v in dataEU_intRates['value'].keys()),reverse=True))[0]):
x=numpy.append(x,dataEU_intRates['value'][str(i)])
EU_intRates=pd.Series(x,index=pd.date_range((pd.to_datetime((sorted(dataEU_intRates['dimension']['time']['category']['index'].keys())[(sorted(int(v) for v in dataEU_intRates['value'].keys())[0])]),format='%YM%M')), periods=len(x), freq='M'))
关于python - Eurostat 的 pandas 数据挖掘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50390889/
pandas.crosstab 和 Pandas 数据透视表似乎都提供了完全相同的功能。有什么不同吗? 最佳答案 pivot_table没有 normalize争论,不幸的是。 在 crosstab
我能找到的最接近的答案似乎太复杂:How I can create an interval column in pandas? 如果我有一个如下所示的 pandas 数据框: +-------+ |
这是我用来将某一行的一列值移动到同一行的另一列的当前代码: #Move 2014/15 column ValB to column ValA df.loc[(df.Survey_year == 201
我有一个以下格式的 Pandas 数据框: df = pd.DataFrame({'a' : [0,1,2,3,4,5,6], 'b' : [-0.5, 0.0, 1.0, 1.2, 1.4,
所以我有这两个数据框,我想得到一个新的数据框,它由两个数据框的行的克罗内克积组成。正确的做法是什么? 举个例子:数据框1 c1 c2 0 10 100 1 11 110 2 12
TL;DR:在 pandas 中,如何绘制条形图以使其 x 轴刻度标签看起来像折线图? 我制作了一个间隔均匀的时间序列(每天一个项目),并且可以像这样很好地绘制它: intensity[350:450
我有以下两个时间列,“Time1”和“Time2”。我必须计算 Pandas 中的“差异”列,即 (Time2-Time1): Time1 Time2
从这个 df 去的正确方法是什么: >>> df=pd.DataFrame({'a':['jeff','bob','jill'], 'b':['bob','jeff','mike']}) >>> df
我想按周从 Pandas 框架中的列中累积计算唯一值。例如,假设我有这样的数据: df = pd.DataFrame({'user_id':[1,1,1,2,2,2],'week':[1,1,2,1,
数据透视表的表示形式看起来不像我在寻找的东西,更具体地说,结果行的顺序。 我不知道如何以正确的方式进行更改。 df示例: test_df = pd.DataFrame({'name':['name_1
我有一个数据框,如下所示。 Category Actual Predicted 1 1 1 1 0
我有一个 df,如下所示。 df: ID open_date limit 1 2020-06-03 100 1 2020-06-23 500
我有一个 df ,其中包含与唯一值关联的各种字符串。对于这些唯一值,我想删除不等于单独列表的行,最后一行除外。 下面使用 Label 中的各种字符串值与 Item 相关联.所以对于每个唯一的 Item
考虑以下具有相同名称的列的数据框(显然,这确实发生了,目前我有一个像这样的数据集!:() >>> df = pd.DataFrame({"a":range(10,15),"b":range(5,10)
我在 Pandas 中有一个 DF,它看起来像: Letters Numbers A 1 A 3 A 2 A 1 B 1 B 2
如何减去两列之间的时间并将其转换为分钟 Date Time Ordered Time Delivered 0 1/11/19 9:25:00 am 10:58:00 am
我试图理解 pandas 中的下/上百分位数计算,但有点困惑。这是它的示例代码和输出。 test = pd.Series([7, 15, 36, 39, 40, 41]) test.describe(
我有一个多索引数据框,如下所示: TQ bought HT Detailed Instru
我需要从包含值“低”,“中”或“高”的数据框列创建直方图。当我尝试执行通常的df.column.hist()时,出现以下错误。 ex3.Severity.value_counts() Out[85]:
我试图根据另一列的长度对一列进行子串,但结果集是 NaN .我究竟做错了什么? import pandas as pd df = pd.DataFrame([['abcdefghi','xyz'],
我是一名优秀的程序员,十分优秀!