Esempio di GroupBy con più Keys-MultiIndex [2min lettura]

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 qui sotto 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

#dictionary con le vendite di oggi
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]}

#dictonary con le vendite di ieri
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

Esercizio:

Prova a cambiare l’ordine delle chiavi e vedi cosa succede! Fammi sapere se fai l’esercizio, puoi commentare qui, scrivermi su Twitter o aggiungermi su Linkedin (scrivilo nella nota)

Grazie per aver letto l’articolo, se lo hai trovato utile condividilo su Twitter e Linkedin.

Le occasioni nascono dalle piccole cose e grazie ad un un like puoi fare tantissimo. 

  🙂

Un abbraccio
Andrea

Lascia un commento