13 "data_files = glob.glob(os.path.expanduser('~\\\\Data\\\\*.json'))\n"
18 "execution_count": null,
24 "for file in data_files:\n",
25 "\tprint(f\"{file}\", os.path.getsize(file))\n"
35 "output_type": "stream",
43 "print(platform.python_version())"
48 "execution_count": null,
52 "import pandas as pd\n",
56 "file = data_files[6]\n",
59 "f = open(file, encoding='utf-16')\n",
60 "df = pd.read_json(f)"
65 "execution_count": 26,
70 "output_type": "stream",
72 "<class 'pandas._libs.tslibs.timestamps.Timestamp'>\n"
77 "print(type(df.closed[0]))"
82 "execution_count": null,
86 "import numpy as np\n",
87 "df['count'] = np.zeros(len(df))\n",
93 "execution_count": null,
97 "print(df.milestone[22].get('title'))"
102 "execution_count": 68,
106 "closed_months = pd.to_datetime(df['closedAt'], format='ISO8601')\n",
107 "df['closed_month'] = closed_months.dt.month"
112 "execution_count": 69,
116 "df['mile'] = [d.get('title') if d else None for d in df.milestone]"
121 "execution_count": 39,
125 "for_plot = df.groupby(df.closed.dt.month)['url'].count()"
130 "execution_count": 70,
135 "grp_df = df.groupby(['mile', 'closed_month']).count().reset_index()"
140 "execution_count": null,
148 "cell_type": "markdown",
151 "#### Plot of closed issues by month for one project\n"
156 "execution_count": null,
160 "for_plot.plot(kind='bar')"
165 "execution_count": 75,
169 "import seaborn as sns\n",
170 "import matplotlib.pyplot as plt\n",
176 "execution_count": null,
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",
193 "display_name": "Python 3",
194 "language": "python",
202 "file_extension": ".py",
203 "mimetype": "text/x-python",
205 "nbconvert_exporter": "python",
206 "pygments_lexer": "ipython3",