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
的所有值的平均值。请将数据框(作为文本,而不是图像)粘贴到您的帖子中,以便其他人可以轻松测试您的代码。请粘贴数据框(作为文本,而不是图像)让其他人可以轻松地测试您的代码。