Data Analysis Demo
Demonstrates pandas-style HTML table output and multiple output types.
[1]
1import pandas as pd2import numpy as np3
4np.random.seed(42)Generate Sample Data
Create a DataFrame with sales data across regions.
[2]
1df = pd.DataFrame({2 'region': ['Europe', 'Europe', 'Asia', 'Asia', 'Americas', 'Americas'],3 'product': ['Widget A', 'Widget B', 'Widget A', 'Widget B', 'Widget A', 'Widget B'],4 'revenue': [12500, 8900, 15200, 11300, 9800, 7600],5 'units': [250, 178, 304, 226, 196, 152],6 'growth': [0.12, -0.03, 0.28, 0.15, 0.05, -0.08]7})8df| region | product | revenue | units | growth | |
|---|---|---|---|---|---|
| 0 | Europe | Widget A | 12500 | 250 | 0.12 |
| 1 | Europe | Widget B | 8900 | 178 | -0.03 |
| 2 | Asia | Widget A | 15200 | 304 | 0.28 |
| 3 | Asia | Widget B | 11300 | 226 | 0.15 |
| 4 | Americas | Widget A | 9800 | 196 | 0.05 |
| 5 | Americas | Widget B | 7600 | 152 | -0.08 |
Summary Statistics
[3]
1summary = df.groupby('region').agg({2 'revenue': 'sum',3 'units': 'sum',4 'growth': 'mean'5}).round(2)6summary| revenue | units | growth | |
|---|---|---|---|
| region | |||
| Americas | 17400 | 348 | -0.02 |
| Asia | 26500 | 530 | 0.22 |
| Europe | 21400 | 428 | 0.04 |
Key Findings
- Asia has the highest total revenue ($26,500) and strongest growth (22%)
- Americas shows slight decline (-2% average growth)
- Widget A consistently outperforms Widget B across all regions
[4]
1total_revenue = df['revenue'].sum()2top_region = summary['revenue'].idxmax()3print(f"Total revenue: ${total_revenue:,}")4print(f"Top region: {top_region}")5print(f"Total units sold: {df['units'].sum():,}")Total revenue: $65,300 Top region: Asia Total units sold: 1,306