Privacy Policy

Esempio di GroupBy con più Keys-MultiIndex

Con GroupBy è possibile aggregare un dataset sulla base di più variabili.

Vedremo in questo articolo come determinare la somma delle vendite di un negozio di elettronica per giorno e categoria merceologica.

Questo è possibile passando alla classe groupby più chiavi.

Come sempre il mio consiglio è copiare il codice sul vostro Notebook per testare i vari step.

Ipotizziamo che a fine giornata un negozio di elettronica dalla lista delle vendite voglia capire il contributo di ogni categoria di prodotto al fatturato finale e confrontarlo con il giorno precedente.

Nell’esempio avremo tre categorie di prodotti:

1)Smartphone

2)Computer

3)Elettrodomestici

Ed aggiungiamo anche due variabili temporali:

1) Ieri

2) Oggi

import pandas as pd 
import numpy as np

vendite_oggi={'Giorno':np.zeros(10),'Categoria':['Cellulare','Elettrodomestico','Elettrodomestico','Cellulare',"Computer","Computer","Elettrodomestico",'Cellulare', 'Cellulare', 'Cellulare'], 'Oggetto':['Iphone','Lavastoviglie','Frigorifero','Samsung Galaxy',"Laptop Asus","Laptop Sony Vaio","Lavatrice Bontempi","Samsung Galaxy", "Nokia 3310", "Motorola Startac"],'Prezzo':[ 350,300,599,100,900,1200,650,500, 120, 60]}

vendite_ieri={'Giorno':np.ones(10),'Categoria':['Cellulare','Elettrodomestico','Elettrodomestico','Cellulare',"Computer","Computer","Elettrodomestico",'Cellulare', 'Cellulare', 'Cellulare'], 'Oggetto':['Ericson T10','Pinguino DeLonghi','Congelatore','Motorola Razr',"Laptop HP","Laptop Acer","Lavatrice Bontempi","Iphone", "Nokia 3330", "Motorola Startac"],'Prezzo':[ 150,200,699,100,400,600,650,350, 120, 60]}

#trasformiamo in DataFrame i nostri Dictonary
df_vendite_oggi=pd.DataFrame(vendite_oggi)
df_vendite_ieri=pd.DataFrame(vendite_ieri)

#Uniamo i due DataFrame in uno unico
vendite_due_gg=df_vendite_oggi.append(df_vendite_ieri)

#Visualizziamo il risultato 
print(vendite_due_gg)
IndexCategoriaGiornoOggettoPrezzo
0Cellulare0Iphone350
1Elettrodomestico0Lavastoviglie300
2Elettrodomestico0Frigorifero599
3Cellulare0Samsung Galaxy100
4Computer0Laptop Asus900
5Computer0Laptop Sony Vaio1200
6Elettrodomestico0Lavatrice Bontempi650
7Cellulare0Samsung Galaxy500
8Cellulare0Nokia 3310120
9Cellulare0Motorola Startac60
0Cellulare1Ericson T10150
1Elettrodomestico1Pinguino DeLonghi200
2Elettrodomestico1Congelatore699
3Cellulare1Motorola Razr100
4Computer1Laptop HP400
5Computer1Laptop Acer600
6Elettrodomestico1Lavatrice Bontempi650
7Cellulare1Iphone350
8Cellulare1Nokia 3330120
9Cellulare1Motorola Startac60
#In questo esempio la prima variabile di aggregazione è il giorno
#la seconda è la categoria merceologica
#provate a vedere cosa cambia invertendo le due variabili categoriche

#Questo è il nostro oggetto groupby al quale abbiamo fornito 
#La key -> Giorno
#La key -> Categoria
vendite_aggregate_due_gg=vendite_due_gg.groupby(['Giorno','Categoria'])

#In questo punto visualizziamo la somma dei dati aggregati 
print(vendite_aggregate_due_gg.sum())
GiornoCategoriaPrezzo
0Cellulare
1130
Computer2100
Elettrodomestico1549
1Cellulare780
Computer1000
Elettrodomestico1549

Grazie per aver letto l’articolo! 
Se ti è piaciuto condividilo liberamente, basta un Tweet, se c’è qualche errore o miglioramento scrivimi pure  🙂

Un abbraccio
Andrea

Lascia un commento