我正在尝试创建一个包含多个数据的交互式散景图,但不确定为什么会出现错误
ValueError:预期为ColumnData(String,Seq(Any))的元素,得到了{'x':6.794,'y':46.8339999999999,'country':'刚果,Dem。代表”,“流行”:3.5083789999999997,“地区”:“撒哈拉以南非洲”}
source = ColumnDataSource(data={
'x' : data.loc[1970].fertility,
'y' : data.loc[1970].life,
'pop' : (data.loc[1970].population / 20000000) + 2,
'region' : data.loc[1970].region,
})
我已经尝试通过从excel导入数据来尝试两个不同的数据集,并且在发生这种情况的原因方面一直没有问题。
答案 0 :(得分:0)
顾名思义,ColumnDataSource
是用于存储数据列的数据结构。这意味着.data
中每个键的值都必须是一列,即Python列表,NumPy数组或Pandas系列。但是您正在尝试将纯数字指定为值,这就是错误消息告诉您的内容:
我正在尝试创建一个包含多个数据的交互式散景图,但不确定为什么会出现错误
期望ColumnData(String,Seq(Any))的元素
这表示可接受的期望值是将字符串映射到序列的命令。但是您通过的显然不是:
got {'x':6.794,'y':46.8339999999999,'country':'刚果民主共和国。代表”,“流行”:3.5083789999999997,“地区”:“撒哈拉以南非洲”}
例如x
的值只是数字6.794,而不是数组或列表等。
答案 1 :(得分:0)
这将是一个解决方案。我认为问题在于从df中获取数据。
source = ColumnDataSource(data={
'x' : data[data['Year'] == 1970]['fertility'],
'y' : data[data['Year'] == 1970]['life'],
'pop' : (data[data['Year'] == 1970]['population']/20000000) + 2,
'region' : data[data['Year'] == 1970]['region']
})
答案 2 :(得分:0)
您可以轻松地做到这一点:
source = ColumnDataSource({str(c): v.values for c, v in df.items()})
答案 3 :(得分:0)
我在使用相同的数据集时遇到了同样的问题。 我的解决方案是使用“Year”作为索引列在 Pandas 中导入 csv。
data = pd.read_csv(csv_path, index_col='Year')