Apr 18, 2026 6.0 KB octet-stream
{
  "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"
          ]
        }
      ]
    }
  ]
}