como calcular a média e a mediana com base no rótulo de uma coluna em python

Aug 21 2020

Eu tenho um grande quadro de dados que mostra o seguinte:

price   type      status
2       shoes      none
3       clothes    none
6       clothes    none
3       shoes      none
4       shoes      none
6       shoes      none
2       clothes    none
3       shoes      none
6       clothes    none
8       clothes    done

Basicamente, quero calcular a média e a mediana com base no "tipo" sempre que o "status" for escrito concluído. Até agora, o que fiz foi criar primeiro um grupo com base no status "concluído", depois calculo a média e a mediana do grupo como no script abaixo:

g = df['status'].eq('done').iloc[::-1].cumsum().iloc[::-1]
grouper = df.groupby(g)
df_statistics = grouper.agg(
               mean = ('price', 'mean')
              ,median = ('price', 'median')
)
df_freq = df.groupby(g).apply(lambda x: x['price'].value_counts().idxmax())

Como posso adicionar mais um parâmetro para o "tipo", então o script vai estimar a mediana de cada grupo com base também no "tipo".

Obrigado

Respostas

1 jezrael Aug 21 2020 at 17:06

Acho que você precisa passar o nome da coluna para listar e depois para groupby:

grouper = df.groupby([g, 'type'])