]> us-delaporte.pagekite.me Git - dotfiles.git/blob - data/issues.ipynb
WIP - chart
[dotfiles.git] / data / issues.ipynb
1 {
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 2,
6 "metadata": {},
7 "outputs": [],
8 "source": [
9 "# Get ye data\n",
10 "import glob\n",
11 "import os\n",
12 "\n",
13 "data_files = glob.glob(os.path.expanduser('~\\\\Data\\\\*.json'))\n"
14 ]
15 },
16 {
17 "cell_type": "code",
18 "execution_count": null,
19 "metadata": {},
20 "outputs": [],
21 "source": [
22 "import os\n",
23 "\n",
24 "for file in data_files:\n",
25 "\tprint(f\"{file}\", os.path.getsize(file))\n"
26 ]
27 },
28 {
29 "cell_type": "code",
30 "execution_count": 5,
31 "metadata": {},
32 "outputs": [
33 {
34 "name": "stdout",
35 "output_type": "stream",
36 "text": [
37 "3.12.2\n"
38 ]
39 }
40 ],
41 "source": [
42 "import platform\n",
43 "print(platform.python_version())"
44 ]
45 },
46 {
47 "cell_type": "code",
48 "execution_count": null,
49 "metadata": {},
50 "outputs": [],
51 "source": [
52 "import pandas as pd\n",
53 "\n",
54 "data_sets = []\n",
55 "\n",
56 "file = data_files[6]\n",
57 "print(file)\n",
58 "\n",
59 "f = open(file, encoding='utf-16')\n",
60 "df = pd.read_json(f)"
61 ]
62 },
63 {
64 "cell_type": "code",
65 "execution_count": 26,
66 "metadata": {},
67 "outputs": [
68 {
69 "name": "stdout",
70 "output_type": "stream",
71 "text": [
72 "<class 'pandas._libs.tslibs.timestamps.Timestamp'>\n"
73 ]
74 }
75 ],
76 "source": [
77 "print(type(df.closed[0]))"
78 ]
79 },
80 {
81 "cell_type": "code",
82 "execution_count": null,
83 "metadata": {},
84 "outputs": [],
85 "source": [
86 "import numpy as np\n",
87 "df['count'] = np.zeros(len(df))\n",
88 "\n"
89 ]
90 },
91 {
92 "cell_type": "code",
93 "execution_count": null,
94 "metadata": {},
95 "outputs": [],
96 "source": [
97 "print(df.milestone[22].get('title'))"
98 ]
99 },
100 {
101 "cell_type": "code",
102 "execution_count": 68,
103 "metadata": {},
104 "outputs": [],
105 "source": [
106 "closed_months = pd.to_datetime(df['closedAt'], format='ISO8601')\n",
107 "df['closed_month'] = closed_months.dt.month"
108 ]
109 },
110 {
111 "cell_type": "code",
112 "execution_count": 69,
113 "metadata": {},
114 "outputs": [],
115 "source": [
116 "df['mile'] = [d.get('title') if d else None for d in df.milestone]"
117 ]
118 },
119 {
120 "cell_type": "code",
121 "execution_count": 39,
122 "metadata": {},
123 "outputs": [],
124 "source": [
125 "for_plot = df.groupby(df.closed.dt.month)['url'].count()"
126 ]
127 },
128 {
129 "cell_type": "code",
130 "execution_count": 70,
131 "metadata": {},
132 "outputs": [],
133 "source": [
134 "\n",
135 "grp_df = df.groupby(['mile', 'closed_month']).count().reset_index()"
136 ]
137 },
138 {
139 "cell_type": "code",
140 "execution_count": null,
141 "metadata": {},
142 "outputs": [],
143 "source": [
144 "print(grp_df)"
145 ]
146 },
147 {
148 "cell_type": "markdown",
149 "metadata": {},
150 "source": [
151 "#### Plot of closed issues by month for one project\n"
152 ]
153 },
154 {
155 "cell_type": "code",
156 "execution_count": null,
157 "metadata": {},
158 "outputs": [],
159 "source": [
160 "for_plot.plot(kind='bar')"
161 ]
162 },
163 {
164 "cell_type": "code",
165 "execution_count": 75,
166 "metadata": {},
167 "outputs": [],
168 "source": [
169 "import seaborn as sns\n",
170 "import matplotlib.pyplot as plt\n",
171 "sns.set_theme()"
172 ]
173 },
174 {
175 "cell_type": "code",
176 "execution_count": null,
177 "metadata": {},
178 "outputs": [],
179 "source": [
180 "plt.figure(figsize=(10, 6))\n",
181 "sns.lineplot(x='closed_month', y='url', hue='mile', data=grp_df, marker='o', ci=None)\n",
182 "plt.xlabel('Closed Month')\n",
183 "plt.ylabel('ClosedAt')\n",
184 "plt.title('Stacked Line Chart: Milestone Effort by Issue Close Date')\n",
185 "plt.xticks(rotation=45)\n",
186 "plt.legend(title='Mile', loc='upper left')\n",
187 "plt.show()"
188 ]
189 }
190 ],
191 "metadata": {
192 "kernelspec": {
193 "display_name": "Python 3",
194 "language": "python",
195 "name": "python3"
196 },
197 "language_info": {
198 "codemirror_mode": {
199 "name": "ipython",
200 "version": 3
201 },
202 "file_extension": ".py",
203 "mimetype": "text/x-python",
204 "name": "python",
205 "nbconvert_exporter": "python",
206 "pygments_lexer": "ipython3",
207 "version": "3.12.2"
208 }
209 },
210 "nbformat": 4,
211 "nbformat_minor": 2
212 }