0
0
PandasHow-ToBeginner · 3 min read

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

ParameterDescriptionDefault
axisAxis to sum along: 0 for columns, 1 for rows0 (DataFrame), None (Series)
skipnaWhether to ignore NaN values during sumTrue
*args, **kwargsAdditional 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.