在 Plotly Express 中使用 Pandas 索引
Use Pandas index in Plotly Express
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: Value of 'x' is not the name of a column in 'data_frame'.
Expected one of ['sepal_length', 'sepal_width', 'petal_length',
'petal_width', 'species', 'species_id'] but received: index
丑修复
import plotly.express as px
iris = px.data.iris().reset_index()
fig = px.scatter(iris, x="index", y="sepal_length")
fig.show()
您只能在 px.scatter() 的 x 和 y 参数处传递列名。虹膜数据集中似乎没有名为 "index" 的列。
您可以将其留空,如下所示:
import plotly.express as px
iris = px.data.iris()
fig = px.scatter(iris, y="sepal_length")
fig.show()
参考: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()
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: Value of 'x' is not the name of a column in 'data_frame'. Expected one of ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species', 'species_id'] but received: index
丑修复
import plotly.express as px
iris = px.data.iris().reset_index()
fig = px.scatter(iris, x="index", y="sepal_length")
fig.show()
您只能在 px.scatter() 的 x 和 y 参数处传递列名。虹膜数据集中似乎没有名为 "index" 的列。
您可以将其留空,如下所示:
import plotly.express as px
iris = px.data.iris()
fig = px.scatter(iris, y="sepal_length")
fig.show()
参考: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()