import time df = pd.read_csv('large_sales_data.csv') start = time.time() # Fix 1: Correct data types upfront df['region'] = df['region'].astype('category') df['category'] = df['category'].astype('category') df['status'] = df['status'].astype('category') # Fix 2: Vectorized revenue calculation, no temporary columns df['net_revenue'] = df['sales'] * df['quantity'] * (1 - 0.075) # Fix 3: Vectorized flagging with np.where df['order_flag'] = np.where(df['net_revenue'] > 50000, 'high', 'low') # Final aggregation result = df.groupby('region')['net_revenue'].sum() end = time.time() print(f"Total runtime: {end - start:.2f} seconds")