gpt4 book ai didi

python - 如何绘制按另一列分组的数据?

转载 作者:太空宇宙 更新时间:2023-11-03 20:57:35 26 4
gpt4 key购买 nike

我一直遇到一个问题,即我按某些列对数据进行分组,但我无法弄清楚如何按我分组的数据进行绘图。

Here is my Data

例如,

import plotly.plotly as py
import plotly.graph_objs as go

xs = df['region'].values
ys = df['AveragePrice'].values
data = [go.Bar(
x=xs,
y=ys,
marker={
'color': ys,
'colorscale': 'Viridis'
}
)]

layout = {
'xaxis': {
'categoryorder': 'array',
'categoryarray': [x for _, x in sorted(zip(ys, xs))]
}
}

fig = go.FigureWidget(data=data, layout=layout)
fig

这可行,但没有显示我真正想要的。 ^

import plotly.plotly as py
import plotly.graph_objs as go
df1 = df.groupby(['region'])['AveragePrice'].mean()
xs = df1['region'].values
ys = df1['AveragePrice'].values
data = [go.Bar(
x=xs,
y=ys,
marker={
'color': ys,
'colorscale': 'Viridis'
}
)]

layout = {
'xaxis': {
'categoryorder': 'array',
'categoryarray': [x for _, x in sorted(zip(ys, xs))]
}
}

fig = go.FigureWidget(data=data, layout=layout)
fig

这给了我一个关键错误。 ^

最佳答案

您需要将 .reset_index() 添加到 groupby 调用中。如果没有 pandas 就不可能有唯一的 pd.Series 而不是一个可以调用诸如 region 之类的列的表:

region
A 1.340
B 1.005
C 1.280
Name: AveragePrice, dtype: float64

因此,为了绘图,您需要将 groupby 调用的输出转换回 pd.DataFrame。如果没有它,您就无法将 xy 分配给列,因为不存在这样的列。你会得到这个错误:

KeyError: 'region'

使用.reset_index():

(df1 = df.groupby(['region'])['AveragePrice'].mean().reset_index())

  region  AveragePrice
0 A 1.340
1 B 1.005
2 C 1.280

这里你得到了pd.DataFrame,你可以像之前的代码块一样操作它(将x分配给一列,y) 到另一个,等等)。您的代码将完成并获得条形图,其中包含 x 上的 region 值以及 y每个 region 上所有值的平均值.

关于python - 如何绘制按另一列分组的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55909193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com