Python 如何绘制';它被另一列分组了吗?

Python 如何绘制';它被另一列分组了吗?,python,plotly,Python,Plotly,我一直遇到这样一个问题:我按某些列对数据进行分组,但我不知道如何按分组后的数据进行绘图 比如说, 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, 'colors

我一直遇到这样一个问题:我按某些列对数据进行分组,但我不知道如何按分组后的数据进行绘图

比如说,

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
。否则,您无法将
x
y
分配给列,因为没有这样的列。您将得到以下错误:

KeyError: 'region'
使用
.reset_index()

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


因此,这里您得到了
pd.DataFrame
,您可以在其上像在前面的代码块中一样操作(将
x
分配给一列,
y
分配给另一列,等等)。您的代码将完成,并获得条形图,其中包含
x
上的
region
值以及
y
上每个
区域的所有值的平均值。您需要将
.reset_index()
添加到
groupby
调用中。没有这一点,pandas就不能有唯一的
pd.Series
,而没有一个表,您可以在该表上调用列,例如
region

region
A    1.340
B    1.005
C    1.280
Name: AveragePrice, dtype: float64
因此,对于绘图,您需要将这些输出从
groupby
回调转换为
pd.DataFrame
。否则,您无法将
x
y
分配给列,因为没有这样的列。您将得到以下错误:

KeyError: 'region'
使用
.reset_index()

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

因此,这里您得到了
pd.DataFrame
,您可以在其上像在前面的代码块中一样操作(将
x
分配给一列,
y
分配给另一列,等等)。您的代码将完成,并在
x
上获得带有
region
值的条形图,以及
y
上每个
region
的所有值的平均值。请将数据框(作为文本,而不是图像)粘贴到您的帖子中,以便其他人可以轻松测试您的代码。请粘贴数据框(作为文本,而不是图像)让其他人可以轻松地测试您的代码。