Status
Done
1. Cumulative Calculations
df['series'].cumsum()Ā ā Cumulative sumdf['series'].cumprod()Ā ā Cumulative productdf['series'].cummax()Ā ā Cumulative maximumdf['series'].cummin()Ā ā Cumulative minimum
2. Ranking & Percent Changes
df['series'].rank()Ā ā Rank values (with tie-breaking methods)df['series'].pct_change()Ā ā Percentage change between elementsdf['series'].quantile(q)Ā ā Value at quantile q (0-1)
3. Extreme Value Selection
df['series'].nlargest(n)Ā ā Top n largest valuesdf['series'].nsmallest(n)Ā ā Top n smallest values
4. Window Calculations
df['series'].rolling(window)Ā ā Rolling window calculations (mean, sum, etc.)df['series'].expanding()Ā ā Expanding window calculationsdf['series'].ewm(span)Ā ā Exponentially weighted moving average
Key Notes:
- Cumulative methods (
cum*) are useful for running totals/products rolling()/expanding()/ewm()Ā return objects for further calculationsnlargest()/nsmallest()Ā preserve original indices by default
Sample Dataset
import pandas as pd
data = {
'product': ['Laptop', 'Tablet', 'Phone', 'Monitor', 'Keyboard', 'Mouse', 'Headphones', 'Speaker'],
'price': [1200, 500, 800, 300, 100, 50, 150, 200],
'sales': [15, 22, 18, 10, 30, 40, 25, 12]
}
df = pd.DataFrame(data) product price sales
0 Laptop 1200 15
1 Tablet 500 22
2 Phone 800 18
3 Monitor 300 10
4 Keyboard 100 30
5 Mouse 50 40
6 Headphones 150 25
7 Speaker 200 121. Cumulative Calculations
ā£
1.1Ā Series.cumsum()
ā£
1.2Ā Series.cumprod()
ā£
1.3Ā Series.cummax()
ā£
1.4Ā Series.cummin()
2. Ranking & Percent Changes
ā£
2.1Ā Series.rank()
ā£
2.2Ā Series.pct_change()
ā£
2.3Ā Series.quantile()
3. Extreme Value Selection
ā£
3.1Ā Series.nlargest()
ā£
3.2Ā Series.nsmallest()
4. Window Calculations
ā£
4.1Ā Series.rolling()
ā£
4.2Ā Series.expanding()
ā£
4.3Ā Series.ewm()
Summary Table
Method | Description | Example Use Case |
.cumsum() | Cumulative sum | df['price'].cumsum() |
.cumprod() | Cumulative product | df['sales'].cumprod() |
.cummax() | Running maximum | df['price'].cummax() |
.cummin() | Running minimum | df['price'].cummin() |
.rank() | Rank values | df['price'].rank() |
.pct_change() | Percentage change | df['sales'].pct_change() |
.quantile() | Quantile value | df['price'].quantile(0.5) |
.nlargest() | TopĀ nĀ values | df['price'].nlargest(3) |
.nsmallest() | BottomĀ nĀ values | df['sales'].nsmallest(2) |
.rolling() | Rolling window | df['price'].rolling(2).mean() |
.expanding() | Expanding window | df['sales'].expanding().sum() |
.ewm() | Exponential moving average | df['price'].ewm(span=3).mean() |
Key Notes
- Cumulative Methods:
- Useful for running totals (
cumsum), tracking highs/lows (cummax/cummin), or growth metrics (cumprod). - Ranking & Percent Changes:
rank()Ā handles ties with methods likeĀ'average'Ā (default),Ā'min', orĀ'first'.pct_change()Ā is ideal for time-series growth analysis.- Extreme Values:
nlargest()/nsmallest()Ā return results with original indices (unlikeĀsort_values()).- Window Calculations:
rolling(): Fixed window size (e.g., 7-day rolling average).expanding(): Window grows from start to current row.ewm(): Recent values weighted more heavily (e.g., stock price smoothing).