]> us-delaporte.pagekite.me Git - dotfiles.git/blobdiff - data/issues.ipynb
Linux / Windows Fix
[dotfiles.git] / data / issues.ipynb
index d0a20fc3bf2e985a72e7bef2a67a0ff5e3c808a9..b65e1d7ca7d2645bdf35ceea09191beef3e8ab83 100644 (file)
@@ -2,7 +2,17 @@
  "cells": [
   {
    "cell_type": "code",
  "cells": [
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import platform\n",
+    "print(platform.python_version())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
    "metadata": {},
    "outputs": [],
    "source": [
   },
   {
    "cell_type": "code",
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "3.12.2\n"
-     ]
-    }
-   ],
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
    "source": [
    "source": [
-    "import platform\n",
-    "print(platform.python_version())"
+    "import os\n",
+    "\n",
+    "for file in data_files:\n",
+    "\tprint(f\"{file}\", os.path.getsize(file))\n"
    ]
   },
   {
    ]
   },
   {
    "source": [
     "import pandas as pd\n",
     "\n",
    "source": [
     "import pandas as pd\n",
     "\n",
-    "data_sets = []\n",
+    "data_frames = []\n",
+    "for file in data_files:\n",
     "\n",
     "\n",
-    "file = data_files[2]\n",
-    "print(file)\n",
+    "\tf = open(file, encoding='utf-8')\n",
+    "\tdf_temp = pd.read_json(f)\n",
+    "\tdata_frames.append(df_temp)\n",
     "\n",
     "\n",
-    "f = open(file, encoding='utf-16')\n",
-    "df = pd.read_json(f)"
+    "df = pd.concat(data_frames, ignore_index=True)"
    ]
   },
   {
    "cell_type": "code",
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 26,
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "df['count'] = np.zeros(len(df))\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
    "metadata": {},
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "<class 'pandas._libs.tslibs.timestamps.Timestamp'>\n"
-     ]
-    }
-   ],
    "source": [
    "source": [
-    "print(type(df.closed[0]))"
+    "#### Pie Chart"
    ]
   },
   {
    ]
   },
   {
    "metadata": {},
    "outputs": [],
    "source": [
    "metadata": {},
    "outputs": [],
    "source": [
-    "import numpy as np\n",
-    "df['count'] = np.zeros(len(df))\n",
-    "\n"
+    "dfp = df\n",
+    "dfp['mile'] = [d.get('title') if d else None for d in dfp.milestone]\n",
+    "dfp.drop(columns=['closedAt','milestone', 'url'], inplace=True)"
    ]
   },
   {
    "cell_type": "code",
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": null,
    "metadata": {},
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "[Strategic] Job Aids on bootstrapping CICD Pipelines\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
    "source": [
-    "print(df.milestone[22].get('title'))"
+    "\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",
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 58,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
    "metadata": {},
    "outputs": [],
    "source": [
-    "closed_months = pd.to_datetime(df['closedAt'], format='ISO8601')\n",
-    "df['closed_month'] = closed_months.dt.month"
+    "mile_counts = df.groupby('mile')['count'].sum()\n",
+    "mile_counts = mile_counts.loc[lambda x: x > 5]\n",
+    "plt.pie(mile_counts, labels=mile_counts.index, autopct='%1.1f%%')\n",
+    "plt.title(f\"Tasks by Milestone\")\n",
+    "plt.axis('equal')\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Plot of closed issues by month and milestone for one project\n"
    ]
   },
   {
    "cell_type": "code",
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 48,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
    "metadata": {},
    "outputs": [],
    "source": [
-    "df['mile'] = [d.get('title') if d else None for d in df.milestone]"
+    "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",
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 39,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
    "metadata": {},
    "outputs": [],
    "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",
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 59,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
     "\n",
    "metadata": {},
    "outputs": [],
    "source": [
     "\n",
-    "grp_df = df.groupby(['mile', 'closed_month']).count().reset_index()"
+    "dfg = df.groupby(['mile', 'closed_month']).count().reset_index()\n",
+    "dfg.drop(columns=['milestone', 'title', 'url'], inplace=True)\n"
    ]
   },
   {
    ]
   },
   {
    "metadata": {},
    "outputs": [],
    "source": [
    "metadata": {},
    "outputs": [],
    "source": [
-    "print(grp_df)"
+    "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": "markdown",
+   "cell_type": "code",
+   "execution_count": null,
    "metadata": {},
    "metadata": {},
+   "outputs": [],
    "source": [
    "source": [
-    "#### Plot of closed issues by month for one project\n"
+    "import seaborn as sns\n",
+    "import matplotlib.pyplot as plt\n",
+    "sns.set_theme()"
    ]
   },
   {
    "cell_type": "code",
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "<Axes: xlabel='closed'>"
-      ]
-     },
-     "execution_count": 7,
-     "metadata": {},
-     "output_type": "execute_result"
-    },
-    {
-     "data": {
-      "image/png": "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x3wAQBkpOixuvfXWmDFjRlx66aUxZsyY+Kd/+qc47LDD4l//9V/bYz4AoIx0K2bnt956K9avXx81NTWtt3Xp0iUmTZoUjz322H7v09TUFE1NTa3rDQ0NERHR2Nj4vo7Z0vSHYkZ8397v8Q9Fe80c0X5zm7ktM/+Rmdsqx387zNyWmf+omJnf3TeldPAdUxFefPHFFBHp0UcfbXP717/+9XTaaaft9z5z585NEWGxWCwWi+VDsNTX1x+0FYo6Y3EoampqYvbs2a3rLS0t8dprr0W/fv2iUChkO05jY2MMGTIk6uvro1evXtketz2ZuWOU48wR5Tm3mTuGmTuGmdtKKcWuXbti0KBBB92vqLD42Mc+Fl27do2XXnqpze0vvfRSDBgwYL/3qaioiIqKija3HXnkkcUctii9evUqmyfAu8zcMcpx5ojynNvMHcPMHcPMf9S7d+/33Keoizd79OgR48ePj5UrV7be1tLSEitXrozq6uriJwQAPlSK/lPI7NmzY/r06XHKKafEaaedFt/61rdiz549cemll7bHfABAGSk6LP7iL/4iXnnllbjhhhti586dMW7cuHjggQfi6KOPbo/53reKioqYO3fuPn926czM3DHKceaI8pzbzB3DzB3DzIemkN7zfSMAAO+P7woBALIRFgBANsICAMhGWAAA2QgLPhJcowzQMdr9I72hM6ioqIjNmzfH6NGjSz0KFG3Hjh2xaNGieOSRR2LHjh3RpUuXOOaYY+LCCy+MSy65JLp27VrqEaHVh/aMRX19fXz1q18t9RhtvPHGG/HII4/EM888s8+2N998M77//e+XYKqD+/Wvfx3/9m//Fs8++2xERDz77LNx+eWXx1e/+tX45S9/WeLp9jV79uz9Ls3NzbFw4cLW9c5mw4YNsW3bttb1O++8MyZMmBBDhgyJM844I5YsWVLC6fbviiuuiF/96lelHqNot912W0ybNq31Z3rnnXfGmDFjYtSoUXHdddfF3r17SzxhW+vWrYvRo0fHf/7nf8bbb78dW7dujfHjx8fhhx8eV199dZx55pmxa9euUo8Jf1TMt5uWk02bNqUuXbqUeoxWzz33XBo2bFgqFAqpS5cu6cwzz0zbt29v3b5z585ONW9KKS1fvjz16NEj9e3bN1VWVqbly5en/v37p0mTJqVPfepTqWvXrmnlypWlHrONQqGQxo0blyZOnNhmKRQK6dRTT00TJ05MZ599dqnH3MfYsWPTihUrUkopLV68OFVVVaUrr7wyLVq0KM2aNSsdccQR6bvf/W6Jp2zr3efyxz/+8bRw4cK0Y8eOUo/0nm688cbUs2fP9LnPfS4NGDAgLVy4MPXr1y/ddNNNaf78+al///7phhtuKPWYbUyYMCHNmzevdf3OO+9Mp59+ekoppddeey2NGzcuXXnllaUa74CamprS0qVL06xZs9KXvvSl9KUvfSnNmjUr/fCHP0xNTU2lHu+Q7Ny5M9XW1pZ6jP2qr69Pu3bt2uf2t956Kz388MMdOkvZhsVPfvKTgy7f/OY3O9Uv6gsvvDBdcMEF6ZVXXklbt25NF1xwQRoxYkT67W9/m1LqnGFRXV2drr/++pRSSj/4wQ9Snz590nXXXde6/dprr03nnntuqcbbrwULFqQRI0bsEzzdunVLTz/9dImmem9VVVWprq4upZTSySefnP75n/+5zfa77747jRkzphSjHVChUEgPPfRQuuqqq9LHPvax1L179/SZz3wm/exnP0vNzc2lHm+/jj322PTjH/84pfTOi4+uXbumu+66q3X7vffem0aOHFmq8farqqoqvfDCC63rzc3NqXv37mnnzp0ppZR+8YtfpEGDBpVqvP3aunVrOuaYY1JlZWU666yz0he/+MX0xS9+MZ111lmpsrIyjRw5Mm3durXUYxats71gTSml7du3p1NPPTV16dIlde3aNf3lX/5lm8Aoxe+Wsg2Ld18tFQqFAy6d6Qlw1FFHpSeffLJ1vaWlJf3VX/1VGjp0aHrhhRc6ZVj06tWr9X/+5ubm1K1bt7Rhw4bW7Vu2bElHH310qcY7oMcffzwdd9xx6W/+5m/SW2+9lVLq/GHRr1+/tG7dupTSO8+VTZs2tdn+/PPPp6qqqlKMdkCFQiG99NJLKaV3XhUtXbo0nXfeealr165p0KBB6brrrut0vzyqqqpaYz6llLp3756eeuqp1vW6urp02GGHlWK0Axo2bFh65JFHWte3b9+eCoVC+sMf/pBSSmnbtm2psrKyVOPt16RJk9LUqVNTQ0PDPtsaGhrS1KlT0+TJk0sw2cFt3rz5oMvSpUs73b/T06ZNS6effnp64okn0ooVK9L48ePTKaeckl577bWU0jthUSgUOnSmsg2LQYMGpfvuu++A2zdu3NipngA9e/ZMzzzzzD63z5w5Mw0ePDitXr26U82b0jth8fzzz7euH3HEEW1eOdXV1XW6f9DetWvXrjRt2rQ0duzYtGXLltS9e/dOHRZf+cpX0mWXXZZSSukLX/hC+tu//ds22+fPn59OPPHEUox2QH8aFn/qt7/9bZo7d24aNmxYp3tOjxgxIi1fvjyllNL//M//pC5duqQf/vCHrdvvv//+NHz48FKNt19XXXVVOuGEE9Ly5cvTL3/5y3T22WeniRMntm5/4IEH0rHHHlvCCfdVVVWVtmzZcsDtTz75ZKcL5ZQO/oL13ds723N60KBBae3ata3rb775ZpoyZUoaN25cevXVV0vyorVs3xUyfvz4WL9+fUydOnW/2wuFQqd6i+GoUaNaL8L6U7fddltERHzmM58pxVgHNXz48Ni6dWsce+yxERHx2GOPxdChQ1u3/+53v4uBAweWaryDOuKII+Lf//3fY8mSJTFp0qRobm4u9UgH9Y1vfCMmTJgQZ511VpxyyinxD//wD7Fq1aoYPXp0PPfcc7FmzZpYtmxZqcd8X4YOHRrz5s2LuXPnxkMPPVTqcdq4+OKLY9q0aTF16tRYuXJlXHPNNXH11VfHq6++GoVCIW6++eb4/Oc/X+ox27jppptix44dMWXKlGhubo7q6uq46667WrcXCoVYsGBBCSfc15FHHhl1dXVxwgkn7Hd7XV1dHHnkkR071PvQt2/fuOWWW+Kcc87Z7/ann346pkyZ0sFTHVxDQ0P06dOndb2ioiLuvffe+MIXvhBnn312m+dKh+nQjMlo9erVra889mf37t1p1apVHTjRwc2fPz+df/75B9x++eWXd/jpqveyaNGi9POf//yA22tqalpfZXdm9fX16b777ku7d+8u9SgH9frrr6c5c+akMWPGpMrKytSjR480bNiw9OUvfzk98cQTpR5vH8OHD0//+7//W+oxitLc3Jxuvvnm9OlPfzrNnz8/tbS0pB/84AdpyJAhqV+/fumSSy7ptM+TN954Y78X53VGf/d3f5f69OmTbr311rR58+a0c+fOtHPnzrR58+Z06623pr59+6a5c+eWesx9TJ48Od14440H3L5p06ZO9+/0iSeemH70ox/tc/vbb7+dLrzwwjR06NAOP2Ph200ByO4b3/hGfPvb346dO3dGoVCIiHc+qG7AgAExa9asuOaaa0o84b6WLVsWe/bsia985Sv73f7666/HT3/605g+fXoHT3Zgc+bMiU2bNsWDDz64z7a9e/fG5z73ufjZz34WLS0tHTaTsACg3Wzbti127twZEREDBgyIESNGlHiiD5e9e/fGH/7wh+jVq9cBt7/44osxbNiwDpvpQ/sBWQCU3ogRI6K6ujqqq6tbo6IzfoDh+9EZ5+7WrdsBoyLinU9tra2t7cCJnLEAoINt3rw5PvnJT3b6i6r/f+U4dylmLtt3hQDQOf30pz896Pbf/OY3HTRJccpx7s44szMWAGTVpUuX93zLf6FQ6HSv/Mtx7s44s2ssAMhq4MCBce+990ZLS8t+lw0bNpR6xP0qx7k748zCAoCs3v0AwwPpbB9g+K5ynLszzuwaCwCy+vrXvx579uw54PaRI0fGf/3Xf3XgRO9POc7dGWd2jQUAkI0/hQAA2QgLACAbYQEAZCMsAIBshAWwj7q6uigUCrFp06aP9AxA8YQFAJCNsAAAshEW8BHW0tISt9xyS4wcOTIqKipi6NChcfPNN+9334cffjhOO+20qKioiIEDB8a1114be/fubd3+ox/9KE488cSoqqqKfv36xaRJk9p8cM+//Mu/xOjRo6OysjJGjRoV//iP/9jm8R9//PE4+eSTo7KyMk455ZTYuHFj+/xHA+3KJ2/CR1hNTU0sXrw4vvnNb8YZZ5wRO3bsiGeffXaf/V588cX48z//87jkkkvi+9//fjz77LMxY8aMqKysjHnz5sWOHTvioosuiltuuSU++9nPxq5du+JXv/pV60cJ33333XHDDTfEbbfdFieffHJs3LgxZsyYEYcffnhMnz49du/eHZ/+9Kfj3HPPjbvuuiu2bdsWV111VUf/OIAcEvCR1NjYmCoqKtLixYv32bZt27YUEWnjxo0ppZSuu+66dPzxx6eWlpbWfW6//fZ0xBFHpObm5rR+/foUEamurm6/xzr22GPTPffc0+a2G2+8MVVXV6eUUrrjjjtSv3790htvvNG6fdGiRW1mAMqDMxbwEfXrX/86mpqa4pxzznlf+1ZXV0ehUGi9bcKECbF79+74/e9/HyeddFKcc845ceKJJ8Z5550XkydPjs9//vPRp0+f2LNnT7zwwgtx2WWXxYwZM1rvv3fv3ujdu3fr448dOzYqKytbt1dXV2f8rwU6irCAj6iqqqpsj9W1a9dYsWJFPProo/GLX/wivvOd78T1118fa9eujcMOOywiIhYvXhynn376PvcDPlxcvAkfUR//+MejqqoqVq5c+Z77jh49Oh577LE2X7/83//939GzZ88YPHhwRLzz9cwTJkyI2tra2LhxY/To0SOWLVsWRx99dAwaNCh+85vfxMiRI9ssI0aMaH38J598Mt58883Wx1+zZk3m/2KgIzhjAR9RlZWVMWfOnLjmmmuiR48eMWHChHjllVfi6aef3ufPI3/9138d3/rWt+KKK66Ir33ta/Hcc8/F3LlzY/bs2dGlS5dYu3ZtrFy5MiZPnhxHHXVUrF27Nl555ZUYPXp0RETU1tbGlVdeGb17944/+7M/i6ampli3bl28/vrrMXv27Pjyl78c119/fcyYMSNqamqirq4u/v7v/74UPxbggyr1RR5A6TQ3N6ebbropDRs2LHXv3j0NHTo0zZ8/f5+LN1NKadWqVenUU09NPXr0SAMGDEhz5sxJb7/9dkoppWeeeSadd955qX///qmioiIdd9xx6Tvf+U6bY919991p3LhxqUePHqlPnz7pzDPPTPfee2/r9sceeyyddNJJqUePHmncuHHpxz/+sYs3oQwVUvqTc5sAAB+AaywAgGyEBQCQjbAAALIRFgBANsICAMhGWAAA2QgLACAbYQEAZCMsAIBshAUAkI2wAACy+X9uAK2SLjLo9wAAAABJRU5ErkJggg==",
-      "text/plain": [
-       "<Figure size 640x480 with 1 Axes>"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "for_plot.plot(kind='bar')"
+   "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()"
    ]
   }
  ],
    ]
   }
  ],