使用PANDAS或Plotly绘制SDMX数据的最简单方法是什么?
我有以下代码:
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在尝试绘制时,我最终得到了以下错误
fig = px.line(df, x="TIME_PERIOD", y='', title='Life expectancy in Country: Denmark')
fig.show()如下所示:
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的新手,所以我非常感谢每一条对我有帮助的评论。
发布于 2020-07-08 23:26:05
我认为你的主要问题是因为你的df是多索引的。我不确定这是否是您要实现的目标,但您可以尝试以下代码:
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()

https://stackoverflow.com/questions/62796681
复制相似问题