Pandas Series.cumsum()-Funktion

Pandas 常用函数Gängige Pandas-Funktionen


Series.cumsum()ist eine Pandas-Funktion, mit der die kumulative Summe einer Series berechnet wird. Die kumulative Summe bedeutet, dass ausgehend vom ersten Element der Wert an jeder Position der Summe aller Elemente vor dieser Position (einschließlich des aktuellen Elements) entspricht.

Kumulative Summen werden häufig in der Finanzdatenanalyse (z. B. zur Berechnung kumulativer Renditen), Verkaufsanalyse (z. B. zur Berechnung kumulativer Verkäufe), Zeitreihenanalyse und anderen Szenarien verwendet.


Grundlegende Syntax und Parameter

cumsum()ist eine Member-Funktion des Series-Objekts, die direkt über den Punktoperator aufgerufen wird.

Syntax

Series.cumsum(axis=None, skipna=True, dtype=None, out=None, **kwargs)

Parameterbeschreibung

Parameter Type Beschreibung Standardwert
axis int Gibt die Achse an; eine Series hat nur eine Spalte, daher dient dieser Parameter hauptsächlich der Kompatibilität mit DataFrame. Keine
skipna bool Wenn True, werden NaN-Werte bei der Berechnung übersprungen; wenn False, wird die kumulative Summe beim Auftreten von NaN unterbrochen. True
dtype dtype Gibt den Datentyp der Ausgabe an. Keine
out ndarray Das Array, das zum Speichern des Ergebnisses verwendet wird; muss normalerweise nicht festgelegt werden. Keine

Rückgabewert

  • Rückgabetyp:Series
  • Beschreibung: Gibt eine neue Series zurück, wobei der Wert an jeder Position die kumulative Summe ist.

Beispiele

Anhand einer Reihe von Beispielen von einfach bis komplex wollen wirSeries.cumsum()die Verwendung beherrschen.

Beispiel 1: Grundlegende Verwendung - Berechnung kumulativer Verkäufe

Die kumulative Summe ist die Gesamtsumme aller Werte bis zur aktuellen Position.

Beispiel

import pandas as pd

# Erstelle eine Series mit täglichen Verkäufen
daily_sales = pd.Series([1000, 1500, 1200, 1800, 2000, 900, 1600])

print("Tägliche Verkäufe (Yuan):")
print(daily_sales)
print()

# Kumulierte Verkäufe berechnen
cumulative_sales = daily_sales.cumsum()

print("Kumulierte Verkäufe (Yuan):")
print(cumulative_sales)
print()

print("Analyse:")
print("- Tag 1 kumuliert: 1000")
print("- Tag 2 kumuliert: 1000 + 1500 = 2500")
print("- Tag 3 kumuliert: 1000 + 1500 + 1200 = 3700")
print("Und so weiter...")

Ausgabe:

每日销售额(元):
0    1000
1    1500
2    1200
3    1800
4    2000
5     900
6    1600
dtype: int64

累计销售额(元):
0    1000
1    2500
2    3700
3    5500
4    7500
5    8400
6   10000
dtype: int64

分析:
- 第1天的累计销售就是当天的销售额
- 第2天的累计销售额 = 第1天 + 第2天的销售额
- 以此类推...

Code-Erklärung:

  • Kumulierte Summe an Position 1 = 1000
  • Kumulierte Summe an Position 2 = 1000 + 1500 = 2500
  • Kumulierte Summe an Position 3 = 1000 + 1500 + 1200 = 3700
  • Und so weiter...

Beispiel 2: Umgang mit fehlenden Werten

skipnaDer Parameter bestimmt, wie fehlende Werte behandelt werden.

Beispiel

import pandas as pd
import numpy as np

# Eine Series mit fehlenden Werten erstellen
data_with_nan = pd.Series([10, 20, np.nan, 30, 40])

print("Originaldaten (mit fehlenden Werten):")
print(data_with_nan)
print()

# Standardmäßig skipna=True, NaN beim Berechnen der kumulativen Summe überspringen
cumulative_skipna = data_with_nan.cumsum()
print("Kumulative Summe mit skipna=True (Standard):")
print(cumulative_skipna)
print()

# skipna=False setzen, NaN-Positionen unterbrechen die kumulative Summe
cumulative_no_skipna = data_with_nan.cumsum(skipna=False)
print("Kumulative Summe mit skipna=False:")
print(cumulative_no_skipna)

Ausgabe:

原始数据(含缺失值):
0    10.0
1    20.0
2       NaN
3    30.0
4    40.0
dtype: float64

skipna=True(默认)的累计和:
0    10.0
1    30.0
2       NaN
3    60.0
4   100.0
dtype: float64

skipna=False 的累计和:
0    10.0
1    30.0
2       NaN
3     NaN
4     DataFrame

Code-Erklärung:

  • Wannskipna=TrueWenn auf True gesetzt, werden NaN-Positionen übersprungen, und nachfolgende kumulative Summen werden auf Basis gültiger Werte fortgesetzt.
  • Berechnung: 10 → 30 → (überspringen) → 60 → 100
  • Wannskipna=FalseWenn auf False gesetzt, werden alle Positionen nach dem Auftreten von NaN zu NaN.

Beispiel 3: Gemeinsame Analyse mit Originaldaten

In der praktischen Analyse ist es notwendig, sowohl die Originaldaten als auch die kumulierten Daten gleichzeitig zu betrachten.

Beispiel

import pandas as pd

# Aktienkursdaten erstellen
stock_prices = pd.Series([100, 102, 98, 105, 103, 108, 110])

# Tägliche Änderungen berechnen
daily_change = stock_prices.diff()

# Kumulierte Änderungen berechnen
cum_change = stock_prices.cumsum() - stock_prices.iloc[0] * len(stock_prices) + stock_prices

# Oder einfacher: Verwenden Sie cumsum, um die kumulierte Änderung relativ zum Anfangspreis zu berechnen
print("Aktienkursdaten:")
print(stock_prices.values)
print()

# Die Preisänderung für den Tag berechnen (im Vergleich zum vorherigen Tag)
print("Täglich:")
print(daily_change.fillna(0).values)
print()

# Eine andere Möglichkeit: kumulative Renditen berechnen
cumulative_return = ((stock_prices / stock_prices.iloc[0]) - 1) * 100

print("Kumulative Renditen (%):")
print(cumulative_return.values)
print()

# Kumulativer Wert ausgehend von 100 Yuan
initial_price = 100
cumulative_value = initial_price + stock_prices.cumsum() - stock_prices.iloc[0]

print("Kumulativer Wert (unter der Annahme eines Anfangswerts von 100 Yuan):")
print(cumulative_value.values)

Ausgabe:

股价数据:[100, 102, 98, 105, 103, 108, 110]

每日涨跌(与前一天相比):
[ 0.,  2., -4.,  7., -2.,  5.,  2.]

累计收益(%):
[0.0, 2.0, -2.0, 5.0, 3.0, 8.0, 10.0]

累计价值(假设初始 100 元):
0      100
1      202
2      300
3      405
4      508
5      616
6      726
dtype: int64

分析:第 7 天时,股价从 100 涨到 110,累计收益率为 10%。

Beispiel 4: Praktische Anwendung - Monatliche kumulative Daten

Veranschaulicht die typische Anwendung von cumsum in der Finanzanalyse.

Beispiel

import pandas as pd

# Monatliche Umsatzdaten erstellen
monthly_sales = pd.Series({
    'Januar': 50000,
    'Februar': 62000,
    'März': 58000,
    'April': 70000,
    'Mai': 75000,
    'Juni': 80000
})

print("Monatliche Umsätze (yuan):")
print(monthly_sales)
print()

# Monatliche kumulierte Umsätze berechnen
cumulative_sales = monthly_sales.cumsum()

# Übersichtstabelle erstellen
summary = pd.DataFrame({
    'Monatliche Umsätze': monthly_sales,
    'Kumulierte Umsätze': cumulative_sales,
    'Jährliche Zielerreichungsquote': (cumulative_sales / 500000 * 100).round(1)
})

print("Verkaufsübersichtstabelle:")
print(summary)
print()

print(f"Kumulierte Verkäufe im ersten Halbjahr: {cumulative_sales.iloc[-1]} yuan")
print(f"Jährliche Zielerreichungsquote: {cumulative_sales.iloc[-1]/500000*100:.1f}%")

Ausgabe:

月度销售额(元):
1月    50000
2月    62000
累计    112000
4月    70000
5月    75000
6月    80000
dtype: int64

销售汇总表:
              月度销售额   累计销售额  完成年度目标(%)
1月    50000    50000          10.0
2月    62000   112000          22.4
3月    58000   170000          34.0
4月    70000   240000          累计  34.0%
5月    75000   315000          63.0
6月   累计  395000          79.0
dtype: int64

分析:6 月底累计销售额为 39.5 万元,已完成年度目标的 79.0%。

Beispiel 5: Anwendung in DataFrame

cumsum kann auch in einem DataFrame spalten- oder zeilenweise verwendet werden.

Beispiel

import pandas as pd

# Erstelle einen DataFrame, der Verkäufe mehrerer Produkte enthält
sales_data = pd.DataFrame({
    'Produkt A': [100, 150, 120, 180],
    'Produkt B': [80, 90, 110, 130],
    'Produkt C': [50, 60, 70, 80]
}, index=['Januar', 'Februar', 'März', 'April'])

print("Monatliche Verkaufsdaten:")
print(sales_data)
print()

# Kumulierte Verkäufe nach Spalte berechnen (Standard)
cumulative_by_col = sales_data.cumsum()
print("Kumulierte Verkäufe nach Produkt:")
print(cumulative_by_col)
print()

# Kumulierte Verkäufe nach Zeile berechnen
cumulative_by_row = sales_data.cumsum(axis=1)
print("Kumulierte Verkäufe nach Monat:")
print(cumulative_by_row)

Ausgabe:

月度销售数据:
    产品A  产品B  产品C
1月  100    80    50
2月  150    90    60
3月 120
4月  180   130    80

按产品累计销量:
    产品A  产品B  产品C
1月  100    80    50
2月  250   170   110
3月 370   280   180
4月 550   410   260

按月度累计销量:
     产品A   产品B   产品C
1月  100.0  180.0  230.0
2月  250.0  340.0  400.0

Code-Erklärung:

  • Standardmäßig,axis=0Die kumulative Summe wird entlang der Spaltenrichtung berechnet.
  • Einstellungaxis=1berechnet die kumulative Summe entlang der Zeilenrichtung.

Hinweise

  • cumsum gibt eine neue Series zurück und verändert die ursprünglichen Daten nicht.
  • Standardmäßig ist skipna=True, und NaN-Werte werden übersprungen.
  • Wenn skipna=False, führt das Auftreten von NaN dazu, dass alle nachfolgenden Werte zu NaN werden.
  • In einem DataFrame kann der Parameter axis verwendet werden, um die kumulative Richtung zu steuern.
  • Die Berechnung der kumulativen Summe ist reihenfolgeabhängig und kann nicht parallelisiert werden.

Zusammenfassung

Series.cumsum()ist eine grundlegende Funktion in der Zeitreihenanalyse. Zu ihren Hauptmerkmalen gehören:

  • Berechnet den kumulativen Wert vom Anfang bis zur aktuellen Position.
  • Unterstützt die Behandlung fehlender Werte, gesteuert über den Parameter skipna.
  • Unterstützt zeilen- oder spaltenweise Berechnung in einem DataFrame.
  • Wird häufig in der Finanzanalyse, Vertriebsstatistik, Fortschrittsverfolgung und anderen Szenarien verwendet.

Die kumulative Summe hilft uns, den Trend der Daten im Zeitverlauf zu verstehen, und ist ein wichtiges Werkzeug in der Datenanalyse. In Kombination mit anderen kumulativen Funktionen (wie cumprod, cummax, cummin) kann sie umfassendere Daten-Einblicke liefern.

Pandas 常用函数Gängige Pandas-Funktionen

Andere Erweiterungen