# Step 1: Sort df = df.sort_values(['region', 'order_date']) # Step 2: Rolling average per region df['rolling_avg'] = ( df.groupby('region')['sales'] .transform(lambda x: x.rolling(window=7).mean()) ) # Step 3: Flag high-value orders df['high_value'] = df['sales'] > df['rolling_avg'] * 1.5 # Step 4: Monthly aggregation df['month'] = pd.to_datetime(df['order_date']).dt.to_period('M') monthly_summary = df.groupby(['region', 'month'])['sales'].sum()