Panda's: hoe te groeperen op bereik van waarden


U kunt de volgende syntaxis gebruiken om de functie groupby() in panda’s te gebruiken om een kolom te groeperen op bereik van waarden voordat u de aggregatie uitvoert:

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

In dit specifieke voorbeeld worden de rijen van het DataFrame gegroepeerd volgens het volgende waardenbereik in de kolom genaamd my_column :

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

Vervolgens berekent het de som van de waarden in alle kolommen van het DataFrame, waarbij deze waardenbereiken als groepen worden gebruikt.

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: Groeperen op waardenbereik in Panda’s

Laten we aannemen dat we het volgende panda’s DataFrame hebben dat informatie bevat over de grootte van verschillende winkels en hun totale omzet:

 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

We kunnen de volgende syntaxis gebruiken om het DataFrame te groeperen op basis van specifieke bereiken van de kolom store_size en vervolgens de som van alle andere kolommen in het DataFrame berekenen met behulp van de bereiken als groepen:

 #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

Uit het resultaat kunnen we zien:

  • Voor rijen met een store_size-waarde tussen 0 en 25 is de som van store_size 39 en de som van de verkopen 33 .
  • Voor rijen met een store_size-waarde tussen 25 en 50 is de som van store_size 100 en de som van de verkopen 69 .

Enzovoort.

Als u wilt, kunt u ook alleen de som van de verkopen berekenen voor elk winkelgroottebereik :

 #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

U kunt ook de functie NumPy arange() gebruiken om een variabele in bereiken op te delen zonder elk knippunt handmatig op te geven:

 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

Merk op dat deze resultaten overeenkomen met het vorige voorbeeld.

Opmerking : u kunt hier de volledige documentatie voor de NumPy arange() -functie vinden.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in panda’s kunt uitvoeren:

Panda’s: unieke waarden tellen met groupby
Panda’s: hoe u het gemiddelde en de norm van een kolom in groupby kunt berekenen
Panda’s: as_index gebruiken in groupby

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert