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)
Index | Categoria | Giorno | Oggetto | Prezzo |
0 | Cellulare | 0 | Iphone | 350 |
1 | Elettrodomestico | 0 | Lavastoviglie | 300 |
2 | Elettrodomestico | 0 | Frigorifero | 599 |
3 | Cellulare | 0 | Samsung Galaxy | 100 |
4 | Computer | 0 | Laptop Asus | 900 |
5 | Computer | 0 | Laptop Sony Vaio | 1200 |
6 | Elettrodomestico | 0 | Lavatrice Bontempi | 650 |
7 | Cellulare | 0 | Samsung Galaxy | 500 |
8 | Cellulare | 0 | Nokia 3310 | 120 |
9 | Cellulare | 0 | Motorola Startac | 60 |
0 | Cellulare | 1 | Ericson T10 | 150 |
1 | Elettrodomestico | 1 | Pinguino DeLonghi | 200 |
2 | Elettrodomestico | 1 | Congelatore | 699 |
3 | Cellulare | 1 | Motorola Razr | 100 |
4 | Computer | 1 | Laptop HP | 400 |
5 | Computer | 1 | Laptop Acer | 600 |
6 | Elettrodomestico | 1 | Lavatrice Bontempi | 650 |
7 | Cellulare | 1 | Iphone | 350 |
8 | Cellulare | 1 | Nokia 3330 | 120 |
9 | Cellulare | 1 | Motorola Startac | 60 |
#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())
Giorno | Categoria | Prezzo |
0 | Cellulare | 1130 |
Computer | 2100 | |
Elettrodomestico | 1549 | |
1 | Cellulare | 780 |
Computer | 1000 | |
Elettrodomestico | 1549 |
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