diff --git a/notebook.ipynb b/notebook.ipynb
index 0deedfd..924b879 100644
--- a/notebook.ipynb
+++ b/notebook.ipynb
@@ -1,17 +1,27 @@
{
"cells": [
{
- "cell_type": "code",
- "execution_count": 5,
+ "cell_type": "markdown",
"metadata": {},
- "outputs": [],
"source": [
- "import pandas as pd"
+ "# Habits"
]
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 69,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import calendar\n",
+ "import matplotlib \n",
+ "import matplotlib.pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
"metadata": {},
"outputs": [],
"source": [
@@ -22,9 +32,810 @@
},
{
"cell_type": "code",
- "execution_count": 67,
+ "execution_count": 79,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " date | \n",
+ " Meditate | \n",
+ " Exercise | \n",
+ " Read | \n",
+ " Journal | \n",
+ " devlog | \n",
+ " Plants | \n",
+ " Draw | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2020-01-17 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2020-01-16 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2020-01-15 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2020-01-14 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2020-01-13 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 2020-01-12 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 2020-01-11 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 2020-01-10 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 2020-01-09 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 2020-01-08 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 2020-01-07 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 2020-01-06 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " 2020-01-05 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " 2020-01-04 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " 2020-01-03 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 2020-01-02 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " 2020-01-01 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " 2019-12-31 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " 2019-12-30 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " 2019-12-29 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " 2019-12-28 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 21 | \n",
+ " 2019-12-27 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 22 | \n",
+ " 2019-12-26 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 23 | \n",
+ " 2019-12-25 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 24 | \n",
+ " 2019-12-24 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 25 | \n",
+ " 2019-12-23 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 26 | \n",
+ " 2019-12-22 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 27 | \n",
+ " 2019-12-21 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 28 | \n",
+ " 2019-12-20 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 29 | \n",
+ " 2019-12-19 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 717 | \n",
+ " 2018-01-30 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 718 | \n",
+ " 2018-01-29 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 719 | \n",
+ " 2018-01-28 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 720 | \n",
+ " 2018-01-27 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 721 | \n",
+ " 2018-01-26 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 722 | \n",
+ " 2018-01-25 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 723 | \n",
+ " 2018-01-24 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 724 | \n",
+ " 2018-01-23 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 725 | \n",
+ " 2018-01-22 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 726 | \n",
+ " 2018-01-21 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 727 | \n",
+ " 2018-01-20 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 728 | \n",
+ " 2018-01-19 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 729 | \n",
+ " 2018-01-18 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 730 | \n",
+ " 2018-01-17 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 731 | \n",
+ " 2018-01-16 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 732 | \n",
+ " 2018-01-15 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 733 | \n",
+ " 2018-01-14 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 734 | \n",
+ " 2018-01-13 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 735 | \n",
+ " 2018-01-12 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 736 | \n",
+ " 2018-01-11 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 737 | \n",
+ " 2018-01-10 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 738 | \n",
+ " 2018-01-09 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 739 | \n",
+ " 2018-01-08 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 740 | \n",
+ " 2018-01-07 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 741 | \n",
+ " 2018-01-06 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 742 | \n",
+ " 2018-01-05 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 743 | \n",
+ " 2018-01-04 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 744 | \n",
+ " 2018-01-03 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 745 | \n",
+ " 2018-01-02 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " 746 | \n",
+ " 2018-01-01 | \n",
+ " 0 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
747 rows × 8 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " date Meditate Exercise Read Journal devlog Plants Draw\n",
+ "0 2020-01-17 2 2 0 1 0 0 0\n",
+ "1 2020-01-16 0 0 0 1 0 0 0\n",
+ "2 2020-01-15 0 0 0 1 0 0 0\n",
+ "3 2020-01-14 2 1 1 1 0 0 0\n",
+ "4 2020-01-13 0 1 2 2 0 0 0\n",
+ "5 2020-01-12 0 1 2 0 0 0 0\n",
+ "6 2020-01-11 0 1 1 0 0 0 0\n",
+ "7 2020-01-10 0 2 2 0 0 0 0\n",
+ "8 2020-01-09 0 2 0 0 0 0 0\n",
+ "9 2020-01-08 1 2 1 1 0 0 0\n",
+ "10 2020-01-07 2 2 2 1 0 0 0\n",
+ "11 2020-01-06 0 0 2 1 0 0 0\n",
+ "12 2020-01-05 2 0 0 1 0 0 0\n",
+ "13 2020-01-04 0 2 0 1 0 0 0\n",
+ "14 2020-01-03 0 0 0 1 0 0 0\n",
+ "15 2020-01-02 0 0 0 2 0 0 0\n",
+ "16 2020-01-01 0 0 0 0 0 0 0\n",
+ "17 2019-12-31 0 0 0 0 0 0 0\n",
+ "18 2019-12-30 0 1 0 0 0 0 0\n",
+ "19 2019-12-29 0 2 1 0 0 0 0\n",
+ "20 2019-12-28 0 0 2 0 0 0 0\n",
+ "21 2019-12-27 0 2 2 0 1 0 0\n",
+ "22 2019-12-26 0 1 0 1 1 0 0\n",
+ "23 2019-12-25 0 1 0 1 1 0 0\n",
+ "24 2019-12-24 2 2 0 1 1 0 0\n",
+ "25 2019-12-23 1 0 0 1 1 0 0\n",
+ "26 2019-12-22 1 0 0 1 1 0 0\n",
+ "27 2019-12-21 2 2 0 1 2 0 0\n",
+ "28 2019-12-20 2 2 1 2 0 0 0\n",
+ "29 2019-12-19 0 0 2 1 0 0 0\n",
+ ".. ... ... ... ... ... ... ... ...\n",
+ "717 2018-01-30 2 0 0 2 0 0 0\n",
+ "718 2018-01-29 0 0 0 2 0 0 0\n",
+ "719 2018-01-28 0 1 0 1 0 0 0\n",
+ "720 2018-01-27 0 1 0 1 0 0 0\n",
+ "721 2018-01-26 0 2 0 1 0 0 0\n",
+ "722 2018-01-25 1 0 0 2 0 0 0\n",
+ "723 2018-01-24 1 1 0 1 0 0 0\n",
+ "724 2018-01-23 2 2 0 2 0 0 0\n",
+ "725 2018-01-22 2 2 0 2 0 0 0\n",
+ "726 2018-01-21 0 1 0 0 0 0 0\n",
+ "727 2018-01-20 0 1 0 0 0 0 0\n",
+ "728 2018-01-19 0 1 0 0 0 0 0\n",
+ "729 2018-01-18 0 2 0 1 0 0 0\n",
+ "730 2018-01-17 2 2 0 1 0 0 0\n",
+ "731 2018-01-16 0 1 0 1 0 0 0\n",
+ "732 2018-01-15 0 2 0 1 0 0 0\n",
+ "733 2018-01-14 1 2 0 1 0 0 0\n",
+ "734 2018-01-13 1 1 0 1 0 0 0\n",
+ "735 2018-01-12 2 1 0 2 0 0 0\n",
+ "736 2018-01-11 2 1 0 0 0 0 0\n",
+ "737 2018-01-10 0 2 0 0 0 0 0\n",
+ "738 2018-01-09 0 1 0 0 0 0 0\n",
+ "739 2018-01-08 0 2 0 0 0 0 0\n",
+ "740 2018-01-07 0 2 0 0 0 0 0\n",
+ "741 2018-01-06 0 1 0 0 0 0 0\n",
+ "742 2018-01-05 0 2 0 0 0 0 0\n",
+ "743 2018-01-04 0 0 0 0 0 0 0\n",
+ "744 2018-01-03 0 0 0 0 0 0 0\n",
+ "745 2018-01-02 2 2 0 0 0 0 0\n",
+ "746 2018-01-01 0 2 0 0 0 0 0\n",
+ "\n",
+ "[747 rows x 8 columns]"
+ ]
+ },
+ "execution_count": 79,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "#colNames = ['date', 'Godmode', 'Meditate', 'Exercise', 'Piano','Read', 'Journal', 'Gratitude', 'devlog','Plants', 'Job', 'Draw']\n",
+ "checks = pd.read_csv('LoopHabits/Checkmarks.csv', header=0)\n",
+ "checks = checks.drop(['Godmode', 'Piano', 'Gratitude', 'Job'], axis=1)\n",
+ "checks"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "IndentationError",
+ "evalue": "expected an indented block (, line 19)",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m19\u001b[0m\n\u001b[0;31m diffStreak = pd.concat([pd.Series([0]) , df[::-1].value, pd.Series([0])]).diff().tolist()\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mIndentationError\u001b[0m\u001b[0;31m:\u001b[0m expected an indented block\n"
+ ]
+ }
+ ],
"source": [
"def only2019(df):\n",
" df['drop'] = df['date'].apply(lambda x: 0 if x[0:4] == '2019' else 1)\n",
@@ -32,7 +843,7 @@
" df = df.drop(columns=['drop'])\n",
" return df\n",
"\n",
- "def onlyMarch(df):\n",
+ "def MarchOnwards(df):\n",
" # For habits only, lost my phone in late Febuary, didn't have a recent backup\n",
" df['drop'] = df['date'].apply(lambda x: 1 if x[5:7] == '01' or x[5:7] == '02' else 0)\n",
" df = df.drop(df[df['drop'] == 1].index)\n",
@@ -54,7 +865,7 @@
" else:\n",
" streakList.append(streak)\n",
" streak = 0\n",
- " return sum(streakList)\n",
+ " return max(streakList)\n",
"\n",
"def longestStreak(df):\n",
" # reverse the series so dates are ascending (increasing?)\n",
@@ -71,22 +882,23 @@
" else:\n",
" streakList.append(streak)\n",
" streak = 0\n",
- " return sum(streakList)\n",
+ " return max(streakList)\n",
"\n",
- "def bestMonth(df):\n",
- " pass\n",
+ "def sumMonth(df):\n",
+ " df['month'] = pd.DatetimeIndex(df['date']).month\n",
+ " return df.groupby(['month']).sum()\n",
"\n",
- "def worstMonth(df):\n",
- " pass\n",
- "\n",
- "def averagePerMonth(df):\n",
- " pass\n",
+ "def meanMonth(df):\n",
+ " df['month'] = pd.DatetimeIndex(df['date']).month\n",
+ " return df.groupby(['month']).mean()\n",
"\n",
"def plotScore(df):\n",
- " pass\n",
+ " df = meanMonth(df)\n",
+ " plt.plot(df)\n",
+ " plt.show()\n",
"\n",
"def countZeros(df):\n",
- " return (df.value == 0).astype(int).sum()\n",
+ " return countValue(0, df)\n",
"\n",
"def countValue(countValue, df):\n",
" return (df.value == countValue).astype(int).sum()\n"
@@ -94,7 +906,7 @@
},
{
"cell_type": "code",
- "execution_count": 69,
+ "execution_count": 72,
"metadata": {},
"outputs": [
{
@@ -103,14 +915,36 @@
"text": [
"Days done: 72\n",
"Non-streak days: 195\n",
- "Streak days: 39\n"
+ "Streak days: 39\n",
+ "Longest streak: 17\n",
+ "Longest zeros: 23\n",
+ "Best month: September\n",
+ "Worst month: April\n"
]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "