Panda: come raggruppare per intervallo di valori


È possibile utilizzare la seguente sintassi per utilizzare la funzione groupby() in panda per raggruppare una colonna in base a un intervallo di valori prima di eseguire l’aggregazione:

 df. groupby (pd. cut (df[' my_column '], [0, 25, 50, 75, 100])). sum ()

Questo particolare esempio raggrupperà le righe del DataFrame in base al seguente intervallo di valori nella colonna denominata my_column :

  • (0,25]
  • (25, 50]
  • (50, 75]
  • (75, 100]

Calcolerà quindi la somma dei valori in tutte le colonne del DataFrame utilizzando questi intervalli di valori come gruppi.

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: come raggruppare per intervallo di valori in Panda

Supponiamo di avere il seguente DataFrame panda che contiene informazioni sulle dimensioni dei diversi negozi al dettaglio e sulle loro vendite totali:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' store_size ': [14, 25, 26, 29, 45, 58, 67, 81, 90, 98],
                   ' sales ': [15, 18, 24, 25, 20, 35, 34, 49, 44, 49]})

#view DataFrame
print (df)

   store_size sales
0 14 15
1 25 18
2 26 24
3 29 25
4 45 20
5 58 35
6 67 34
7 81 49
8 90 44
9 98 49

Possiamo utilizzare la seguente sintassi per raggruppare DataFrame in base a intervalli specifici della colonna store_size e quindi calcolare la somma di tutte le altre colonne nel DataFrame utilizzando gli intervalli come gruppi:

 #group by ranges of store_size and calculate sum of all columns
df. groupby (pd. cut (df[' store_size '], [0, 25, 50, 75, 100])). sum ()

	 store_size sales
store_size		
(0.25] 39 33
(25, 50] 100 69
(50, 75] 125 69
(75, 100] 269 142

Dal risultato possiamo vedere:

  • Per le righe con un valore store_size compreso tra 0 e 25, la somma di store_size è 39 e la somma delle vendite è 33 .
  • Per le righe con un valore store_size compreso tra 25 e 50, la somma di store_size è 100 e la somma delle vendite è 69 .

E così via.

Se lo desideri, puoi anche calcolare solo la somma delle vendite per ciascun intervallo store_size :

 #group by ranges of store_size and calculate sum of sales
df. groupby (pd. cut (df[' store_size '], [0, 25, 50, 75, 100]))[' sales ']. sum ()

store_size
(0.25] 33
(25, 50] 69
(50, 75] 69
(75, 100] 142
Name: sales, dtype: int64

Puoi anche utilizzare la funzione NumPy arange() per suddividere una variabile in intervalli senza specificare manualmente ciascun punto di taglio:

 import numpy as np

#group by ranges of store_size and calculate sum of sales
df. groupby (pd. cut (df[' store_size '], np. arange (0, 101, 25)))[' sales ']. sum ()

store_size
(0.25] 33
(25, 50] 69
(50, 75] 69
(75, 100] 142
Name: sales, dtype: int64

Tieni presente che questi risultati corrispondono all’esempio precedente.

Nota : puoi trovare la documentazione completa per la funzione NumPy arange() qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni nei panda:

Panda: come contare valori univoci utilizzando groupby
Panda: come calcolare la media e la norma di una colonna in groupby
Panda: come utilizzare as_index in groupby

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *