Cumulative Sum in Pandas – cumsum(), cummax(), cummin() & More in Python 2026
Cumulative calculations are extremely useful in data manipulation for running totals, growth analysis, ranking over time, and creating useful features. In 2026, Pandas provides fast and flexible cumulative functions like cumsum(), cummax(), cummin(), and cumprod().
TL;DR — Key Cumulative Methods
.cumsum()– Running total.cummax()– Running maximum.cummin()– Running minimum.cumprod()– Running product.cummax() / .cummin()withgroupby()for segmented analysis
1. Basic Cumulative Sum
import pandas as pd
df = pd.read_csv("sales_data.csv", parse_dates=["order_date"])
# Simple running total
df["cumulative_sales"] = df["amount"].cumsum()
# Running total within each region
df = df.sort_values("order_date")
df["cumulative_sales_by_region"] = df.groupby("region")["amount"].cumsum()
print(df[["order_date", "region", "amount", "cumulative_sales_by_region"]].head(10))
2. Multiple Cumulative Operations
df["cum_sales"] = df["amount"].cumsum()
df["cum_max"] = df["amount"].cummax()
df["cum_min"] = df["amount"].cummin()
df["running_avg"] = df["amount"].expanding().mean() # expanding window average
3. Real-World Example: Monthly Running Totals
monthly = (
df
.groupby([df["order_date"].dt.to_period("M"), "region"])
.agg(total_sales=("amount", "sum"))
.reset_index()
)
# Calculate cumulative sales per region over months
monthly["cumulative_sales"] = monthly.groupby("region")["total_sales"].cumsum()
print(monthly)
4. Best Practices in 2026
- Always sort your DataFrame by the time column before applying cumulative functions
- Use
groupby()+cumsum()for segmented running totals - Combine
cumsum()withexpanding()for running statistics - Use
.cumsum()to create useful features like "days since first purchase" or "cumulative revenue" - Be careful with NaN values — they can break cumulative calculations (use
.fillna(0)when appropriate)
Conclusion
Cumulative operations like cumsum(), cummax(), and cummin() are powerful tools for time-based data manipulation. In 2026, combining them with groupby() allows you to create insightful running totals, growth metrics, and historical comparisons with very little code. These functions turn raw transactional data into valuable business intelligence.
Next steps:
- Add cumulative sales or cumulative customer count columns to one of your current datasets and analyze the trends