【问题标题】:Use Pandas index in Plotly Express在 Plotly Express 中使用 Pandas 索引
【发布时间】:2019-07-24 08:10:28
【问题描述】:

Plotly Express 允许我轻松地绘制 pandas 数据框,如他们的示例中所述。我不想对 x 使用命名列,对 y 使用命名列,而是对 x 使用数据框的索引,对 y 使用命名列。

使用命名列的示例

import plotly.express as px
iris = px.data.iris()
fig = px.scatter(iris, x="sepal_width", y="sepal_length")
fig.show()

我想要什么(虚假示例)

import plotly.express as px
iris = px.data.iris()
fig = px.scatter(iris, x="index", y="sepal_length")
fig.show()

这显然会抛出:

ValueError:“x”的值不是“data_frame”中列的名称。 预期 ['sepal_length'、'sepal_width'、'petal_length' 之一, 'petal_width', 'species', 'species_id'] 但收到:索引

丑陋的修复

import plotly.express as px
iris = px.data.iris().reset_index()
fig = px.scatter(iris, x="index", y="sepal_length")
fig.show()

【问题讨论】:

  • 你的“丑陋修复”是今天推荐的方法:)
  • @nicolaskruchten 使用我自己的数据(来自一些网络抓取的熊猫框架)我发现“丑陋的修复”也是要走的路。因此,我建议将您的答案(连同指向一些官方文档的链接(我在该案例中一无所获))作为官方答案。
  • @StefanQ 我希望在接下来的几周内真正增加对这种事情的支持:)
  • 欢迎发表以上评论作为答案,我会做相应的标记。让您轻松让社区保持最新状态!

标签: python pandas plotly plotly-python


【解决方案1】:

参考:https://plot.ly/python/px-arguments/#using-the-index-of-a-dataframe

您可以将索引作为参考显式传递。

所以在你的情况下,这将是:

import plotly.express as px
iris = px.data.iris()
fig = px.scatter(iris, x=iris.index, y="sepal_length")
fig.show()

--

额外问题:如果iris 有一个pd.MultiIndex 怎么办?

使用pd.MultiIndex.get_level_values

import plotly.express as px

# dummy example for multiindex
iris = px.data.iris().set_index(['species', 'species_id', iris.index])

fig = px.scatter(
   iris, 
   x=iris.index.get_level_values(2), 
   y="sepal_length"
)

fig.show()

【讨论】:

  • 这也适用于 DatetimeIndex 吗?我目前在这个问题上遇到了一些困难
  • 请注意,这个geature是在plotly 4.1版之后添加的(必须更新才能工作)。
【解决方案2】:

您可以简单地将其留空,如下所示:

import plotly.express as px
iris = px.data.iris()
fig = px.scatter(iris, y="sepal_length")
fig.show()

【讨论】:

  • 这不使用x轴的索引!它使用range(iris.index.size) 作为 X 轴。
【解决方案3】:

您只能在 px.scatter() 的 x 和 y 参数处传递列名。 iris 数据集中似乎没有名为“index”的列。

【讨论】:

  • 感谢您的回复。这就是我想用我的虚假例子来指出的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2019-11-04
  • 2021-10-21
  • 2020-08-11
  • 1970-01-01
  • 2015-06-02
  • 2020-11-01
相关资源
最近更新 更多