{ "cells": [ { "cell_type": "markdown", "id": "bac03363", "metadata": {}, "source": [ "# Does sugar make candy popular? An exploration\n", "\n", "**Dataset:** FiveThirtyEight's [candy-power-ranking](https://github.com/fivethirtyeight/data/tree/master/candy-power-ranking) — 85 Halloween candies, each with binary attributes (chocolate, fruity, caramel...), a sugar percentile, a price percentile, and `winpercent`: how often that candy won in ~269k head-to-head \"which would you rather get?\" matchups.\n", "\n", "**My starting question:** I assumed sugar content would be the main driver of popularity — candy is sugar delivery, right? Let's see.\n", "\n", "This notebook keeps my dead ends on purpose. The final essay only shows the path that worked; this shows the actual route." ] }, { "cell_type": "code", "execution_count": 1, "id": "738ae280", "metadata": { "execution": { "iopub.execute_input": "2026-06-11T06:54:20.576098Z", "iopub.status.busy": "2026-06-11T06:54:20.575887Z", "iopub.status.idle": "2026-06-11T06:54:21.199778Z", "shell.execute_reply": "2026-06-11T06:54:21.198804Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(85, 13)\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
competitornamechocolatefruitycaramelpeanutyalmondynougatcrispedricewaferhardbarpluribussugarpercentpricepercentwinpercent
0100 Grand1010010100.7320.86066.971725
13 Musketeers1000100100.6040.51167.602936
2One dime0000000000.0110.11632.261086
3One quarter0000000000.0110.51146.116505
4Air Heads0100000000.9060.51152.341465
\n", "
" ], "text/plain": [ " competitorname chocolate fruity caramel peanutyalmondy nougat \\\n", "0 100 Grand 1 0 1 0 0 \n", "1 3 Musketeers 1 0 0 0 1 \n", "2 One dime 0 0 0 0 0 \n", "3 One quarter 0 0 0 0 0 \n", "4 Air Heads 0 1 0 0 0 \n", "\n", " crispedricewafer hard bar pluribus sugarpercent pricepercent \\\n", "0 1 0 1 0 0.732 0.860 \n", "1 0 0 1 0 0.604 0.511 \n", "2 0 0 0 0 0.011 0.116 \n", "3 0 0 0 0 0.011 0.511 \n", "4 0 0 0 0 0.906 0.511 \n", "\n", " winpercent \n", "0 66.971725 \n", "1 67.602936 \n", "2 32.261086 \n", "3 46.116505 \n", "4 52.341465 " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "df = pd.read_csv('candy-data.csv')\n", "print(df.shape)\n", "df.head()" ] }, { "cell_type": "markdown", "id": "79299b16", "metadata": {}, "source": [ "## Step 1: Sanity / cleaning checks\n", "\n", "Before believing anything: missing values, duplicates, and whether the value ranges make sense." ] }, { "cell_type": "code", "execution_count": 2, "id": "bee17b6f", "metadata": { "execution": { "iopub.execute_input": "2026-06-11T06:54:21.201725Z", "iopub.status.busy": "2026-06-11T06:54:21.201535Z", "iopub.status.idle": "2026-06-11T06:54:21.209263Z", "shell.execute_reply": "2026-06-11T06:54:21.208282Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Missing values per column:\n", "competitorname 0\n", "chocolate 0\n", "fruity 0\n", "caramel 0\n", "peanutyalmondy 0\n", "nougat 0\n", "crispedricewafer 0\n", "hard 0\n", "bar 0\n", "pluribus 0\n", "sugarpercent 0\n", "pricepercent 0\n", "winpercent 0\n", "dtype: int64\n", "\n", "Duplicate names: 0\n", "\n", "sugarpercent range: 0.011 - 0.98799998\n", "winpercent range: 22.4 - 84.2\n" ] } ], "source": [ "print(\"Missing values per column:\")\n", "print(df.isna().sum())\n", "print(\"\\nDuplicate names:\", df.competitorname.duplicated().sum())\n", "print(\"\\nsugarpercent range:\", df.sugarpercent.min(), \"-\", df.sugarpercent.max())\n", "print(\"winpercent range:\", round(df.winpercent.min(),1), \"-\", round(df.winpercent.max(),1))" ] }, { "cell_type": "markdown", "id": "7e834733", "metadata": {}, "source": [ "Clean dataset — no missing values, no duplicates. Two oddities worth flagging: the set includes **One Dime** and **One Quarter** (FiveThirtyEight included loose change as a control in the matchups). I considered dropping them, but they were real options voters saw, so they stay — noted in the essay's caveats.\n", "\n", "Also note `sugarpercent` is a *percentile* (0–1 rank among these candies), not grams of sugar. That limits what I can claim — more in caveats." ] }, { "cell_type": "code", "execution_count": 3, "id": "d92fe278", "metadata": { "execution": { "iopub.execute_input": "2026-06-11T06:54:21.211343Z", "iopub.status.busy": "2026-06-11T06:54:21.210660Z", "iopub.status.idle": "2026-06-11T06:54:21.221361Z", "shell.execute_reply": "2026-06-11T06:54:21.220373Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
competitornamesugarpercentwinpercent
2One dime0.01132.261086
3One quarter0.01146.116505
\n", "
" ], "text/plain": [ " competitorname sugarpercent winpercent\n", "2 One dime 0.011 32.261086\n", "3 One quarter 0.011 46.116505" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# FiveThirtyEight included loose change as control options in the matchups\n", "df[df.competitorname.isin(['One dime','One quarter'])][['competitorname','sugarpercent','winpercent']]" ] }, { "cell_type": "markdown", "id": "a0ec1791", "metadata": {}, "source": [ "## Step 2: The hypothesis I came in with — sugar drives popularity\n", "\n", "If true, a scatter of sugar percentile vs win rate should climb steeply." ] }, { "cell_type": "code", "execution_count": 4, "id": "fe6e11e5", "metadata": { "execution": { "iopub.execute_input": "2026-06-11T06:54:21.223560Z", "iopub.status.busy": "2026-06-11T06:54:21.222848Z", "iopub.status.idle": "2026-06-11T06:54:21.385440Z", "shell.execute_reply": "2026-06-11T06:54:21.384439Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAq4AAAHWCAYAAAC2Zgs3AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAez1JREFUeJzt3XlcVOX+B/DPDDALDAyC7KsIueNaSnpzLepaaS6ZP7tqmqZppraYbWallt32xZbbNbpmlmbeysqM3FOvW+auqIggi4rMMDDMwMz5/THNwDCDAjL75/168RLOOXPmGQ/MfM/zfJ/vIxIEQQARERERkZsTu7oBRERERESNwcCViIiIiDwCA1ciIiIi8ggMXImIiIjIIzBwJSIiIiKPwMCViIiIiDwCA1ciIiIi8ggMXImIiIjIIzBwJSIiIiKPwMCViMhN5ebmQiQS4bPPPmvR877wwgsQiUQtes6mOn/+PGQyGXbs2OHSdrizDz/8EImJidDpdK5uCpHbYOBK5AUOHTqEUaNGISkpCTKZDHFxcbj11lvx7rvvurpp5CEWL16MdevWOe35XnzxRfTu3Rt9+/Z12nNei06nw7x58xAbGwu5XI7evXtj48aNjXrs2rVrMWbMGKSkpCAwMBDt2rXDY489hrKyMptj58yZgx49eiAsLAyBgYHo0KEDXnjhBWg0GqvjJk6cCL1ej48++qglXh6RVxAJgiC4uhFE1Hy///47Bg4ciMTEREyYMAHR0dE4f/48du3ahdOnTyMnJ8fVTaRmys3NRZs2bbB8+XJMnDixxc5bU1ODmpoayGQyyzaFQoFRo0a1eO+uPRcvXkRcXByysrIwduxYhz9fY40dOxZr1qzB7NmzkZaWhs8++wx79uzBpk2b0K9fv6s+tnXr1oiNjcXw4cORmJiIQ4cO4cMPP0RKSgr2798PuVxuObZfv37o2bMnUlNTIZPJcODAAfz73/9Gr169sHXrVojFtX1K8+bNw1dffYWzZ8+6vJecyC0IROTR/v73vwsRERHClStXbPYVFxc7v0GNZDQahcrKSlc3w62dPXtWACAsX768Rc6n0Wga3BcUFCRMmDChRZ7nWt544w1BLpcL5eXl1zy2oqLCCS0ShN27dwsAhNdee82yTavVCm3bthUyMjKu+fhNmzbZbMvKyhIACJ988sk1H//Pf/5TACDs3LnTavvevXsFAEJ2dva1XwSRD2CqAJGHO336NDp16oTQ0FCbfZGRkZbvr5YvKRKJ8MILL1ht27x5M3r16gWZTIa2bdvio48+spsbuXz5cgwaNAiRkZGQSqXo2LEjli1bZvMcycnJuPPOO7Fhwwb06tULcrm8wSHQmTNnQqFQoLKy0mbf2LFjER0dDYPBAADYu3cvMjMz0bp1a8jlcrRp0waTJk2ye1577fnll1/QrVs3yGQydOzYEWvXrrU59syZMxg9erRlaLdPnz5Yv369zf+XSCTCV199haeffhrR0dEICgrC3XffjfPnz9s8t70e1AEDBmDAgAFXbfeff/6JiRMnIiUlBTKZDNHR0Zg0aRIuX75sdZz5Wh09ehT/93//h1atWll6DetfR5FIhIqKCmRlZUEkEkEkEmHixInYtGkTRCIRvv32W5t2rFy5EiKRCDt37rxqe+1Zt24devfuDYVCYfP6O3fujH379uGWW25BYGAgnn766SafvznWrFkDPz8/TJ061bJNJpNh8uTJ2Llzp801rM/edbvnnnsAAMeOHbvm8ycnJwOATWpBz549ERYWhv/+97/XPAeRL/B3dQOI6PokJSVh586dOHz4MDp37twi5zxw4ABuv/12xMTEYOHChTAYDHjxxRcRERFhc+yyZcvQqVMn3H333fD398f333+Phx9+GEajETNmzLA69sSJExg7diweeughTJkyBe3atbP7/GPGjMH777+P9evXY/To0ZbtlZWV+P777zFx4kT4+fmhpKQEt912GyIiIvDUU08hNDQUubm5doNPe06dOoUxY8Zg2rRpmDBhApYvX47Ro0fj559/xq233goAKC4uxs0334zKykrMmjUL4eHhyMrKwt133401a9ZYghOzRYsWQSQSYd68eSgpKcFbb72FIUOG4I8//rAaLm6ujRs34syZM3jggQcQHR2NI0eO4OOPP8aRI0ewa9cumxuL0aNHIy0tDYsXL4bQQGbYf/7zHzz44IO46aabLIFb27Zt0adPHyQkJOCLL76weZ1ffPEF2rZti4yMjCa1v7q6Gnv27MH06dPt7r98+TLuuOMO3Hfffbj//vsRFRXV4Ll0Oh3Ky8sb9bytW7e+6v4DBw7ghhtuQEhIiNX2m266CQDwxx9/ICEhoVHPZVZUVNTgc9fU1KCsrAx6vR6HDx/Gs88+i+DgYMvz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a1BYWGiVH9y2bVvs2rULer3esu2HH364Zskle//fAPDWW29d87VeS1BQkN1gGjDNir/jjjuwYsUKfPHFF7j99tuvOUu/IQEBAejVqxf27t17Ha01ackc11GjRsFgMODjjz+2bNPpdFi+fDl69+5tVVEgLy/PcuNiVlRUhNtuuw1isRgbNmywW4EDMN042svH/te//gWg9oazrv379+Pmm2++5msg8gXscSXycI888ggqKytxzz33oH379tDr9fj9998tPZR1e6QefPBBvPLKK3jwwQctq/SYexjreuGFF/DLL7+gb9++mD59OgwGA9577z107twZf/zxh+W42267DRKJBHfddRceeughaDQafPLJJ4iMjLQ77NpUPXr0QGpqKp555hnodDqbXr6srCx88MEHuOeee9C2bVuUl5fjk08+QUhICP7+979f8/w33HADJk+ejD179iAqKgr//ve/UVxcbBV4P/XUU/jyyy9xxx13YNasWQgLC0NWVhbOnj2Lb775xmqVIwAICwtDv3798MADD6C4uBhvvfUWUlNTMWXKFMsxDz74INasWYPbb78d9957L06fPo0VK1agbdu2V21vSEgIbrnlFixduhTV1dWIi4vDL7/80iK9lz179sSvv/6KN954A7GxsWjTpo1Vbu/48eMxatQoAMBLL710Xc81bNgwPPPMMza9m03VkjmuvXv3xujRozF//nyUlJQgNTUVWVlZyM3Nxaeffmp1rDl1ou4NxO23344zZ87gySefxPbt27F9+3bLvqioKEt5tc2bN2PWrFkYNWoU0tLSoNfrsW3bNqxduxa9evWyScHYt28fSktLMWzYsBZ5nUQez1XlDIioZfz000/CpEmThPbt2wsKhUKQSCRCamqq8Mgjj9isnFVZWSlMnjxZUCqVQnBwsHDvvfcKJSUlNuWwBEEQsrOzhe7duwsSiURo27at8K9//Ut47LHHBJlMZnXcd999J6SnpwsymUxITk4WXn31VeHf//63AEA4e/as5bikpCRh6NChTX59zzzzjABASE1Ntdm3f/9+YezYsUJiYqIglUqFyMhI4c477xT27t17zfOa27NhwwYhPT1dkEqlQvv27YXVq1fbHHv69Glh1KhRQmhoqCCTyYSbbrpJ+OGHH6yOMZfD+vLLL4X58+cLkZGRglwuF4YOHSqcO3fO5pyvv/66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U1FRgdOnT2Py5MlWvbQ1NTVQKpXNPi8ReS8GrkTktWQyGW699VbceuuteO655/Dggw9iwYIFmDhxIsRiU4q/IAiW4835mk3x2muv4e2338Zbb72FLl26ICgoCLNnz7bKSwWAoKCg63sxADQaDQBg/fr1iIuLs9pXPx2i7vNda3KURqNBz5498cUXX9jsi4iIsHwfEBBgtU8kEsFoNDau8Q08LwB88skn6N27t9W+ugEyEZEZA1ci8hkdO3bEunXrANQGZIWFhZbeyroTtQCgXbt2+PHHH6227dmzx+rnHTt2YNiwYbj//vsBmCZPnTx5Eh07dmxWGw8ePAitVmsJNnft2gWFQoGEhASEhYVBKpUiLy/PKp/1WtLS0iCXy5GdnY0HH3zQZn+PHj3w1VdfITIyEiEhIc1qNwBIJBIYDIZGHx8VFYXY2FicOXMG48aNa/bzEpHvYFUBIvI6ly9fxqBBg7BixQr8+eefOHv2LFavXo2lS5di2LBhAEy9kH369MErr7yCY8eOYcuWLXj22WetzvPQQw/h+PHjmDdvHk6ePImvv/4an332GQBYZs2npaVh48aN+P3333Hs2DE89NBDKC4ubnbb9Xo9Jk+ejKNHj+LHH3/EggULMHPmTIjFYgQHB+Pxxx/HnDlzkJWVhdOnT2P//v149913kZWV1eA5ZTIZ5s2bhyeffBKff/45Tp8+jV27duHTTz8FAIwbNw6tW7fGsGHDsG3bNpw9exabN2/GrFmzkJ+f3+i2JycnY+vWrSgoKMClS5ca9ZiFCxdiyZIleOedd3Dy5EkcOnQIy5cvxxtvvNHo5yUi38EeVyLyOgqFAr1798abb76J06dPo7q6GgkJCZgyZQqefvppy3H//ve/MXnyZPTs2RPt2rXD0qVLcdttt1n2t2nTBmvWrMFjjz2Gt99+GxkZGXjmmWcwffp0y9D8s88+izNnziAzMxOBgYGYOnUqhg8fDpVK1ay2Dx48GGlpabjlllug0+kwduxYvPDCC5b9L730EiIiIrBkyRKcOXMGoaGh6NGjh9Xrsue5556Dv78/nn/+eVy4cAExMTGYNm0aACAwMBBbt27FvHnzMGLECJSXlyMuLg6DBw9uUg/siy++iIceeght27aFTqezSsNoyIMPPojAwEC89tpreOKJJxAUFIQuXbpg9uzZjX5eIvIdIqEx7yxERAQAWLRoET788EOcP3++xc89ceJElJWVWdIZiIjIGntciYiu4oMPPsCNN96I8PBw7NixA6+99hpmzpzp6mYREfkkBq5ERFdx6tQpvPzyyygtLUViYiIee+wxzJ8/39XNIiLySUwVICIiIiKPwKoCREREROQRGLgSERERkUdg4EpEREREHoGBKxERERF5BAauREREROQRGLgSERERkUdg4EpEREREHoGBKxERERF5hP8HPIJe6B1fqIkAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "r(sugar, win%) = 0.229 -> sugar explains ~5% of variance\n" ] } ], "source": [ "fig, ax = plt.subplots(figsize=(8,5))\n", "ax.scatter(df.sugarpercent*100, df.winpercent, alpha=0.6)\n", "m, b = np.polyfit(df.sugarpercent*100, df.winpercent, 1)\n", "xs = np.linspace(0,100,2)\n", "ax.plot(xs, m*xs+b, 'r--', label=f'trend (slope={m:.2f})')\n", "r = np.corrcoef(df.sugarpercent, df.winpercent)[0,1]\n", "ax.set_xlabel('Sugar percentile'); ax.set_ylabel('Win %')\n", "ax.set_title(f'Sugar vs popularity (r = {r:.2f})')\n", "ax.legend(); plt.show()\n", "print(f\"r(sugar, win%) = {r:.3f} -> sugar explains ~{r**2*100:.0f}% of variance\")" ] }, { "cell_type": "markdown", "id": "3ab78b1c", "metadata": {}, "source": [ "**Dead end #1.** r = 0.23. The trend line is nearly flat — moving from the least to the most sugary candy in the set is worth only ~10 points of win rate, and the scatter around the line is enormous. Sugar explains roughly 5% of the variance in popularity. My starting hypothesis is basically wrong.\n", "\n", "## Step 3: Maybe it's price? (Dead end #2)\n", "\n", "Second guess: maybe pricier candy reads as \"better\" in head-to-head choices." ] }, { "cell_type": "code", "execution_count": 5, "id": "18743a1e", "metadata": { "execution": { "iopub.execute_input": "2026-06-11T06:54:21.387358Z", "iopub.status.busy": "2026-06-11T06:54:21.387171Z", "iopub.status.idle": "2026-06-11T06:54:21.403048Z", "shell.execute_reply": "2026-06-11T06:54:21.402080Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "r(price, win%) = 0.345\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancount
sugar_q
Q1 least44.518
Q247.316
Q353.817
Q451.619
Q5 most54.915
\n", "
" ], "text/plain": [ " mean count\n", "sugar_q \n", "Q1 least 44.5 18\n", "Q2 47.3 16\n", "Q3 53.8 17\n", "Q4 51.6 19\n", "Q5 most 54.9 15" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r_price = np.corrcoef(df.pricepercent, df.winpercent)[0,1]\n", "print(f\"r(price, win%) = {r_price:.3f}\")\n", "# Also check sugar in buckets in case the relationship is non-linear\n", "df['sugar_q'] = pd.qcut(df.sugarpercent, 5, labels=['Q1 least','Q2','Q3','Q4','Q5 most'])\n", "df.groupby('sugar_q', observed=True).winpercent.agg(['mean','count']).round(1)" ] }, { "cell_type": "markdown", "id": "fa9c95b3", "metadata": {}, "source": [ "Price is a little stronger (r = 0.35) but still weak — and the quintile check confirms sugar isn't hiding a non-linear effect: the least-sugary fifth averages 44.5%, the most-sugary fifth 54.9%. A ~10-point spread across the entire sugar range, versus a 60-point spread between the best and worst candies. Something else is doing the work.\n", "\n", "## Step 4: Check every attribute at once\n", "\n", "Correlate all eleven features with win rate." ] }, { "cell_type": "code", "execution_count": 6, "id": "820b0334", "metadata": { "execution": { "iopub.execute_input": "2026-06-11T06:54:21.404739Z", "iopub.status.busy": "2026-06-11T06:54:21.404562Z", "iopub.status.idle": "2026-06-11T06:54:21.413211Z", "shell.execute_reply": "2026-06-11T06:54:21.412244Z" } }, "outputs": [ { "data": { "text/plain": [ "chocolate 0.637\n", "bar 0.430\n", "peanutyalmondy 0.406\n", "pricepercent 0.345\n", "crispedricewafer 0.325\n", "sugarpercent 0.229\n", "caramel 0.213\n", "nougat 0.199\n", "pluribus -0.247\n", "hard -0.310\n", "fruity -0.381\n", "Name: winpercent, dtype: float64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "feats = ['chocolate','fruity','caramel','peanutyalmondy','nougat',\n", " 'crispedricewafer','hard','bar','pluribus','sugarpercent','pricepercent']\n", "corrs = df[feats+['winpercent']].corr()['winpercent'].drop('winpercent').sort_values(ascending=False)\n", "corrs.round(3)" ] }, { "cell_type": "markdown", "id": "77a75070", "metadata": {}, "source": [ "There it is. **Chocolate (r = 0.64)** towers over everything; sugar is seventh. And fruity / hard candies are *negatively* correlated with winning.\n", "\n", "## Step 5: How big is the chocolate effect in plain terms?" ] }, { "cell_type": "code", "execution_count": 7, "id": "d10ec778", "metadata": { "execution": { "iopub.execute_input": "2026-06-11T06:54:21.414902Z", "iopub.status.busy": "2026-06-11T06:54:21.414680Z", "iopub.status.idle": "2026-06-11T06:54:21.429326Z", "shell.execute_reply": "2026-06-11T06:54:21.428369Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " chocolate: 60.9% vs 42.1% (gap +18.8 pp, n=37)\n", " crispedricewafer: 66.2% vs 48.9% (gap +17.3 pp, n=7)\n", " peanutyalmondy: 63.7% vs 47.7% (gap +16.0 pp, n=14)\n", " bar: 61.3% vs 46.7% (gap +14.6 pp, n=21)\n", " fruity: 44.1% vs 55.3% (gap -11.2 pp, n=38)\n", " hard: 40.5% vs 52.4% (gap -11.9 pp, n=15)\n" ] } ], "source": [ "for f in ['chocolate','crispedricewafer','peanutyalmondy','bar','fruity','hard']:\n", " has = df[df[f]==1].winpercent.mean()\n", " lacks = df[df[f]==0].winpercent.mean()\n", " print(f\"{f:>18}: {has:5.1f}% vs {lacks:5.1f}% (gap {has-lacks:+5.1f} pp, n={int(df[f].sum())})\")" ] }, { "cell_type": "code", "execution_count": 8, "id": "f4788bb2", "metadata": { "execution": { "iopub.execute_input": "2026-06-11T06:54:21.430949Z", "iopub.status.busy": "2026-06-11T06:54:21.430723Z", "iopub.status.idle": "2026-06-11T06:54:21.437121Z", "shell.execute_reply": "2026-06-11T06:54:21.436146Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " intercept: +34.5\n", " chocolate: +19.7\n", " peanutyalmondy: +10.1\n", " fruity: +9.4\n", " sugarpercent: +9.1\n", " crispedricewafer: +8.9\n", " hard: -6.2\n", " pricepercent: -5.9\n", " caramel: +2.2\n", " pluribus: -0.9\n", " nougat: +0.8\n", " bar: +0.4\n" ] } ], "source": [ "# And does chocolate survive controlling for everything else? Quick OLS.\n", "X = np.column_stack([np.ones(len(df))] + [df[f].values for f in feats])\n", "beta, *_ = np.linalg.lstsq(X, df.winpercent.values, rcond=None)\n", "for name, b_ in sorted(zip(['intercept']+feats, beta), key=lambda t:-abs(t[1])):\n", " print(f\"{name:>18}: {b_:+6.1f}\")" ] }, { "cell_type": "markdown", "id": "d61f7d14", "metadata": {}, "source": [ "Chocolate is worth **+18.8 points** of win rate raw, and **+19.7** holding every other attribute constant — by far the largest coefficient. (Caveat: with n=85 and correlated binary features, the smaller OLS coefficients are noisy; I only lean on the chocolate result, which is consistent across raw gaps, correlation, and regression.)\n", "\n", "## Step 6: The anecdote that seals it" ] }, { "cell_type": "code", "execution_count": 9, "id": "afb48acc", "metadata": { "execution": { "iopub.execute_input": "2026-06-11T06:54:21.438652Z", "iopub.status.busy": "2026-06-11T06:54:21.438489Z", "iopub.status.idle": "2026-06-11T06:54:21.445470Z", "shell.execute_reply": "2026-06-11T06:54:21.444534Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Reese's Miniatures: win rank #2 of 85, sugar rank #3 from the BOTTOM (sugar percentile 3.4)\n" ] } ], "source": [ "mini = df[df.competitorname==\"Reese's Miniatures\"].iloc[0]\n", "win_rank = int((df.winpercent > mini.winpercent).sum()) + 1\n", "sugar_rank = int((df.sugarpercent < mini.sugarpercent).sum()) + 1\n", "print(f\"Reese's Miniatures: win rank #{win_rank} of 85, \"\n", " f\"sugar rank #{sugar_rank} from the BOTTOM (sugar percentile {mini.sugarpercent*100:.1f})\")" ] }, { "cell_type": "markdown", "id": "ca5705b3", "metadata": {}, "source": [ "**Reese's Miniatures is the 2nd most-loved candy in the dataset and the 3rd least sugary.** If sugar drove candy love, this candy could not exist.\n", "\n", "## The sentence\n", "\n", "> Most people assume sugar is what makes candy popular — but in 269,000 head-to-head matchups, sugar barely mattered (r = 0.23). Chocolate did: it's worth ~19 points of win rate, every one of the top 10 candies contains it, and the #2 candy overall is nearly the least sugary of all 85.\n", "\n", "## Export chart data for the essay\n", "\n", "The website never touches this CSV — it loads 4 small pre-computed JSON files." ] }, { "cell_type": "code", "execution_count": 10, "id": "b772c13e", "metadata": { "execution": { "iopub.execute_input": "2026-06-11T06:54:21.447711Z", "iopub.status.busy": "2026-06-11T06:54:21.447088Z", "iopub.status.idle": "2026-06-11T06:54:21.475344Z", "shell.execute_reply": "2026-06-11T06:54:21.474339Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "exported ['candies.json', 'attribute_gaps.json', 'sugar_trend.json', 'chocolate_split.json']\n" ] } ], "source": [ "import json, os\n", "os.makedirs('../data', exist_ok=True)\n", "\n", "candies = [{'name': r.competitorname, 'sugar': round(float(r.sugarpercent)*100,1),\n", " 'win': round(float(r.winpercent),1), 'chocolate': int(r.chocolate)}\n", " for r in df.itertuples()]\n", "json.dump(candies, open('../data/candies.json','w'), indent=1)\n", "\n", "m, b = np.polyfit(df.sugarpercent*100, df.winpercent, 1)\n", "json.dump({'slope': round(float(m),4), 'intercept': round(float(b),2),\n", " 'r': round(float(np.corrcoef(df.sugarpercent, df.winpercent)[0,1]),2),\n", " 'note': 'OLS fit of winpercent on sugar percentile (0-100 scale)'},\n", " open('../data/sugar_trend.json','w'), indent=1)\n", "\n", "choc, non = df[df.chocolate==1], df[df.chocolate==0]\n", "json.dump({'chocolate': {'mean_win': round(float(choc.winpercent.mean()),1), 'n': len(choc)},\n", " 'nonChocolate': {'mean_win': round(float(non.winpercent.mean()),1), 'n': len(non)},\n", " 'gap': round(float(choc.winpercent.mean()-non.winpercent.mean()),1),\n", " 'anecdote': {'name': \"Reese's Miniatures\", 'win': round(float(mini.winpercent),1),\n", " 'sugar': round(float(mini.sugarpercent)*100,1), 'win_rank': win_rank,\n", " 'sugar_rank_from_bottom': sugar_rank}},\n", " open('../data/chocolate_split.json','w'), indent=1)\n", "\n", "labels = {'chocolate':'Chocolate','crispedricewafer':'Crisped rice / wafer',\n", " 'peanutyalmondy':'Peanuts or almonds','bar':'Candy bar form','nougat':'Nougat',\n", " 'caramel':'Caramel','pluribus':'Bag of pieces','fruity':'Fruity','hard':'Hard candy'}\n", "gaps = sorted([{'attr': lab, 'gap': round(float(df[df[f]==1].winpercent.mean()-df[df[f]==0].winpercent.mean()),1),\n", " 'n': int(df[f].sum())} for f, lab in labels.items()], key=lambda g:-g['gap'])\n", "json.dump(gaps, open('../data/attribute_gaps.json','w'), indent=1)\n", "print(\"exported\", os.listdir('../data'))" ] } ], "metadata": { "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.3" } }, "nbformat": 4, "nbformat_minor": 5 }