diff --git a/notebook.ipynb b/notebook.ipynb index 69c86f2..fd047b8 100644 --- a/notebook.ipynb +++ b/notebook.ipynb @@ -1,5 +1,22 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Common functions" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def only2019(df):\n", + " return df.filter(like='2019', axis=0)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -9,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": 103, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -44,41 +61,65 @@ }, { "cell_type": "code", - "execution_count": 100, - "metadata": {}, - "outputs": [], - "source": [ - "with open('data/task.json', 'r') as myfile:\n", - " task = json.load(myfile)\n", - "\n", - "tasks = pd.DataFrame.from_dict(task)\n", - "tasks.set_axis(tasks['entry'], axis='index', inplace=True)\n", - "tasks = tasks.drop(['annotations', 'depends', 'description', 'parent', 'uuid', 'entry'], axis=1)\n", - "only2019(tasks).count()" - ] - }, - { - "cell_type": "code", - "execution_count": 105, + "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(array([164., 3., 27., 2., 11., 1., 2., 1., 2., 2.]),\n", - " array([ 0. , 1.5, 3. , 4.5, 6. , 7.5, 9. , 10.5, 12. , 13.5, 15. ]),\n", - " )" + "description 241\n", + "due 107\n", + "end 241\n", + "id 241\n", + "imask 0\n", + "mask 0\n", + "modified 241\n", + "priority 3\n", + "project 188\n", + "recur 0\n", + "status 241\n", + "tags 215\n", + "until 0\n", + "urgency 241\n", + "dtype: int64" ] }, - "execution_count": 105, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" + } + ], + "source": [ + "with open('data/task.json', 'r') as myfile:\n", + " task = json.load(myfile)\n", + "\n", + "# Convert the data into a data frame\n", + "# Some preliminary analysis\n", + "tasks = pd.DataFrame.from_dict(task)\n", + "tasks.set_axis(tasks['entry'], axis='index', inplace=True)\n", + "tasks = tasks.drop(['annotations', 'depends', 'parent', 'uuid', 'entry'], axis=1)\n", + "only2019(tasks).count()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "16 unique tags\n", + "215 tagged items\n", + "The tags are: {'rocks', 'friends', 'd.tech', 'chores', 'job', 'prpj', 'fam', 'artifex', 'contact', 'd.infra', 'fun', 'piracy', 'work', 'uni', 'life', 'travel'}\n" + ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "
" + "
" ] }, "metadata": { @@ -88,10 +129,60 @@ } ], "source": [ + "# How many of each tag did I do?\n", + "\n", "l = only2019(tasks).tags.dropna().to_list()\n", "flat_list = [item for sublist in l for item in sublist]\n", + "print(str(len(set(flat_list))) + \" unique tags\")\n", + "print(str(len(l)) + \" tagged items\")\n", + "print(\"The tags are: \" + str(set(flat_list)))\n", "\n", - "plt.hist(flat_list)" + "fig = plt.figure(figsize=(14,8))\n", + "plt.hist(flat_list, rwidth=1/3, align='left', bins=16)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "count 241\n", + "unique 216\n", + "top fold clothes\n", + "freq 7\n", + "Name: description, dtype: object\n", + "\n", + "Repeated descriptions: \n", + " laundry\n", + " haircut\n", + " fold clothes\n", + " recharge my way\n", + " change sheets\n", + " cut hair\n", + " buy condoms\n", + " schedule counsellor meeting\n", + " cut nails\n", + " recharge myway\n", + " book counsellor meeting\n", + " shave\n", + " do laundry\n" + ] + } + ], + "source": [ + "# Description mining\n", + "\n", + "l = only2019(tasks).description\n", + "print(l.describe())\n", + "print()\n", + "print(\"Repeated descriptions: \")\n", + "for e in l[l.duplicated(keep=False)].unique():\n", + " print(\" \" + e)" ] }, { @@ -342,9 +433,6 @@ "metadata": {}, "outputs": [], "source": [ - "def only2019(df):\n", - " return df.filter(like='2019', axis=0)\n", - "\n", "def MarchOnwards(df):\n", " # For habits only, lost my phone in late Febuary, didn't have a recent backup\n", " return df.filter(regex='[0-9]{4}-(0?[4-9]|1?[0-2])-[0-9]{2}', axis=0)\n", @@ -489,18 +577,6 @@ "display_name": "Python 3", "language": "python", "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.1" } }, "nbformat": 4,