]> apps.delaporte.us Git - dotfiles.git/blobdiff - data/issues.ipynb
Messing with quick keys and zen mode
[dotfiles.git] / data / issues.ipynb
index 5b1a1b36845a5cf782d0e8f6b5a4ae6d8d75c1b9..d718bbf59dc66633e5fe24c07d1b99e11042584b 100644 (file)
  "cells": [
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
+     ]
+    }
+   ],
+   "source": [
+    "import platform\n",
+    "import matplotlib.pyplot as plt\n",
+    "print(platform.python_version())"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Todo List\n",
+    "\n",
+    "- [x] add calculated year to the metadata\n",
+    "- [ ] make one chart per year\n",
+    "- [x] make sure all the data files are getting loaded"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
+     ]
+    }
+   ],
    "source": [
     "# Get ye data\n",
     "import glob\n",
     "import os\n",
     "\n",
-    "data_files = glob.glob(os.path.expanduser('~\\\\Data\\\\*.json'))\n"
+    "data_files = glob.glob(os.path.expanduser('~\\\\Data\\\\*.json'))\n",
+    "\n",
+    "for file in data_files:\n",
+    "\tprint(f\"{file}\", os.path.getsize(file))\n",
+    "\n"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": null,
    "metadata": {},
    "outputs": [
     {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "3.12.2\n"
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
      ]
     }
    ],
    "source": [
-    "import platform\n",
-    "print(platform.python_version())"
+    "import pandas as pd\n",
+    "\n",
+    "data_frames = []\n",
+    "for file in data_files:\n",
+    "\n",
+    "\tf = open(file, encoding='utf-8')\n",
+    "\tdf_temp = pd.read_json(f)\n",
+    "\tdata_frames.append(df_temp)\n",
+    "\n",
+    "df = pd.concat(data_frames, ignore_index=True)"
    ]
   },
   {
    "cell_type": "code",
    "execution_count": null,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
+     ]
+    }
+   ],
+   "source": [
+    "import numpy as np\n",
+    "df['count'] = np.zeros(len(df))\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Pie Chart"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
+     ]
+    }
+   ],
+   "source": [
+    "\n",
+    "dfp = df\n",
+    "# dfp['mile'] = [m.get('title') if m else None for m in dfp.milestone]\n",
+    "dfp['mile'] = [m.get('title') if hasattr(m, 'get') else None for m in dfp['milestone']]\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
+     ]
+    }
+   ],
+   "source": [
+    "closed_dates = pd.to_datetime(df['closedAt'], format='ISO8601')\n",
+    "dfp['year'] = closed_dates.dt.year\n",
+    "\n",
+    "dfp.drop(columns=['closedAt','milestone', 'url'], inplace=True)\n",
+    "print(dfp)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
+     ]
+    }
+   ],
    "source": [
-    "import pandas as pd\n",
     "\n",
-    "data_sets = []\n",
+    "mile_counts = dfp.groupby('mile')['title'].nunique()\n",
+    "dfp['count'] = dfp['mile'].map(mile_counts)\n",
+    "# dfp.drop(columns=['title'], inplace=True)\n",
+    "dfp['mile'] = df['mile'].drop_duplicates()\n",
+    "dfp.dropna(inplace=True)\n",
+    "dfp = dfp[dfp['count'] > 5]\n",
+    "print(dfp)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
+     ]
+    }
+   ],
+   "source": [
+    "mile_counts = df.groupby('mile')['count'].sum()\n",
+    "mile_counts = mile_counts.loc[lambda x: x > 5]\n",
     "\n",
-    "file = data_files[0]\n",
-    "print(file)\n",
     "\n",
-    "f = open(file, encoding='utf-16')\n",
-    "df = pd.read_json(f)"
+    "print(mile_counts)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 23,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
+     ]
+    }
+   ],
    "source": [
-    "df['closed'] = pd.to_datetime(df['closedAt'], format='ISO8601')"
+    "\n",
+    "plt.pie(mile_counts, labels=mile_counts.index, autopct='%0.1f%%')\n",
+    "plt.title(f\"Tasks by Milestone\")\n",
+    "plt.axis('equal')\n",
+    "plt.show()"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 26,
+   "execution_count": null,
    "metadata": {},
    "outputs": [
     {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas._libs.tslibs.timestamps.Timestamp'>\n"
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
      ]
     }
    ],
    "source": [
-    "print(type(df.closed[0]))"
+    "type(mile_counts)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Plot of closed issues by month and milestone for one project\n"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 29,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
+     ]
+    }
+   ],
+   "source": [
+    "closed_months = pd.to_datetime(df['closedAt'], format='ISO8601')\n",
+    "df['closed_month'] = closed_months.dt.month\n",
+    "df.drop(columns=['closedAt'], inplace=True)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
+     ]
+    }
+   ],
    "source": [
-    "for_plot = df.groupby(df.closed.dt.month)['url'].count()"
+    "df['mile'] = [d.get('title') if d else None for d in df.milestone]"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 33,
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
+     ]
+    }
+   ],
+   "source": [
+    "\n",
+    "dfg = df.groupby(['mile', 'closed_month']).count().reset_index()\n",
+    "dfg.drop(columns=['milestone', 'title', 'url'], inplace=True)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
    "metadata": {},
    "outputs": [
     {
-     "data": {
-      "text/plain": [
-       "<Axes: xlabel='closed'>"
-      ]
-     },
-     "execution_count": 33,
-     "metadata": {},
-     "output_type": "execute_result"
-    },
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
+     ]
+    }
+   ],
+   "source": [
+    "exclude_from_chart = [\n",
+    "\t'Job Aid Ideas']\n",
+    "\n",
+    "for ex in exclude_from_chart:\n",
+    "\tdfg = dfg[dfg['mile'] != ex]\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [
     {
-     "data": {
-      "image/png": "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Nu3w/PPPP5/NmjUrGzZsWJf89z1ixIhs4cKFWZZl2d///vesqqoqu/POO9v333PPPdnw4cPLNV7J9OrVK3vyySd3uf+JJ57IevXq1YkTdY7/vuWXy+V22P77fFf873zQoEHZ0qVL2x+/8cYb2VlnnZUdc8wx2T//+c999opFl71587jjjosVK1bscv9bXc2oVKNGjYrly5fv8PzcuXPjwx/+cHzoQx8qw1SlN3z48Fi7dm3748WLF7f/bTYi4oUXXoiBAweWY7SyGDp0aFx11VWxbt26uPfee8s9TnLnnXdeTJ48OaZOnRoTJ06MSy+9NL7yla/EDTfcEDfeeGN84QtfiLPPPrvcYyZ34IEHRlNT0y73NzU1xYEHHthp83SWgw46KObPnx/r1q3bYXvuuefit7/9bblHLImWlpbo06dP++N8Ph933XVXDB8+PE455ZR46aWXyjjdrhX97aaV4qtf/epuL4OOHDky/vjHP3biRJ3j7LPPjttuuy3OP//8HfbNnTs32tra4oYbbijDZKV14YUXdrgMetRRR3XYv3Dhwjj11FM7e6ySGzZsWPTo0WOX+3O5XEyYMKETJ+ocjY2N0atXr1i8eHFMnTo1Zs6cGWPHjo1LL700XnvttTjrrLPi6quvLveYyX3+85+PyZMnx9e+9rU47bTT2r9VetOmTbFo0aK45ppr4qKLLirzlOkdd9xxsX79+hg2bNhO97/66qtd8i+Khx56aDzxxBNx2GGHtT/Xs2fP+PnPfx7nnHNOnHnmmWWcbte67D0WAF3RN77xjfjud78bGzdujFwuFxH/uZdqwIABMX369Lj00kvLPGF6CxYsiK1bt8anP/3pne5/5ZVX4u67744pU6Z08mSlddlll8WqVat2es/Mtm3b4qMf/Wj85je/2efusRAWABVo3bp17TcjDxgwIEaMGFHmiUht27Zt8dprr+1wo+7/7n/xxRd3eSWnXLrsPRYAXdmIESOivr4+6uvr26OiK3/w3+501XX37Nlzl1EREbFhw4ZobGzsxIneHlcsALqIv/zlL/Hud7+7y/3a5Vux7n1r3V325k2Arubuu+/e7f7nnnuukybpXNa9c/vqul2xAKgQ3fWD/6y7stbtHguACjFw4MC46667oq2tbafb448/Xu4RS8K6K2vdwgKgQnTXD/6z7p3bV9ftHguACtFdP/jPunduX123eywAgGS8FQIAJCMsAIBkhAUAkIywAACSERbADpqamiKXy8WqVau69QxA8YQFAJCMsAAAkhEW0I21tbXFN7/5zRg5cmTk8/kYOnRofP3rX9/psQ899FCceOKJkc/nY+DAgTFz5szYtm1b+/5f/OIXcfTRR0evXr2ib9++MX78+A4f7vPDH/4wjjjiiKipqYlRo0bF97///Q4//7HHHotjjz02ampq4vjjj4+VK1eWZtFASfnkTejGGhoaYv78+fGd73wn3vOe98SGDRti9erVOxz34osvxgc/+MH4zGc+EzfffHOsXr06pk6dGjU1NXHVVVfFhg0b4txzz41vfvObcfbZZ8fmzZvjkUceaf+44VtuuSWuvPLKmDt3bhx77LGxcuXKmDp1auy///4xZcqU2LJlS5x55pkxYcKE+NnPfhbr1q2LSy65pLP/cQApZEC31NramuXz+Wz+/Pk77Fu3bl0WEdnKlSuzLMuyyy+/PDv88MOztra29mOuv/767IADDsi2b9+erVixIouIrKmpaafneuc735ndeuutHZ67+uqrs/r6+izLsuzGG2/M+vbtm73++uvt++fNm9dhBqAyuGIB3dTf/va3KBQKcdppp72tY+vr6yOXy7U/N27cuNiyZUv84x//iLFjx8Zpp50WRx99dEycODFOP/30+NjHPhZ9+vSJrVu3xrPPPhuf+9znYurUqe2v37ZtW/Tu3bv9548ZMyZqamra99fX1ydcLdBZhAV0U7169Ur2s3r06BH3339/PProo/H73/8+vve978UVV1wRS5cujf322y8iIubPnx8nnXTSDq8DuhY3b0I3ddhhh0WvXr1i0aJFb3nsEUccEYsXL+7wFc1//vOfo7a2NgYPHhwR//kK53HjxkVjY2OsXLkyqqurY8GCBXHIIYfEoEGD4rnnnouRI0d22EaMGNH+85944ol444032n/+kiVLEq8Y6AyuWEA3VVNTE5dddllceumlUV1dHePGjYuXX345/vrXv+7w9sgXv/jFuO666+Kiiy6KL33pS7FmzZqYNWtWzJgxI6qqqmLp0qWxaNGiOP3006N///6xdOnSePnll+OII46IiIjGxsa4+OKLo3fv3vGBD3wgCoVCLF++PF555ZWYMWNGfOpTn4orrrgipk6dGg0NDdHU1BTf+ta3yvGPBdhb5b7JAyif7du3Z9dcc002bNiw7B3veEc2dOjQ7Nprr93h5s0sy7IHH3wwO+GEE7Lq6upswIAB2WWXXZa9+eabWZZl2dNPP51NnDgx69evX5bP57N3vetd2fe+970O57rllluyY445Jquurs769OmTnXzyydldd93Vvn/x4sXZ2LFjs+rq6uyYY47JfvnLX7p5EypQLsv+59omAMBecI8FAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMv8PBMTiOHhUsFgAAAAASUVORK5CYII=",
-      "text/plain": [
-       "<Figure size 640x480 with 1 Axes>"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
+     "ename": "",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31mRunning cells with '/bin/python3' requires the ipykernel package.\n",
+      "\u001b[1;31mRun the following command to install 'ipykernel' into the Python environment. \n",
+      "\u001b[1;31mCommand: '/bin/python3 -m pip install ipykernel -U --user --force-reinstall'"
+     ]
     }
    ],
    "source": [
-    "for_plot.plot(kind='bar')"
+    "import seaborn as sns\n",
+    "import matplotlib.pyplot as plt\n",
+    "sns.set_theme()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "plt.figure(figsize=(10, 6))\n",
+    "sns.pie(x='closed_month', y='count', hue='mile', data=dfg)\n",
+    "plt.pie(dfg, )\n",
+    "plt.xlabel('Closed Month')\n",
+    "plt.ylabel('ClosedAt')\n",
+    "plt.title('Stacked Line Chart: Milestone Effort by Issue Close Date')\n",
+    "plt.xticks(rotation=45)\n",
+    "plt.legend(title='Mile', loc='upper left')\n",
+    "plt.show()"
    ]
   }
  ],
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.12.2"
+   "version": "3.8.10"
   }
  },
  "nbformat": 4,