Pandy: jak grupować według zakresu wartości


Możesz użyć poniższej składni, aby użyć funkcji groupby() w pandach, aby pogrupować kolumnę według zakresu wartości przed wykonaniem agregacji:

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

Ten konkretny przykład pogrupuje wiersze DataFrame według następującego zakresu wartości w kolumnie o nazwie my_column :

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

Następnie obliczy sumę wartości we wszystkich kolumnach DataFrame, używając tych zakresów wartości jako grup.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: Jak grupować według zakresu wartości w Pandach

Załóżmy, że mamy następującą ramkę danych pand, która zawiera informacje o rozmiarach różnych sklepów detalicznych i ich łącznej sprzedaży:

 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

Możemy użyć poniższej składni, aby pogrupować ramkę DataFrame na podstawie określonych zakresów kolumny store_size , a następnie obliczyć sumę wszystkich pozostałych kolumn w ramce DataFrame, używając zakresów jako grup:

 #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

Z wyniku możemy zobaczyć:

  • W przypadku wierszy z wartością store_size z zakresu od 0 do 25 suma store_size wynosi 39 , a suma sprzedaży wynosi 33 .
  • W przypadku wierszy z wartością store_size z zakresu od 25 do 50 suma store_size wynosi 100 , a suma sprzedaży wynosi 69 .

I tak dalej.

Jeśli chcesz, możesz również obliczyć sumę sprzedaży dla każdego zakresu 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

Możesz także użyć funkcji NumPy arange(), aby podzielić zmienną na zakresy bez ręcznego określania każdego punktu cięcia:

 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

Należy pamiętać, że te wyniki są zgodne z poprzednim przykładem.

Uwaga : pełną dokumentację funkcji NumPy arange() można znaleźć tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w pandach:

Pandy: Jak liczyć unikalne wartości za pomocą groupby
Pandy: Jak obliczyć średnią i normę kolumny w groupby
Pandy: Jak używać as_index w groupby

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *