From 4ac2875f3d05b053a55fdead9d1dbb40d41305aa Mon Sep 17 00:00:00 2001
From: Lyudmila Vaseva <vaseva@mi.fu-berlin.de>
Date: Tue, 16 Jul 2019 17:12:00 +0200
Subject: [PATCH] Clean up broken and useless viz's

---
 src/explore.ipynb | 443 +---------------------------------------------
 1 file changed, 4 insertions(+), 439 deletions(-)

diff --git a/src/explore.ipynb b/src/explore.ipynb
index 85a07a5..8d2e5dc 100644
--- a/src/explore.ipynb
+++ b/src/explore.ipynb
@@ -9916,7 +9916,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "A per month break-down is difficult to plot on DIN A4 paper (maybe?); I'm aggregating them per year to start."
+    "A per month break-down is difficult to plot on DIN A4 paper (maybe?); I'm aggregating them per year to start. -> that's less useful than the per month aggregation (see above)"
    ]
   },
   {
@@ -10218,198 +10218,6 @@
     "Where does this data come from? It looks kind of fishy that there are \"disallow,tag\" but not \"warn,tag\" actions, where there are a bunch of filters with \"warn,tag\" actions set."
    ]
   },
-  {
-   "cell_type": "code",
-   "execution_count": 33,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>LogYear</th>\n",
-       "      <th>FilterActions</th>\n",
-       "      <th>Freq</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>2019-01-01 00:00:00</td>\n",
-       "      <td>disallow,tag</td>\n",
-       "      <td>18</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>2018-01-01 00:00:00</td>\n",
-       "      <td>disallow,tag</td>\n",
-       "      <td>71</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>2</th>\n",
-       "      <td>2017-01-01 00:00:00</td>\n",
-       "      <td>disallow,tag</td>\n",
-       "      <td>961</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>3</th>\n",
-       "      <td>2016-01-01 00:00:00</td>\n",
-       "      <td>disallow,tag</td>\n",
-       "      <td>27752</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>4</th>\n",
-       "      <td>2015-01-01 00:00:00</td>\n",
-       "      <td>disallow,tag</td>\n",
-       "      <td>36971</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>5</th>\n",
-       "      <td>2014-01-01 00:00:00</td>\n",
-       "      <td>disallow,tag</td>\n",
-       "      <td>3970</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>6</th>\n",
-       "      <td>2010-01-01 00:00:00</td>\n",
-       "      <td>disallow,tag</td>\n",
-       "      <td>24</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>7</th>\n",
-       "      <td>2009-01-01 00:00:00</td>\n",
-       "      <td>disallow,tag</td>\n",
-       "      <td>321</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>8</th>\n",
-       "      <td>2013-01-01</td>\n",
-       "      <td>disallow,tag</td>\n",
-       "      <td>0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>9</th>\n",
-       "      <td>2012-01-01</td>\n",
-       "      <td>disallow,tag</td>\n",
-       "      <td>0</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>10</th>\n",
-       "      <td>2011-01-01</td>\n",
-       "      <td>disallow,tag</td>\n",
-       "      <td>0</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "                LogYear FilterActions   Freq\n",
-       "0   2019-01-01 00:00:00  disallow,tag     18\n",
-       "1   2018-01-01 00:00:00  disallow,tag     71\n",
-       "2   2017-01-01 00:00:00  disallow,tag    961\n",
-       "3   2016-01-01 00:00:00  disallow,tag  27752\n",
-       "4   2015-01-01 00:00:00  disallow,tag  36971\n",
-       "5   2014-01-01 00:00:00  disallow,tag   3970\n",
-       "6   2010-01-01 00:00:00  disallow,tag     24\n",
-       "7   2009-01-01 00:00:00  disallow,tag    321\n",
-       "8            2013-01-01  disallow,tag      0\n",
-       "9            2012-01-01  disallow,tag      0\n",
-       "10           2011-01-01  disallow,tag      0"
-      ]
-     },
-     "execution_count": 33,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "#df_actions_year.fillna('log only')[df_actions_year [\"FilterActions\"]== \"log only\"]\n",
-    "test = df_actions_year.fillna('log only').query('FilterActions==\"disallow,tag\"')\n",
-    "df2 = pd.DataFrame([['2013-01-01', 'disallow,tag', 0], ['2012-01-01', 'disallow,tag', 0], ['2011-01-01', 'disallow,tag', 0]], columns=['LogYear', 'FilterActions', 'Freq'])\n",
-    "test.append(df2, ignore_index=True)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 30,
-   "metadata": {},
-   "outputs": [
-    {
-     "ename": "ValueError",
-     "evalue": "shape mismatch: objects cannot be broadcast to a single shape",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
-      "\u001b[0;32m<ipython-input-30-c11e9b229550>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m     11\u001b[0m \u001b[0mp3\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mind\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdf_actions_year\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfillna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'log only'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'FilterActions==\"warn\"'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     12\u001b[0m \u001b[0mp4\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mind\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdf_actions_year\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfillna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'log only'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'FilterActions==\"disallow\"'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mp5\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mind\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdf_actions_year\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfillna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'log only'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'FilterActions==\"disallow,tag\"'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     14\u001b[0m \u001b[0mp6\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mind\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m5\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdf_actions_year\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfillna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'log only'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'FilterActions==\"blockautopromote,tag\"'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     15\u001b[0m \u001b[0mp7\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mind\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m6\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdf_actions_year\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfillna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'log only'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'FilterActions==\"blockautopromote\"'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1808\u001b[0m                         \u001b[0;34m\"the Matplotlib list!)\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mlabel_namer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1809\u001b[0m                         RuntimeWarning, stacklevel=2)\n\u001b[0;32m-> 1810\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1811\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1812\u001b[0m         inner.__doc__ = _add_data_doc(inner.__doc__,\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mbar\u001b[0;34m(self, x, height, width, bottom, align, **kwargs)\u001b[0m\n\u001b[1;32m   2249\u001b[0m         x, height, width, y, linewidth = np.broadcast_arrays(\n\u001b[1;32m   2250\u001b[0m             \u001b[0;31m# Make args iterable too.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2251\u001b[0;31m             np.atleast_1d(x), height, width, y, linewidth)\n\u001b[0m\u001b[1;32m   2252\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2253\u001b[0m         \u001b[0;31m# Now that units have been converted, set the tick locations.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/numpy/lib/stride_tricks.py\u001b[0m in \u001b[0;36mbroadcast_arrays\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    250\u001b[0m     \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_m\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msubok\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msubok\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0m_m\u001b[0m \u001b[0;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    251\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 252\u001b[0;31m     \u001b[0mshape\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_broadcast_shape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    253\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    254\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mshape\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0marray\u001b[0m \u001b[0;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/numpy/lib/stride_tricks.py\u001b[0m in \u001b[0;36m_broadcast_shape\u001b[0;34m(*args)\u001b[0m\n\u001b[1;32m    185\u001b[0m     \u001b[0;31m# use the old-iterator because np.nditer does not handle size 0 arrays\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    186\u001b[0m     \u001b[0;31m# consistently\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 187\u001b[0;31m     \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbroadcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m32\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    188\u001b[0m     \u001b[0;31m# unfortunately, it cannot handle 32 or more arguments directly\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    189\u001b[0m     \u001b[0;32mfor\u001b[0m \u001b[0mpos\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m32\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m31\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;31mValueError\u001b[0m: shape mismatch: objects cannot be broadcast to a single shape"
-     ]
-    },
-    {
-     "data": {
-      "image/png": "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\n",
-      "text/plain": [
-       "<Figure size 432x288 with 1 Axes>"
-      ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "# Trying to plot a grouped bar chart\n",
-    "\n",
-    "N = 11\n",
-    "\n",
-    "fig, ax = plt.subplots()\n",
-    "\n",
-    "ind = np.arange(N)    # the x locations for the groups\n",
-    "width = 0.2         # the width of the bars\n",
-    "p1 = ax.bar(ind, df_actions_year.fillna('log only').query('FilterActions==\"log only\"')['Freq'], width, bottom=0)\n",
-    "p2 = ax.bar(ind + width, df_actions_year.fillna('log only').query('FilterActions==\"tag\"')['Freq'], width, bottom=0)\n",
-    "p3 = ax.bar(ind + 2*width, df_actions_year.fillna('log only').query('FilterActions==\"warn\"')['Freq'], width, bottom=0)\n",
-    "p4 = ax.bar(ind + 3*width, df_actions_year.fillna('log only').query('FilterActions==\"disallow\"')['Freq'], width, bottom=0)\n",
-    "p5 = ax.bar(ind + 4*width, df_actions_year.fillna('log only').query('FilterActions==\"disallow,tag\"')['Freq'], width, bottom=0)\n",
-    "p6 = ax.bar(ind + 5*width, df_actions_year.fillna('log only').query('FilterActions==\"blockautopromote,tag\"')['Freq'], width, bottom=0)\n",
-    "p7 = ax.bar(ind + 6*width, df_actions_year.fillna('log only').query('FilterActions==\"blockautopromote\"')['Freq'], width, bottom=0)\n",
-    "p8 = ax.bar(ind + 7*width, df_actions_year.fillna('log only').query('FilterActions==\"aftv5flagabuse\"')['Freq'], width, bottom=0)\n",
-    "\n",
-    "plt.xlabel('actions')\n",
-    "plt.xticks(rotation='20')\n",
-    "plt.ylabel('Num filters')\n",
-    "ax.set_title('Scores by group and gender')\n",
-    "ax.set_xticks(ind + 8*width / 9)\n",
-    "ax.set_xticklabels(('2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019'))\n",
-    "\n",
-    "ax.legend((p1[0], p2[0], p3[0], p4[0], p5[0], p6[0], p7[0], p8[0]), ('log only', 'tag', 'warn', 'disallow', 'disallow,tag', 'blockautopromote,tag', 'blockautopromote', 'aftv5flagabuse'))\n",
-    "ax.autoscale_view()\n",
-    "plt.show()"
-   ]
-  },
   {
    "cell_type": "code",
    "execution_count": 8,
@@ -10706,251 +10514,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 30,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "     LogMonth FilterActions   Freq\n",
-      "14 2018-12-01           NaN  83958\n",
-      "15 2018-12-01      disallow  33417\n",
-      "16 2018-12-01  disallow,tag      6\n",
-      "17 2018-12-01           tag  76257\n",
-      "18 2018-12-01          warn  32649\n",
-      "19 2018-11-01           NaN  83866\n",
-      "20 2018-11-01      disallow  43244\n",
-      "21 2018-11-01  disallow,tag      5\n",
-      "22 2018-11-01           tag  86062\n",
-      "23 2018-11-01          warn  40056\n",
-      "24 2018-10-01           NaN  87070\n",
-      "25 2018-10-01      disallow  38163\n",
-      "26 2018-10-01  disallow,tag      8\n",
-      "27 2018-10-01           tag  86140\n",
-      "28 2018-10-01          warn  45057\n",
-      "29 2018-09-01           NaN  88941\n",
-      "30 2018-09-01      disallow  27452\n",
-      "31 2018-09-01  disallow,tag      1\n",
-      "32 2018-09-01           tag  75443\n",
-      "33 2018-09-01          warn  38517\n",
-      "34 2018-08-01           NaN  97404\n",
-      "35 2018-08-01      disallow  22387\n",
-      "36 2018-08-01  disallow,tag      2\n",
-      "37 2018-08-01           tag  69333\n",
-      "38 2018-08-01          warn  26919\n",
-      "39 2018-07-01           NaN  93867\n",
-      "40 2018-07-01      disallow  18885\n",
-      "41 2018-07-01  disallow,tag      3\n",
-      "42 2018-07-01           tag  68355\n",
-      "43 2018-07-01          warn  24367\n",
-      "44 2018-06-01           NaN  87889\n",
-      "45 2018-06-01      disallow  21996\n",
-      "46 2018-06-01  disallow,tag      3\n",
-      "47 2018-06-01           tag  70779\n",
-      "48 2018-06-01          warn  28707\n",
-      "49 2018-05-01           NaN  83190\n",
-      "50 2018-05-01      disallow  30660\n",
-      "51 2018-05-01  disallow,tag      2\n",
-      "52 2018-05-01           tag  81854\n",
-      "53 2018-05-01          warn  42529\n",
-      "54 2018-04-01           NaN  88356\n",
-      "55 2018-04-01      disallow  30991\n",
-      "56 2018-04-01  disallow,tag      2\n",
-      "57 2018-04-01           tag  83492\n",
-      "58 2018-04-01          warn  40016\n",
-      "59 2018-03-01           NaN  89214\n",
-      "60 2018-03-01      disallow  34215\n",
-      "61 2018-03-01  disallow,tag     14\n",
-      "62 2018-03-01           tag  87523\n",
-      "63 2018-03-01          warn  44465\n",
-      "64 2018-02-01           NaN  62171\n",
-      "65 2018-02-01      disallow  32644\n",
-      "66 2018-02-01  disallow,tag      9\n",
-      "67 2018-02-01           tag  76656\n",
-      "68 2018-02-01          warn  42068\n",
-      "69 2018-01-01           NaN  73898\n",
-      "70 2018-01-01      disallow  32164\n",
-      "71 2018-01-01  disallow,tag     16\n",
-      "72 2018-01-01           tag  82561\n",
-      "73 2018-01-01          warn  47066\n"
-     ]
-    },
-    {
-     "data": {
-      "text/plain": [
-       "15    33417\n",
-       "20    43244\n",
-       "25    38163\n",
-       "30    27452\n",
-       "35    22387\n",
-       "40    18885\n",
-       "45    21996\n",
-       "50    30660\n",
-       "55    30991\n",
-       "60    34215\n",
-       "65    32644\n",
-       "70    32164\n",
-       "Name: Freq, dtype: int64"
-      ]
-     },
-     "execution_count": 30,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "mask2018 = (df_actions['LogMonth'] >= '2018-01-01') & (df_actions['LogMonth'] < '2019-01-01')\n",
-    "actions_2018 = df_actions.loc[mask2018]\n",
-    "print (actions_2018)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 51,
-   "metadata": {},
-   "outputs": [
-    {
-     "ename": "ValueError",
-     "evalue": "shape mismatch: objects cannot be broadcast to a single shape",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
-      "\u001b[0;32m<ipython-input-51-46c8522bf62c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0ma\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mactions_2018\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'FilterActions'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfillna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'log_only'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munique\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m     \u001b[0mac\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mactions_2018\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfillna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'log_only'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'FilterActions==@a'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m     \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mind\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mac\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0my_offset\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      8\u001b[0m     \u001b[0my_offset\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0my_offset\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mac\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mbar\u001b[0;34m(x, height, width, bottom, align, data, **kwargs)\u001b[0m\n\u001b[1;32m   2455\u001b[0m     return gca().bar(\n\u001b[1;32m   2456\u001b[0m         \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheight\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbottom\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malign\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0malign\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2457\u001b[0;31m         **({\"data\": data} if data is not None else {}), **kwargs)\n\u001b[0m\u001b[1;32m   2458\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2459\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1808\u001b[0m                         \u001b[0;34m\"the Matplotlib list!)\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mlabel_namer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1809\u001b[0m                         RuntimeWarning, stacklevel=2)\n\u001b[0;32m-> 1810\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1811\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1812\u001b[0m         inner.__doc__ = _add_data_doc(inner.__doc__,\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mbar\u001b[0;34m(self, x, height, width, bottom, align, **kwargs)\u001b[0m\n\u001b[1;32m   2249\u001b[0m         x, height, width, y, linewidth = np.broadcast_arrays(\n\u001b[1;32m   2250\u001b[0m             \u001b[0;31m# Make args iterable too.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2251\u001b[0;31m             np.atleast_1d(x), height, width, y, linewidth)\n\u001b[0m\u001b[1;32m   2252\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2253\u001b[0m         \u001b[0;31m# Now that units have been converted, set the tick locations.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/numpy/lib/stride_tricks.py\u001b[0m in \u001b[0;36mbroadcast_arrays\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    250\u001b[0m     \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_m\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msubok\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msubok\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0m_m\u001b[0m \u001b[0;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    251\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 252\u001b[0;31m     \u001b[0mshape\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_broadcast_shape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    253\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    254\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mshape\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0marray\u001b[0m \u001b[0;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/numpy/lib/stride_tricks.py\u001b[0m in \u001b[0;36m_broadcast_shape\u001b[0;34m(*args)\u001b[0m\n\u001b[1;32m    185\u001b[0m     \u001b[0;31m# use the old-iterator because np.nditer does not handle size 0 arrays\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    186\u001b[0m     \u001b[0;31m# consistently\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 187\u001b[0;31m     \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbroadcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m32\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    188\u001b[0m     \u001b[0;31m# unfortunately, it cannot handle 32 or more arguments directly\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    189\u001b[0m     \u001b[0;32mfor\u001b[0m \u001b[0mpos\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m32\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m31\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;31mValueError\u001b[0m: shape mismatch: objects cannot be broadcast to a single shape"
-     ]
-    },
-    {
-     "data": {
-      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAD8CAYAAACLrvgBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAE15JREFUeJzt3W+MXfV95/H3Z+2SQqrwJ1gotdHaUqysHLRViAXuIlURrsCkUcwDEoG2wZv1xqoCbVpVSkz2AaskSIm2Kg1SgmTFLibL4iA3K6yuU9cCqqgPIAwhChhCGUEIdiGexvypGiXU6Xcf3J+zt2bs+XXuNXc8fr+k0ZzzPb9z7vcIM5855/zunVQVkiT1+HeTbkCSdPowNCRJ3QwNSVI3Q0OS1M3QkCR1MzQkSd0MDUlSN0NDktTN0JAkdVs66QbG7cILL6yVK1dOug1JOq089thj/1BVy+Yat+hCY+XKlUxNTU26DUk6rSR5oWect6ckSd0MDUlSN0NDktTN0JAkdTM0JEndDA1JUjdDQ5LUzdCQJHUzNCRJ3RbdO8JPG//j3I4xr536PiTp38ArDUlSN0NDktTN21NnAm+FSRoTrzQkSd0MDUlSN29PSVpcvB17SnmlIUnqNmdoJNmR5HCSJ4dq/zPJD5J8P8n/SXLe0LZbkkwneSbJ1UP1Da02nWTrUH1Vkkda/RtJzmr1t7X16bZ95bhOWpI0Pz1XGncBG46r7Qcuqar/CPwdcAtAkjXA9cB72z5fTbIkyRLgK8A1wBrghjYW4EvA7VX1buAVYHOrbwZeafXb2zhJ0gTNGRpV9W3gyHG1v66qo231YWBFW94I7Kqqn1fV88A0cFn7mq6q56rqDWAXsDFJgCuB3W3/ncC1Q8fa2ZZ3A+vbeEnShIzjmcZ/Bb7VlpcDLw5tO9hqJ6q/E3h1KICO1f/Vsdr219r4N0myJclUkqmZmZmRT0iSNLuRZk8l+e/AUeCe8bQzP1W1DdgGsHbt2ppkL3qL9MyQAWfJLBTOaFo05h0aSf4L8CFgfVUd+0F9CLh4aNiKVuME9Z8A5yVZ2q4mhscfO9bBJEuBc9t4SdKEzOv2VJINwKeBD1fVT4c27QGubzOfVgGrge8AjwKr20ypsxg8LN/TwuYh4Lq2/ybg/qFjbWrL1wEPDoWTJGkC5rzSSHIv8AHgwiQHgVsZzJZ6G7C/PZt+uKp+r6oOJLkPeIrBbaubquoX7Tg3A/uAJcCOqjrQXuIzwK4kXwAeB7a3+nbg60mmGTyIv34M5ytJGsGcoVFVN8xS3j5L7dj424DbZqnvBfbOUn+Oweyq4+s/Az4yV39j5X1ySTopP0ZE4+UDT2lR82NEJEndDA1JUjdDQ5LUzWca0pnK50+aB680JEndvNKQ5uJUbOmXvNKQJHUzNCRJ3QwNSVI3Q0OS1M0H4dJC4jRYLXBeaUiSuhkakqRuhoYkqZuhIUnqZmhIkro5e0qSFroF9FE2XmlIkroZGpKkboaGJKmboSFJ6mZoSJK6zRkaSXYkOZzkyaHaBUn2J3m2fT+/1ZPkjiTTSb6f5NKhfTa18c8m2TRUf3+SJ9o+dyTJyV5DkjQ5PVcadwEbjqttBR6oqtXAA20d4BpgdfvaAtwJgwAAbgUuBy4Dbh0KgTuBTwztt2GO15AkTcicoVFV3waOHFfeCOxsyzuBa4fqd9fAw8B5Sd4FXA3sr6ojVfUKsB/Y0La9o6oerqoC7j7uWLO9hiRpQub7TOOiqnqpLb8MXNSWlwMvDo072Gonqx+cpX6y15AkTcjID8LbFUKNoZd5v0aSLUmmkkzNzMycylYk6Yw239D4cbu1RPt+uNUPARcPjVvRaierr5ilfrLXeJOq2lZVa6tq7bJly+Z5SpKkucw3NPYAx2ZAbQLuH6rf2GZRrQNea7eY9gFXJTm/PQC/CtjXtr2eZF2bNXXjccea7TUkSRMy5wcWJrkX+ABwYZKDDGZBfRG4L8lm4AXgo234XuCDwDTwU+DjAFV1JMnngUfbuM9V1bGH659kMEPrbOBb7YuTvIYkaULmDI2quuEEm9bPMraAm05wnB3AjlnqU8Als9R/MttrSAArf/a/u8b98NS2IZ1xfEe4JKmboSFJ6mZoSJK6+Zf7JGk+FtBf03sreaUhSermlYY0B2dqSf+fVxqSpG6GhiSpm6EhSepmaEiSuhkakqRuhoYkqZtTbiUtKj1TpH946ttYtAwNjZX/w0qLm6Eh6ZTzl4nFw9CQFhB/uGqhMzTOAP4gkjQuzp6SJHUzNCRJ3QwNSVI3Q0OS1M0H4UPeyr+b4MNpSacjQ0M6Q/mLi+bD21OSpG4jhUaSP0pyIMmTSe5N8qtJViV5JMl0km8kOauNfVtbn27bVw4d55ZWfybJ1UP1Da02nWTrKL1KkkY379BIshz4A2BtVV0CLAGuB74E3F5V7wZeATa3XTYDr7T67W0cSda0/d4LbAC+mmRJkiXAV4BrgDXADW2sJGlCRr09tRQ4O8lS4BzgJeBKYHfbvhO4ti1vbOu07euTpNV3VdXPq+p5YBq4rH1NV9VzVfUGsKuNlSRNyLxDo6oOAX8C/IhBWLwGPAa8WlVH27CDwPK2vBx4se17tI1/53D9uH1OVH+TJFuSTCWZmpmZme8pSZLmMMrtqfMZ/Oa/Cvh14O0Mbi+95apqW1Wtraq1y5Ytm0QLknRGGOX21G8Dz1fVTFX9M/BN4ArgvHa7CmAFcKgtHwIuBmjbzwV+Mlw/bp8T1SVJEzJKaPwIWJfknPZsYj3wFPAQcF0bswm4vy3vaeu07Q9WVbX69W121SpgNfAd4FFgdZuNdRaDh+V7RuhXkjSieb+5r6oeSbIb+C5wFHgc2Ab8X2BXki+02va2y3bg60mmgSMMQoCqOpDkPgaBcxS4qap+AZDkZmAfg5lZO6rqwHz7lSSNbqR3hFfVrcCtx5WfYzDz6fixPwM+coLj3AbcNkt9L7B3lB4lSePjO8IlSd0MDUlSN0NDktTN0JAkdfOj0SVpgXsr/9bPXLzSkCR1MzQkSd0MDUlSN0NDktTN0JAkdTM0JEndDA1JUjdDQ5LUzdCQJHUzNCRJ3QwNSVI3Q0OS1M3QkCR1MzQkSd0MDUlSN0NDktTN0JAkdTM0JEndRgqNJOcl2Z3kB0meTvKbSS5Isj/Js+37+W1sktyRZDrJ95NcOnScTW38s0k2DdXfn+SJts8dSTJKv5Kk0Yz6N8K/DPxVVV2X5CzgHOCzwANV9cUkW4GtwGeAa4DV7ety4E7g8iQXALcCa4ECHkuyp6peaWM+ATwC7AU2AN8asWdJGtlC+rvdb6V5X2kkORf4LWA7QFW9UVWvAhuBnW3YTuDatrwRuLsGHgbOS/Iu4Gpgf1UdaUGxH9jQtr2jqh6uqgLuHjqWJGkCRrk9tQqYAf48yeNJvpbk7cBFVfVSG/MycFFbXg68OLT/wVY7Wf3gLHVJ0oSMEhpLgUuBO6vqfcA/MbgV9UvtCqFGeI0uSbYkmUoyNTMzc6pfTpLOWKOExkHgYFU90tZ3MwiRH7dbS7Tvh9v2Q8DFQ/uvaLWT1VfMUn+TqtpWVWurau2yZctGOCVJ0snMOzSq6mXgxSTvaaX1wFPAHuDYDKhNwP1teQ9wY5tFtQ54rd3G2gdcleT8NtPqKmBf2/Z6knVt1tSNQ8eSJE3AqLOnfh+4p82ceg74OIMgui/JZuAF4KNt7F7gg8A08NM2lqo6kuTzwKNt3Oeq6khb/iRwF3A2g1lTzpySpAkaKTSq6nsMpsoeb/0sYwu46QTH2QHsmKU+BVwySo+SpPHxHeGSpG6GhiSpm6EhSepmaEiSuhkakqRuhoYkqZuhIUnqZmhIkroZGpKkboaGJKmboSFJ6mZoSJK6GRqSpG6GhiSpm6EhSepmaEiSuhkakqRuhoYkqZuhIUnqZmhIkroZGpKkboaGJKmboSFJ6mZoSJK6jRwaSZYkeTzJX7b1VUkeSTKd5BtJzmr1t7X16bZ95dAxbmn1Z5JcPVTf0GrTSbaO2qskaTTjuNL4FPD00PqXgNur6t3AK8DmVt8MvNLqt7dxJFkDXA+8F9gAfLUF0RLgK8A1wBrghjZWkjQhI4VGkhXA7wBfa+sBrgR2tyE7gWvb8sa2Ttu+vo3fCOyqqp9X1fPANHBZ+5ququeq6g1gVxsrSZqQUa80/gz4NPAvbf2dwKtVdbStHwSWt+XlwIsAbftrbfwv68ftc6K6JGlC5h0aST4EHK6qx8bYz3x72ZJkKsnUzMzMpNuRpEVrlCuNK4APJ/khg1tHVwJfBs5LsrSNWQEcasuHgIsB2vZzgZ8M14/b50T1N6mqbVW1tqrWLlu2bIRTkiSdzLxDo6puqaoVVbWSwYPsB6vqPwMPAde1YZuA+9vynrZO2/5gVVWrX99mV60CVgPfAR4FVrfZWGe119gz334lSaNbOveQf7PPALuSfAF4HNje6tuBryeZBo4wCAGq6kCS+4CngKPATVX1C4AkNwP7gCXAjqo6cAr6lSR1GktoVNXfAH/Tlp9jMPPp+DE/Az5ygv1vA26bpb4X2DuOHiVJo/Md4ZKkboaGJKmboSFJ6mZoSJK6GRqSpG6GhiSpm6EhSepmaEiSuhkakqRuhoYkqZuhIUnqZmhIkroZGpKkboaGJKmboSFJ6mZoSJK6GRqSpG6GhiSpm6EhSepmaEiSuhkakqRuhoYkqZuhIUnqZmhIkrrNOzSSXJzkoSRPJTmQ5FOtfkGS/Umebd/Pb/UkuSPJdJLvJ7l06Fib2vhnk2waqr8/yRNtnzuSZJSTlSSNZpQrjaPAH1fVGmAdcFOSNcBW4IGqWg080NYBrgFWt68twJ0wCBngVuBy4DLg1mNB08Z8Ymi/DSP0K0ka0bxDo6peqqrvtuV/BJ4GlgMbgZ1t2E7g2ra8Ebi7Bh4GzkvyLuBqYH9VHamqV4D9wIa27R1V9XBVFXD30LEkSRMwlmcaSVYC7wMeAS6qqpfappeBi9rycuDFod0OttrJ6gdnqc/2+luSTCWZmpmZGelcJEknNnJoJPk14C+AP6yq14e3tSuEGvU15lJV26pqbVWtXbZs2al+OUk6Y40UGkl+hUFg3FNV32zlH7dbS7Tvh1v9EHDx0O4rWu1k9RWz1CVJEzLK7KkA24Gnq+pPhzbtAY7NgNoE3D9Uv7HNoloHvNZuY+0DrkpyfnsAfhWwr217Pcm69lo3Dh1LkjQBS0fY9wrgY8ATSb7Xap8Fvgjcl2Qz8ALw0bZtL/BBYBr4KfBxgKo6kuTzwKNt3Oeq6khb/iRwF3A28K32JUmakHmHRlX9LXCi902sn2V8ATed4Fg7gB2z1KeAS+bboyRpvHxHuCSpm6EhSepmaEiSuhkakqRuhoYkqZuhIUnqZmhIkroZGpKkboaGJKmboSFJ6mZoSJK6GRqSpG6GhiSpm6EhSepmaEiSuhkakqRuhoYkqZuhIUnqZmhIkroZGpKkboaGJKmboSFJ6mZoSJK6LfjQSLIhyTNJppNsnXQ/knQmW9ChkWQJ8BXgGmANcEOSNZPtSpLOXAs6NIDLgOmqeq6q3gB2ARsn3JMknbEWemgsB14cWj/YapKkCUhVTbqHE0pyHbChqv5bW/8YcHlV3XzcuC3Alrb6HuCZMbZxIfAPYzzeQrAYzwk8r9PJYjwnOL3P699X1bK5Bi19KzoZwSHg4qH1Fa32r1TVNmDbqWggyVRVrT0Vx56UxXhO4HmdThbjOcHiPa9hC/321KPA6iSrkpwFXA/smXBPknTGWtBXGlV1NMnNwD5gCbCjqg5MuC1JOmMt6NAAqKq9wN4JtnBKbntN2GI8J/C8TieL8Zxg8Z7XLy3oB+GSpIVloT/TkCQtIIbGCSzGjy9JcnGSh5I8leRAkk9NuqdxSbIkyeNJ/nLSvYxLkvOS7E7ygyRPJ/nNSfc0Dkn+qP37ezLJvUl+ddI9zUeSHUkOJ3lyqHZBkv1Jnm3fz59kj6eCoTGLRfzxJUeBP66qNcA64KZFcl4AnwKennQTY/Zl4K+q6j8Av8EiOL8ky4E/ANZW1SUMJrhcP9mu5u0uYMNxta3AA1W1GnigrS8qhsbsFuXHl1TVS1X13bb8jwx+CJ3277BPsgL4HeBrk+5lXJKcC/wWsB2gqt6oqlcn29XYLAXOTrIUOAf4+wn3My9V9W3gyHHljcDOtrwTuPYtbeotYGjMbtF/fEmSlcD7gEcm28lY/BnwaeBfJt3IGK0CZoA/b7fdvpbk7ZNualRVdQj4E+BHwEvAa1X115PtaqwuqqqX2vLLwEWTbOZUMDTOQEl+DfgL4A+r6vVJ9zOKJB8CDlfVY5PuZcyWApcCd1bV+4B/YhHc6mj3+DcyCMVfB96e5Hcn29WpUYOpqYtueqqhMbuujy85HSX5FQaBcU9VfXPS/YzBFcCHk/yQwW3EK5P8r8m2NBYHgYNVdexKcDeDEDnd/TbwfFXNVNU/A98E/tOEexqnHyd5F0D7fnjC/YydoTG7RfnxJUnC4B7501X1p5PuZxyq6paqWlFVKxn8d3qwqk7731yr6mXgxSTvaaX1wFMTbGlcfgSsS3JO+/e4nkXwgH/IHmBTW94E3D/BXk6JBf+O8ElYxB9fcgXwMeCJJN9rtc+2d91r4fl94J72i8tzwMcn3M/IquqRJLuB7zKYzfc4p+m7qJPcC3wAuDDJQeBW4IvAfUk2Ay8AH51ch6eG7wiXJHXz9pQkqZuhIUnqZmhIkroZGpKkboaGJKmboSFJ6mZoSJK6GRqSpG7/D/ZywIlroob5AAAAAElFTkSuQmCC\n",
-      "text/plain": [
-       "<Figure size 432x288 with 1 Axes>"
-      ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "ind = np.arange(12)    # the x locations for the groups\n",
-    "width = 0.35       # the width of the bars: can also be len(x) sequence\n",
-    "y_offset = np.zeros(len(ind))\n",
-    "\n",
-    "for a in actions_2018['FilterActions'].fillna('log_only').unique():\n",
-    "    ac = actions_2018.fillna('log_only').query('FilterActions==@a')\n",
-    "    plt.bar(ind, ac['Freq'], width, bottom=y_offset)\n",
-    "    y_offset = y_offset + ac['Freq']\n",
-    "\n",
-    "plt.show()"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 36,
-   "metadata": {
-    "scrolled": true
-   },
-   "outputs": [
-    {
-     "ename": "ValueError",
-     "evalue": "shape mismatch: objects cannot be broadcast to a single shape",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
-      "\u001b[0;32m<ipython-input-36-c599c7c7dd11>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m     11\u001b[0m \u001b[0mp1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mind\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdisallow\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     12\u001b[0m \u001b[0mp2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mind\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdisallow_tag\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdisallow\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mp3\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mind\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtag\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdisallow\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mdisallow_tag\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     14\u001b[0m \u001b[0mp4\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mind\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwarn\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdisallow\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mdisallow_tag\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mtag\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     15\u001b[0m \u001b[0mp5\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mind\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlog\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdisallow\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mdisallow_tag\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mtag\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mwarn\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Freq'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mbar\u001b[0;34m(x, height, width, bottom, align, data, **kwargs)\u001b[0m\n\u001b[1;32m   2455\u001b[0m     return gca().bar(\n\u001b[1;32m   2456\u001b[0m         \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheight\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwidth\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbottom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbottom\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malign\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0malign\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2457\u001b[0;31m         **({\"data\": data} if data is not None else {}), **kwargs)\n\u001b[0m\u001b[1;32m   2458\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2459\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36minner\u001b[0;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1808\u001b[0m                         \u001b[0;34m\"the Matplotlib list!)\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mlabel_namer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1809\u001b[0m                         RuntimeWarning, stacklevel=2)\n\u001b[0;32m-> 1810\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1811\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1812\u001b[0m         inner.__doc__ = _add_data_doc(inner.__doc__,\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mbar\u001b[0;34m(self, x, height, width, bottom, align, **kwargs)\u001b[0m\n\u001b[1;32m   2249\u001b[0m         x, height, width, y, linewidth = np.broadcast_arrays(\n\u001b[1;32m   2250\u001b[0m             \u001b[0;31m# Make args iterable too.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2251\u001b[0;31m             np.atleast_1d(x), height, width, y, linewidth)\n\u001b[0m\u001b[1;32m   2252\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2253\u001b[0m         \u001b[0;31m# Now that units have been converted, set the tick locations.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/numpy/lib/stride_tricks.py\u001b[0m in \u001b[0;36mbroadcast_arrays\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    250\u001b[0m     \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_m\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msubok\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msubok\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0m_m\u001b[0m \u001b[0;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    251\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 252\u001b[0;31m     \u001b[0mshape\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_broadcast_shape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    253\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    254\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mshape\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0marray\u001b[0m \u001b[0;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/uni/ma-arbeit-filters/src/env3/lib/python3.6/site-packages/numpy/lib/stride_tricks.py\u001b[0m in \u001b[0;36m_broadcast_shape\u001b[0;34m(*args)\u001b[0m\n\u001b[1;32m    185\u001b[0m     \u001b[0;31m# use the old-iterator because np.nditer does not handle size 0 arrays\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    186\u001b[0m     \u001b[0;31m# consistently\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 187\u001b[0;31m     \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbroadcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m32\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    188\u001b[0m     \u001b[0;31m# unfortunately, it cannot handle 32 or more arguments directly\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    189\u001b[0m     \u001b[0;32mfor\u001b[0m \u001b[0mpos\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m32\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m31\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;31mValueError\u001b[0m: shape mismatch: objects cannot be broadcast to a single shape"
-     ]
-    },
-    {
-     "data": {
-      "image/png": "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\n",
-      "text/plain": [
-       "<Figure size 432x288 with 1 Axes>"
-      ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "disallow = actions_2018.query('FilterActions==\"disallow\"')\n",
-    "disallow_tag = actions_2018.query('FilterActions==\"disallow,tag\"')\n",
-    "tag = actions_2018.query('FilterActions==\"tag\"')\n",
-    "warn = actions_2018.query('FilterActions==\"warn\"')\n",
-    "log = actions_2018.fillna('log_only').query('FilterActions==\"log_only\"')\n",
-    "\n",
-    "\n",
-    "ind = np.arange(12)    # the x locations for the groups\n",
-    "width = 0.35       # the width of the bars: can also be len(x) sequence\n",
-    "\n",
-    "'''\n",
-    "p1 = plt.bar(ind, disallow['Freq'], width)\n",
-    "p2 = plt.bar(ind, disallow_tag['Freq'], width, bottom=disallow['Freq'])\n",
-    "p3 = plt.bar(ind, tag['Freq'], width, bottom=(disallow['Freq']+disallow_tag['Freq']))\n",
-    "p4 = plt.bar(ind, warn['Freq'], width, bottom=(disallow['Freq']+disallow_tag['Freq']+tag['Freq']))\n",
-    "p5 = plt.bar(ind, log['Freq'], width, bottom=(disallow['Freq']+disallow_tag['Freq']+tag['Freq']+warn['Freq']))\n",
-    "\n",
-    "plt.ylabel('Frequency of edit filter actions')\n",
-    "plt.title('Edit filter actions per month')\n",
-    "plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))\n",
-    "plt.legend((p1[0], p2[0], p3[0], p4[0], p5[0]), ('disallow', 'disallow, tag', 'tag', 'warn', 'log only'))\n",
-    "'''\n",
-    "\n",
-    "\n",
-    "\n",
-    "plt.show()\n"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 5,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "[('createaccount', 121),\n",
-       " ('edit', 121),\n",
-       " ('move', 121),\n",
-       " ('delete', 61),\n",
-       " ('autocreateaccount', 58),\n",
-       " ('upload', 35),\n",
-       " ('feedback', 24),\n",
-       " ('gatheredit', 11),\n",
-       " ('moodbar', 11),\n",
-       " ('stashupload', 2)]"
-      ]
-     },
-     "execution_count": 5,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "# Which editors' actions triggered a filter\n",
-    "df_ed_actions = pd.read_csv(\"quarry-34050-which-actions-triggered-an-abuse-filter-en-wiki-run346498.csv\", sep=',')\n",
-    "collections.Counter(list(df_ed_actions['EditorActions'])).most_common()\n"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 23,
+   "execution_count": 56,
    "metadata": {
     "scrolled": true
    },
@@ -11420,13 +10984,14 @@
        "[565 rows x 3 columns]"
       ]
      },
-     "execution_count": 23,
+     "execution_count": 56,
      "metadata": {},
      "output_type": "execute_result"
     }
    ],
    "source": [
     "# Which editors' actions triggered a filter over time\n",
+    "df_ed_actions = pd.read_csv(\"quarry-34050-which-actions-triggered-an-abuse-filter-en-wiki-run346498.csv\", sep=',')\n",
     "df_ed_actions['LogMonth'] = pd.to_datetime(df_ed_actions['LogMonth'], format=\"%Y%m\")\n",
     "df_ed_actions\n",
     "\n",
-- 
GitLab