How to Use cumsum in pandas for Cumulative Sums
Use the
cumsum() method in pandas on a Series or DataFrame to get the cumulative sum of values. It adds each value to the sum of all previous values along the specified axis.Syntax
The cumsum() method calculates the cumulative sum of values in a pandas Series or DataFrame.
axis=0: Sum down each column (default for DataFrame).axis=1: Sum across each row.skipna=True: Ignore missing values when summing.
python
Series.cumsum(axis=None, skipna=True, *args, **kwargs) DataFrame.cumsum(axis=0, skipna=True, *args, **kwargs)
Example
This example shows how to use cumsum() on a pandas Series and DataFrame to get cumulative sums down columns and across rows.
python
import pandas as pd # Series example s = pd.Series([1, 2, 3, 4]) print('Series cumulative sum:') print(s.cumsum()) # DataFrame example df = pd.DataFrame({ 'A': [1, 2, 3], 'B': [4, 5, 6] }) print('\nDataFrame cumulative sum down columns (axis=0):') print(df.cumsum()) print('\nDataFrame cumulative sum across rows (axis=1):') print(df.cumsum(axis=1))
Output
Series cumulative sum:
0 1
1 3
2 6
3 10
dtype: int64
DataFrame cumulative sum down columns (axis=0):
A B
0 1 4
1 3 9
2 6 15
DataFrame cumulative sum across rows (axis=1):
A B
0 1 5
1 2 7
2 3 9
Common Pitfalls
One common mistake is forgetting the axis parameter when using cumsum() on DataFrames, which defaults to summing down columns. Another is not handling missing values properly, which can affect the cumulative sum if skipna=False.
Also, cumsum() works element-wise and does not sort data first, so ensure your data is ordered if order matters.
python
import pandas as pd # DataFrame with missing values df = pd.DataFrame({ 'A': [1, None, 3], 'B': [4, 5, None] }) # Wrong: skipna=False includes NaN and results in NaN after first missing print('Cumsum with skipna=False:') print(df.cumsum(skipna=False)) # Right: skipna=True ignores NaN and continues sum print('\nCumsum with skipna=True:') print(df.cumsum(skipna=True))
Output
Cumsum with skipna=False:
A B
0 1.0 4.0
1 NaN 9.0
2 NaN NaN
Cumsum with skipna=True:
A B
0 1.0 4.0
1 1.0 9.0
2 4.0 9.0
Quick Reference
| Parameter | Description | Default |
|---|---|---|
| axis | Axis to sum along: 0 for columns, 1 for rows | 0 (DataFrame), None (Series) |
| skipna | Whether to ignore NaN values during sum | True |
| *args, **kwargs | Additional arguments (rarely used) | None |
Key Takeaways
Use pandas
cumsum() to get cumulative sums of Series or DataFrame values.Specify
axis=0 to sum down columns and axis=1 to sum across rows in DataFrames.Handle missing values with
skipna=True to avoid NaNs breaking the cumulative sum.Ensure your data is ordered correctly before applying
cumsum() if order matters.