首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PANDAS或plot打印SDMX

使用PANDAS或plot打印SDMX
EN

Stack Overflow用户
提问于 2020-07-08 22:06:41
回答 1查看 65关注 0票数 2

使用PANDAS或Plotly绘制SDMX数据的最简单方法是什么?

我有以下代码:

代码语言:javascript
复制
import pandasdmx as sdmx 
import plotly.express as px

df = sdmx.Request('OECD').data(
  resource_id='MEI_FIN',
  key='IR3TIB.GBR+USA.M',
  params={'startTime': '1900-06', 'dimensionAtObservation': 'TimeDimension'},
).write().reset_index()
df

在尝试绘制时,我最终得到了以下错误

代码语言:javascript
复制
fig = px.line(df, x="TIME_PERIOD", y='', title='Life expectancy in Country: Denmark')
fig.show()

如下所示:

代码语言:javascript
复制
ValueError: Value of 'y' is not the name of a column in 'data_frame'. Expected one of `[('TIME_PERIOD', '', ''), ('IR3TIB', 'GBR', 'M'), ('IR3TIB', 'USA', 'M')] but received:` 

我是python的新手,所以我非常感谢每一条对我有帮助的评论。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-08 23:26:05

我认为你的主要问题是因为你的df是多索引的。我不确定这是否是您要实现的目标,但您可以尝试以下代码:

代码语言:javascript
复制
import pandasdmx as sdmx 
import plotly.express as px

df = sdmx.Request('OECD').data(
  resource_id='MEI_FIN',
  key='IR3TIB.GBR+USA.M',
  params={'startTime': '1900-06', 'dimensionAtObservation': 'TimeDimension'},
).write().reset_index()

# with this we get rid of multi-index
# you could use a loop if you prefer I used
# list of comprehension

df.columns = ["_".join([c for c in col if c!='']) 
              for col in df.columns]

fig = px.line(df,
              x="TIME_PERIOD",
              y=['IR3TIB_GBR_M', 'IR3TIB_USA_M'],
              title='Life expectancy in GBR and USA')\
        .update_layout(title_x=0.5)
fig.show()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62796681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档