1{
2 "nbformat": 4,
3 "nbformat_minor": 5,
4 "metadata": {
5 "kernelspec": {
6 "display_name": "Python 3",
7 "language": "python",
8 "name": "python3"
9 },
10 "language_info": {
11 "name": "python",
12 "version": "3.12.0"
13 }
14 },
15 "cells": [
16 {
17 "cell_type": "markdown",
18 "metadata": {},
19 "source": [
20 "# Data Analysis Demo\n",
21 "\n",
22 "Demonstrates pandas-style HTML table output and multiple output types."
23 ]
24 },
25 {
26 "cell_type": "code",
27 "metadata": {},
28 "execution_count": 1,
29 "source": [
30 "import pandas as pd\n",
31 "import numpy as np\n",
32 "\n",
33 "np.random.seed(42)"
34 ],
35 "outputs": []
36 },
37 {
38 "cell_type": "markdown",
39 "metadata": {},
40 "source": [
41 "## Generate Sample Data\n",
42 "\n",
43 "Create a DataFrame with sales data across regions."
44 ]
45 },
46 {
47 "cell_type": "code",
48 "metadata": {},
49 "execution_count": 2,
50 "source": [
51 "df = pd.DataFrame({\n",
52 " 'region': ['Europe', 'Europe', 'Asia', 'Asia', 'Americas', 'Americas'],\n",
53 " 'product': ['Widget A', 'Widget B', 'Widget A', 'Widget B', 'Widget A', 'Widget B'],\n",
54 " 'revenue': [12500, 8900, 15200, 11300, 9800, 7600],\n",
55 " 'units': [250, 178, 304, 226, 196, 152],\n",
56 " 'growth': [0.12, -0.03, 0.28, 0.15, 0.05, -0.08]\n",
57 "})\n",
58 "df"
59 ],
60 "outputs": [
61 {
62 "output_type": "execute_result",
63 "execution_count": 2,
64 "data": {
65 "text/html": [
66 "<div>\n",
67 "<table border=\"1\" class=\"dataframe\">\n",
68 " <thead>\n",
69 " <tr style=\"text-align: right;\">\n",
70 " <th></th>\n",
71 " <th>region</th>\n",
72 " <th>product</th>\n",
73 " <th>revenue</th>\n",
74 " <th>units</th>\n",
75 " <th>growth</th>\n",
76 " </tr>\n",
77 " </thead>\n",
78 " <tbody>\n",
79 " <tr><th>0</th><td>Europe</td><td>Widget A</td><td>12500</td><td>250</td><td>0.12</td></tr>\n",
80 " <tr><th>1</th><td>Europe</td><td>Widget B</td><td>8900</td><td>178</td><td>-0.03</td></tr>\n",
81 " <tr><th>2</th><td>Asia</td><td>Widget A</td><td>15200</td><td>304</td><td>0.28</td></tr>\n",
82 " <tr><th>3</th><td>Asia</td><td>Widget B</td><td>11300</td><td>226</td><td>0.15</td></tr>\n",
83 " <tr><th>4</th><td>Americas</td><td>Widget A</td><td>9800</td><td>196</td><td>0.05</td></tr>\n",
84 " <tr><th>5</th><td>Americas</td><td>Widget B</td><td>7600</td><td>152</td><td>-0.08</td></tr>\n",
85 " </tbody>\n",
86 "</table>\n",
87 "</div>"
88 ],
89 "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"
90 },
91 "metadata": {}
92 }
93 ]
94 },
95 {
96 "cell_type": "markdown",
97 "metadata": {},
98 "source": [
99 "## Summary Statistics"
100 ]
101 },
102 {
103 "cell_type": "code",
104 "metadata": {},
105 "execution_count": 3,
106 "source": [
107 "summary = df.groupby('region').agg({\n",
108 " 'revenue': 'sum',\n",
109 " 'units': 'sum',\n",
110 " 'growth': 'mean'\n",
111 "}).round(2)\n",
112 "summary"
113 ],
114 "outputs": [
115 {
116 "output_type": "execute_result",
117 "execution_count": 3,
118 "data": {
119 "text/html": [
120 "<div>\n",
121 "<table border=\"1\" class=\"dataframe\">\n",
122 " <thead>\n",
123 " <tr style=\"text-align: right;\">\n",
124 " <th></th>\n",
125 " <th>revenue</th>\n",
126 " <th>units</th>\n",
127 " <th>growth</th>\n",
128 " </tr>\n",
129 " <tr>\n",
130 " <th>region</th>\n",
131 " <th></th>\n",
132 " <th></th>\n",
133 " <th></th>\n",
134 " </tr>\n",
135 " </thead>\n",
136 " <tbody>\n",
137 " <tr><th>Americas</th><td>17400</td><td>348</td><td>-0.02</td></tr>\n",
138 " <tr><th>Asia</th><td>26500</td><td>530</td><td>0.22</td></tr>\n",
139 " <tr><th>Europe</th><td>21400</td><td>428</td><td>0.04</td></tr>\n",
140 " </tbody>\n",
141 "</table>\n",
142 "</div>"
143 ],
144 "text/plain": " revenue units growth\nregion \nAmericas 17400 348 -0.02\nAsia 26500 530 0.22\nEurope 21400 428 0.04"
145 },
146 "metadata": {}
147 }
148 ]
149 },
150 {
151 "cell_type": "markdown",
152 "metadata": {},
153 "source": [
154 "## Key Findings\n",
155 "\n",
156 "- Asia has the highest total revenue ($26,500) and strongest growth (22%)\n",
157 "- Americas shows slight decline (-2% average growth)\n",
158 "- Widget A consistently outperforms Widget B across all regions"
159 ]
160 },
161 {
162 "cell_type": "code",
163 "metadata": {},
164 "execution_count": 4,
165 "source": [
166 "total_revenue = df['revenue'].sum()\n",
167 "top_region = summary['revenue'].idxmax()\n",
168 "print(f\"Total revenue: ${total_revenue:,}\")\n",
169 "print(f\"Top region: {top_region}\")\n",
170 "print(f\"Total units sold: {df['units'].sum():,}\")"
171 ],
172 "outputs": [
173 {
174 "output_type": "stream",
175 "name": "stdout",
176 "text": [
177 "Total revenue: $65,300\n",
178 "Top region: Asia\n",
179 "Total units sold: 1,306\n"
180 ]
181 }
182 ]
183 }
184 ]
185}