From: Edward Delaporte Date: Fri, 16 Feb 2024 17:12:46 +0000 (-0600) Subject: WIP chart of issues closed count by milestones and month X-Git-Url: https://apps.delaporte.us/gitweb/dotfiles.git/commitdiff_plain/d780c6fe060e29ccf560c2e20e641245cd1853cb WIP chart of issues closed count by milestones and month --- diff --git a/data/issues.ipynb b/data/issues.ipynb index 5b1a1b3..d0a20fc 100644 --- a/data/issues.ipynb +++ b/data/issues.ipynb @@ -41,7 +41,7 @@ "\n", "data_sets = []\n", "\n", - "file = data_files[0]\n", + "file = data_files[2]\n", "print(file)\n", "\n", "f = open(file, encoding='utf-16')\n", @@ -50,33 +50,71 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "print(type(df.closed[0]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "df['closed'] = pd.to_datetime(df['closedAt'], format='ISO8601')" + "import numpy as np\n", + "df['count'] = np.zeros(len(df))\n", + "\n" ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "\n" + "[Strategic] Job Aids on bootstrapping CICD Pipelines\n" ] } ], "source": [ - "print(type(df.closed[0]))" + "print(df.milestone[22].get('title'))" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "closed_months = pd.to_datetime(df['closedAt'], format='ISO8601')\n", + "df['closed_month'] = closed_months.dt.month" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "df['mile'] = [d.get('title') if d else None for d in df.milestone]" + ] + }, + { + "cell_type": "code", + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -85,7 +123,33 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "grp_df = df.groupby(['mile', 'closed_month']).count().reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(grp_df)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Plot of closed issues by month for one project\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -94,13 +158,13 @@ "" ] }, - "execution_count": 33, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "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=", + "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": [ "
" ]