come calcolare la media e la mediana in base all'etichetta di una colonna in python

Aug 21 2020

Ho un frame di dati di grandi dimensioni che mostra simile come segue:

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

Fondamentalmente, voglio calcolare la media e la mediana in base al "tipo" ogni volta che viene scritto "stato". Finora quello che ho fatto è stato creare prima un gruppo in base allo stato "fatto", quindi calcolo la media e la mediana del gruppo come lo script qui sotto:

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())

Come posso aggiungere un parametro in più per il "tipo", così lo script stimerà la mediana di ogni gruppo anche in base al "tipo".

Grazie

Risposte

1 jezrael Aug 21 2020 at 17:06

Penso che tu abbia bisogno di passare il nome della colonna all'elenco e quindi a groupby:

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