在 Plotly Express 中使用 Pandas 索引

Lau*_*nol 21 python pandas plotly plotly-python

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()
Run Code Online (Sandbox Code Playgroud)

我想要什么(虚假示例)

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

这显然抛出:

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()
Run Code Online (Sandbox Code Playgroud)

syl*_*ong 23

参考: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()
Run Code Online (Sandbox Code Playgroud)

——

奖金问题:如果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()
Run Code Online (Sandbox Code Playgroud)

  • 这也适用于 DatetimeIndex 吗?我目前在这个问题上遇到一些困难 (2认同)

小智 8

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

import plotly.express as px
iris = px.data.iris()
fig = px.scatter(iris, y="sepal_length")
fig.show()
Run Code Online (Sandbox Code Playgroud)

  • 这不使用 x 轴的索引!它使用“range(iris.index.size)”作为 X 轴。 (7认同)