Pandas groupby.sum()-Funktion

Pandas Häufige Funktionen


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

import pandas as pd

# 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:

  1. 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.
  2. .sum()Summiert die Verkäufe in jeder Gruppe.
  3. 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

import pandas as pd

# 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 pandas as pd
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.


Pandas Häufige Funktionen

Andere Erweiterungen