Как вы строите данные, сгруппированные по другому столбцу? - PullRequest
1 голос
/ 29 апреля 2019

Я продолжаю сталкиваться с проблемой, когда я группирую данные по определенным столбцам, но не могу понять, как построить график по этим данным, которые я сгруппировал.

Вот мои данные

Например,

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

Это дает мне ключевую ошибку.^

1 Ответ

0 голосов
/ 01 мая 2019

Вам необходимо добавить .reset_index() к вашему groupby вызову.Без этого панды не может быть единственной 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())

  region  AveragePrice
0      A         1.340
1      B         1.005
2      C         1.280

Итак, вы получите pd.DataFrame, накоторый вы можете использовать как в предыдущем блоке кода (присвойте x одному столбцу, y другому и т. д.).И ваш код будет завершен и получит вашу диаграмму с region значениями на x и средним значением всех значений по каждому region на y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...