Pandas: so gruppieren sie nach wertebereichen
Sie können die folgende Syntax verwenden, um die Funktion groupby() in Pandas zu verwenden, um eine Spalte nach Wertebereich zu gruppieren, bevor Sie die Aggregation durchführen:
df. groupby (pd. cut (df[' my_column '], [0, 25, 50, 75, 100])). sum ()
In diesem speziellen Beispiel werden die Zeilen des DataFrame nach dem folgenden Wertebereich in der Spalte namens my_column gruppiert:
- (0,25]
- (25, 50]
- (50, 75]
- (75, 100]
Anschließend wird die Summe der Werte in allen Spalten des DataFrame berechnet, wobei diese Wertebereiche als Gruppen verwendet werden.
Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.
Beispiel: So gruppieren Sie in Pandas nach Wertebereichen
Nehmen wir an, wir haben den folgenden Pandas-DataFrame, der Informationen über die Größe verschiedener Einzelhandelsgeschäfte und ihren Gesamtumsatz enthält:
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
Wir können die folgende Syntax verwenden, um den DataFrame basierend auf bestimmten Bereichen der Spalte „store_size“ zu gruppieren und dann die Summe aller anderen Spalten im DataFrame zu berechnen, indem wir die Bereiche als Gruppen verwenden:
#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
Aus dem Ergebnis können wir sehen:
- Für Zeilen mit einem Wert für „store_size“ zwischen 0 und 25 beträgt die Summe von „store_size“ 39 und die Summe der Verkäufe 33 .
- Für Zeilen mit einem Wert für „store_size“ zwischen 25 und 50 beträgt die Summe von „store_size“ 100 und die Summe der Verkäufe 69 .
Und so weiter.
Wenn Sie möchten, können Sie auch nur die Summe der Verkäufe für jeden Store_Size- Bereich berechnen:
#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
Sie können auch die NumPy-Funktion arange() verwenden, um eine Variable in Bereiche aufzuteilen, ohne jeden Schnittpunkt manuell anzugeben:
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
Beachten Sie, dass diese Ergebnisse mit dem vorherigen Beispiel übereinstimmen.
Hinweis : Die vollständige Dokumentation für die NumPy-Funktion arange() finden Sie hier .
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in Pandas ausführen:
Pandas: So zählen Sie eindeutige Werte mithilfe von Groupby
Pandas: So berechnen Sie den Mittelwert und die Norm einer Spalte in Groupby
Pandas: So verwenden Sie as_index in Groupby