Pandas groupby.sum()-Funktion
groupby.sum()ist eine Aggregationsfunktion in Pandas, die zum Summieren nach einer Gruppierung verwendet wird. Sie wird normalerweise zusammen mitgroupby()der Funktion verwendet, die zuerst die Daten nach den Werten einer Spalte gruppiert und dann die numerischen Spalten in jeder Gruppe summiert.
In der tatsächlichen Datenanalyse,sum()ist sie eine der am häufigsten verwendeten Aggregationsfunktionen. Zum Beispiel die Berechnung des Gesamtgehalts für jede Abteilung, des Gesamtumsatzes für jede Region, der Gesamtmenge für jede Kategorie usw.
Grundlegende Syntax und Parameter
sum()ist eine Memberfunktion des GroupBy-Objekts. Sie müssen zuerstgroupby()verwenden, um die Daten zu gruppieren, und sie dann aufrufen.
Syntaxformat
GroupBy.sum(numeric_only=False, min_count=-1, engine=None, engine_kwargs=None)
Parameterbeschreibung
| Parameter | Type | Beschreibung | Standardwert |
|---|---|---|---|
| numeric_only | bool | Wenn True, werden nur numerische Spalten summiert; wenn False, wird versucht, alle Spalten zu summieren. | False |
| min_count | int | Die minimale Anzahl gültiger Werte, die für die Summierung erforderlich ist. Wenn in einer Gruppe weniger gültige Werte als diese Anzahl vorhanden sind, wird NaN zurückgegeben. | -1 |
| engine | str | Gibt die Berechnungs-Engine an, die 'cython' oder 'numba' sein kann. None bedeutet, dass Pandas sie automatisch auswählt. | Keine |
| engine_kwargs | dict | Ein Wörterbuch mit zusätzlichen Parametern, die an die zugrunde liegende Engine übergeben werden. | Keine |
Rückgabewert
- Rückgabetyp:
SeriesoderDataFrame - Beschreibung: Gibt das Ergebnis nach Gruppierung und Summierung zurück. Wenn sie auf eine einzelne Spalte angewendet wird, gibt sie eine Series zurück; wenn sie auf mehrere Spalten angewendet wird, gibt sie ein DataFrame zurück.
Beispiele
Anhand einer Reihe von Beispielen von einfach bis komplex wollen wir gründlich beherrschengroupby.sum()die Verwendung beherrschen.
Beispiel 1: Grundlegende Verwendung - Nach einer einzelnen Spalte gruppieren und summieren
Die grundlegendste Verwendung besteht darin, nach den Werten in einer Spalte zu gruppieren und dann eine andere Spalte zu summieren.
Beispiel
# Verkaufsdaten-DataFrame erstellen
# Eine Tabelle mit Region, Produkt und Umsatz simulieren
data = {
'Region': ['Nordchina', 'Ostchina', 'Südchina', 'Nordchina', 'Ostchina', 'Südchina', 'Nordchina', 'Ostchina'],
'product': ['A', 'B', 'C', 'B', 'A', 'C', 'A', 'B'],
'Sales amount': [1000, 2000, 1500, 1800, 2200, 1600, 1200, 2100],
'Menge': [10, 20, 15, 18, 22, 16, 12, 21]
}
# DataFrame erstellen
df = pd.DataFrame(data)
print("Originale Verkaufsdaten:")
print(df)
print()
# Nach "Region" gruppieren und den Gesamtumsatz für jede Region berechnen
sales_by_region = df.groupby('Region')['Sales amount'].sum()
print(Gesamtumsatz pro Region:)
print(sales_by_region)
print()
# Nach "Product" gruppieren und die Gesamtverkaufsmenge für jedes Produkt berechnen
quantity_by_product = df.groupby('product')['Quantity'].sum()
print(Gesamtverkaufsmenge für jedes Produkt:)
print(quantity_by_product)
Ausgabe:
原始销售数据: 地区 产品 销售额 数量 0 华北 A 1000 10 1 华东 B 2000 20 2 华南 C 1500 15 3 华北 B 1800 18 4 华东 A 2200 22 5 华南 C 1600 16 6 华北 A 1200 12 7 华东 B 2100 21 每个地区的总销售额: 地区 华东 7100 华南 3100 华北 4000 dtype: int64 每个产品的总销售数量: 产品 A 44 B 59 C 31 dtype: int64
Code-Erklärung:
df.groupby('地区')['销售额']Gibt an, dass die Daten zuerst nach der Spalte 'Region' gruppiert und dann die Spalte 'Sales amount' für die Operation ausgewählt wird..sum()Summiert die Verkäufe in jeder Gruppe.- Das zurückgegebene Ergebnis ist eine Series, und der Index entspricht den Werten der Gruppierungsspalte (d. h. den Namen der Regionen).
Beispiel 2: Nach mehreren Spalten gruppieren und summieren
Sie können gleichzeitig nach mehreren Spalten gruppieren und dann die numerischen Spalten summieren.
Beispiel
# Umsatzdaten erstellen
data = {
'Region': ['Nordchina', 'Ostchina', 'Südchina', 'Nordchina', 'Ostchina', 'Südchina', 'Nordchina', 'Ostchina'],
'product': ['A', 'B', 'C', 'B', 'A', 'C', 'A', 'B'],
'Sales amount': [1000, 2000, 1500, 1800, 2200, 1600, 1200, 2100],
'Menge': [10, 20, 15, 18, 22, 16, 12, 21]
}
df = pd.DataFrame(data)
print("Originale Verkaufsdaten:")
print(df)
print()
# Nach den Spalten 'Region' und 'Product' gruppieren, Gesamtumsatz und Gesamtmenge berechnen
# as_index=False bedeutet, dass die Gruppierungsspalte als reguläre Spalte im Ergebnis beibehalten wird.
grouped = df.groupby(['Region', 'product'], as_index=False).sum()
print("Gesamtsumme nach Gruppierung nach Region und Produkt:")
print(grouped)
print()
# Alternativ können Sie alle numerischen Spalten summieren, ohne Spalten anzugeben
grouped_all = df.groupby(['Region', 'product']).sum()
print("Summe aller numerischen Spalten (gibt ein DataFrame zurück):")
print(grouped_all)
Ausgabe:
原始销售数据:
地区 产品 销售额 数量
0 华北 A 1000 10
1 华东 B 2000 20
2 华南 C 1500 15
3 华北 B 1800 18
4 华东 A 2200 22
5 华南 C 1600 16
6 华北 A 1200 12
7 华东 B 2100 21
按地区和产品分组后的总计:
地区 产品 销售额 数量
0 华东 A 2200 22
1 华东 B 4100 41
2 华南 C 3100 31
3 华北 A 2200 22
4 华北 B 1800 18
对所有数值列求和(返回DataFrame):
销售额 数量
地区 产品
华东 A 2200 22
B 4100 41
华南 C 3100 31
华北 A 2200 22
B 1800 18
Code-Erklärung:
['Region', 'Product']Die Verwendung einer Liste ermöglicht die gleichzeitige Gruppierung nach mehreren Spalten.as_index=FalseIn diesem Fall liegt das Ergebnis im DataFrame-Format vor, und die Gruppierungsspalten werden als normale Spalten beibehalten.- Wenn keine Spalte angegeben ist (z. B.,
.sum()), wird die Summe aller numerischen Spalten berechnet.
Beispiel 3: Verwendung des min_count-Parameters
min_countDieser Parameter steuert die Mindestanzahl gültiger Werte, die für die Gruppensummierung erforderlich sind. Wenn die Anzahl gültiger Werte in einer Gruppe kleiner als diese Zahl ist, wird NaN zurückgegeben.
Beispiel
import numpy as np
# Daten mit fehlenden Werten erstellen
data = {
'Department': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
'salary': [5000, 6000, np.nan, 7000, np.nan, np.nan, 8000, 9000, 10000]
}
df = pd.DataFrame(data)
print(Mitarbeitergehaltsdaten (einschließlich fehlender Werte):)
print(df)
print()
# Standardmäßig ignoriert sum() NaN-Werte beim Summieren
sum_default = df.groupby('Department')['salary'].sum()
print(Standardsumme (NaN ignorierend):)
print(sum_default)
print()
# Setze min_count=3, wobei mindestens 3 gültige Werte erforderlich sind, um die Summierung durchzuführen
sum_min_count = df.groupby('Department')['salary'].sum(min_count=3)
print(Summenergebnis, wenn min_count=3:)
print(sum_min_count)
print()
# Setze min_count=2
sum_min_count2 = df.groupby('Department')['salary'].sum(min_count=2)
print(Summenergebnis, wenn min_count=2:)
print(sum_min_count2)
Ausgabe:
员工工资数据(包含缺失值): 部门 工资 0 A 5000.0 1 A 6000.0 2 A NaN 3 B 7000.0 4 B NaN 5 B NaN 6 C 8000.0 7 C 9000.0 8 C 10000.0 默认求和(忽略NaN): 部门 A 11000.0 B 7000.0 C 27000.0 dtype: float64 min_count=3 时的求和结果: 部门 A 11000.0 B NaN C 27000.0 dtype: float64 min_count=2 时的求和结果: 部门 A 11000.0 B 7000.0 C 27000.0 dtype: float64
Code-Erklärung:
- Standardmäßig,
sum()es ignoriert NaN-Werte und summiert nur gültige Werte. min_count=3Das bedeutet, dass jede Gruppe mindestens 3 gültige Werte haben muss, bevor die Summe berechnet wird; andernfalls wird NaN zurückgegeben.- Abteilung A hat 2 gültige Werte (5000 und 6000), was min_count=3 nicht erfüllt, daher gibt sie NaN zurück; Abteilung C hat 3 gültige Werte, daher kann sie normal summiert werden.
Notizen:
sum()Standardmäßig werden NaN-Werte beim Summieren ignoriert, was unserem alltäglichen Verständnis des Umgangs mit "null" entspricht. Wenn Sie NaN vor dem Summieren als 0 behandeln müssen, können Sie zuerstfillna(0)die Methode zum Auffüllen fehlender Werte verwenden.
Andere Erweiterungen