ValueError:使用带有 seaborn 线图的索引时无法解释输入“索引”

Posted

技术标签:

【中文标题】ValueError:使用带有 seaborn 线图的索引时无法解释输入“索引”【英文标题】:ValueError: Could not interpret input 'index' when using index with seaborn lineplot 【发布时间】:2019-02-14 20:05:46 【问题描述】:

我希望使用 pandas DataFrame 的索引作为 seaborn 图的 x 值。但是,这会引发值错误。

一个小测试示例:

import pandas as pd
import seaborn as sns
sns.lineplot(x='index',y='test',hue='test2',data=pd.DataFrame('test':range(9),'test2':range(9)))

它引发:

ValueError: Could not interpret input 'index'

不能将索引用作 x 值吗?我究竟做错了什么? Python 2.7,海生 0.9

【问题讨论】:

【参考方案1】:

我宁愿以这种方式使用它。您需要删除hue,因为我认为它有不同的用途,不适用于您当前的DataFrame,因为您只有一行。访问官方文档here 了解更多信息。

df=pd.DataFrame('test':range(9),'test2':range(9))
sns.lineplot(x=df.index, y='test', data=df)

输出

【讨论】:

或者,您可以按照Seaborn on calculated value df = df.reset_index() 中的说明重置索引。【参考方案2】:

您需要确保提供给x 参数的字符串实际上是数据框中的。最简单的解决方案是重置数据框的索引以将索引转换为列。

sns.lineplot(x='index', y='test', data=pd.DataFrame('test':range(9),'test2':range(9)).reset_index())

【讨论】:

【参考方案3】:

我知道这是一个老问题,也许当时还不存在,但有一种更简单的方法可以实现这一点:

如果您只是将数据帧中的一个系列作为“数据”参数传递,seaborn 将自动使用索引作为 x 值。

sns.lineplot(data=df.column1)

【讨论】:

以上是关于ValueError:使用带有 seaborn 线图的索引时无法解释输入“索引”的主要内容,如果未能解决你的问题,请参考以下文章

Seaborn:带有频率的计数图()

尝试使用 Seaborn 从 DataFrame 列绘制单变量分布时,“ValueError:无法一起广播操作数”

ValueError:无法解释 seaborn 中的输入

创建 seaborn 热图时“无法将字符串转换为浮点数”ValueError

Seaborn ValueError:零大小数组到没有标识的缩减操作最小值

收到“ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。”创建seaborn catplot时[重复]