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

标签 python plotly

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

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/

相关文章:

python - MySQL 用空字符串替换 Null

python - 从 Django 的媒体目录中打开数据文件

python - plotly 中的饼图

python - 向 Choropleth map 添加下拉菜单以选择每个州并生成新的图形类型

python - 从 Jupyter Notebook 启动 Dash

python - 将直方图从 matplotlib 导入到plotly

python - 将 DataFrame 列表保存到多表 Excel 电子表格

python - 持久性数据库(MySQL/MongoDB/Cassandra/BigTable/BigData)与非持久性数组(PHP/PYTHON)

python - Golang - 打包和散列二进制数据

javascript - 如何使用通用按钮+ selectInput 通过R Shiny 中的javascript更改轨迹n的图例图例状态