{
"nbformat": 4,
"nbformat_minor": 5,
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"name": "python",
"version": "3.12.0"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Data Analysis Demo\n",
"\n",
"Demonstrates pandas-style HTML table output and multiple output types."
]
},
{
"cell_type": "code",
"metadata": {},
"execution_count": 1,
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"np.random.seed(42)"
],
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generate Sample Data\n",
"\n",
"Create a DataFrame with sales data across regions."
]
},
{
"cell_type": "code",
"metadata": {},
"execution_count": 2,
"source": [
"df = pd.DataFrame({\n",
" 'region': ['Europe', 'Europe', 'Asia', 'Asia', 'Americas', 'Americas'],\n",
" 'product': ['Widget A', 'Widget B', 'Widget A', 'Widget B', 'Widget A', 'Widget B'],\n",
" 'revenue': [12500, 8900, 15200, 11300, 9800, 7600],\n",
" 'units': [250, 178, 304, 226, 196, 152],\n",
" 'growth': [0.12, -0.03, 0.28, 0.15, 0.05, -0.08]\n",
"})\n",
"df"
],
"outputs": [
{
"output_type": "execute_result",
"execution_count": 2,
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>region</th>\n",
" <th>product</th>\n",
" <th>revenue</th>\n",
" <th>units</th>\n",
" <th>growth</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr><th>0</th><td>Europe</td><td>Widget A</td><td>12500</td><td>250</td><td>0.12</td></tr>\n",
" <tr><th>1</th><td>Europe</td><td>Widget B</td><td>8900</td><td>178</td><td>-0.03</td></tr>\n",
" <tr><th>2</th><td>Asia</td><td>Widget A</td><td>15200</td><td>304</td><td>0.28</td></tr>\n",
" <tr><th>3</th><td>Asia</td><td>Widget B</td><td>11300</td><td>226</td><td>0.15</td></tr>\n",
" <tr><th>4</th><td>Americas</td><td>Widget A</td><td>9800</td><td>196</td><td>0.05</td></tr>\n",
" <tr><th>5</th><td>Americas</td><td>Widget B</td><td>7600</td><td>152</td><td>-0.08</td></tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": " region product revenue units growth\n0 Europe Widget A 12500 250 0.12\n1 Europe Widget B 8900 178 -0.03\n2 Asia Widget A 15200 304 0.28\n3 Asia Widget B 11300 226 0.15\n4 Americas Widget A 9800 196 0.05\n5 Americas Widget B 7600 152 -0.08"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Summary Statistics"
]
},
{
"cell_type": "code",
"metadata": {},
"execution_count": 3,
"source": [
"summary = df.groupby('region').agg({\n",
" 'revenue': 'sum',\n",
" 'units': 'sum',\n",
" 'growth': 'mean'\n",
"}).round(2)\n",
"summary"
],
"outputs": [
{
"output_type": "execute_result",
"execution_count": 3,
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>revenue</th>\n",
" <th>units</th>\n",
" <th>growth</th>\n",
" </tr>\n",
" <tr>\n",
" <th>region</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr><th>Americas</th><td>17400</td><td>348</td><td>-0.02</td></tr>\n",
" <tr><th>Asia</th><td>26500</td><td>530</td><td>0.22</td></tr>\n",
" <tr><th>Europe</th><td>21400</td><td>428</td><td>0.04</td></tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": " revenue units growth\nregion \nAmericas 17400 348 -0.02\nAsia 26500 530 0.22\nEurope 21400 428 0.04"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Key Findings\n",
"\n",
"- Asia has the highest total revenue ($26,500) and strongest growth (22%)\n",
"- Americas shows slight decline (-2% average growth)\n",
"- Widget A consistently outperforms Widget B across all regions"
]
},
{
"cell_type": "code",
"metadata": {},
"execution_count": 4,
"source": [
"total_revenue = df['revenue'].sum()\n",
"top_region = summary['revenue'].idxmax()\n",
"print(f\"Total revenue: ${total_revenue:,}\")\n",
"print(f\"Top region: {top_region}\")\n",
"print(f\"Total units sold: {df['units'].sum():,}\")"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Total revenue: $65,300\n",
"Top region: Asia\n",
"Total units sold: 1,306\n"
]
}
]
}
]
} v1
commit 9555332
message create data-analysis.ipynb via macOS
author anton
date Apr 18, 2026
size 6.0 KB