diff --git a/quarries/quarry-37500 b/quarries/quarry-37500 new file mode 100644 index 0000000000000000000000000000000000000000..93d0706374ae31208b0491b4d42edc9238c44b7f --- /dev/null +++ b/quarries/quarry-37500 @@ -0,0 +1,5 @@ +use enwiki_p; +select left(afl_timestamp, 4) LogYear, afl_actions FilterActions, count(*) Freq +from abuse_filter_log +group by left(afl_timestamp, 4), afl_actions +order by 1 desc; diff --git a/src/explore.ipynb b/src/explore.ipynb index 398709c68d486d23ec6a9ce91210f04b9f56a498..fc100bb7bfcf56c70035b05f05079ff0106d157d 100644 --- a/src/explore.ipynb +++ b/src/explore.ipynb @@ -1458,8 +1458,6 @@ } ], "source": [ - "# filter hits per month (all filters) (data quarry from 05.03.2019, that's why hitcount Mar 2019 is so small)\n", - "# Mar 2009 is also lower, since the first filter was introduced on 17.3.2009 and not at the beginning of the month\n", "df_hits = pd.read_csv(\"quarry-34014-how-many-abuse-filter-hits-have-been-there-per-month-en-wiki-run346197.csv\", sep=',')\n", "df_hits['LogMonth'] = pd.to_datetime(df_hits['LogMonth'], format=\"%Y%m\")\n", "\n", @@ -1494,6 +1492,14 @@ "#TODO: why is the peak there? there's an upward tendency" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Data quarry from 05.03.2019, that's why hitcount Mar 2019 is so small.\n", + "Mar 2009 is also lower, since the first filter was introduced on 17.3.2009 and not at the beginning of the month." + ] + }, { "cell_type": "code", "execution_count": 40, @@ -6292,6 +6298,8 @@ "source": [ "To be fair, I don't see any particularly interesting or conspicious pattern, beside the 71920 attempts at account creations. Neither the pages edited are extraordinary, nor are there particular pages with extra-orbitant hits; users are not particularly interesting either and it's mostly the most active filters that got triggered anyway.\n", "\n", + "The 3 IP editors with +1000 filter triggers triggered above all (or maybe exclusively) filters dealing with linkspam.\n", + "\n", "But maybe it's exactly them that make the 71920 hits difference to all the \"standard\" numbers. I'm comparing this with September 2016 (238406 hits) for reference." ] }, @@ -6423,7 +6431,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The comparison of number of edits per user reveals that in January there were a couple of particularly active IPs. It would be interesting to know what they were trying to do." + "The comparison of number of edits per user reveals that in January there were a couple of particularly active IPs. It would be interesting to know what they were trying to do. (Answer: they were spamming.)" ] }, { @@ -6433,6 +6441,13 @@ "### Actions over the years" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The purpose of the next snippet is to comprehend whether there is/was a tendency towards more liberal or stricter actions." + ] + }, { "cell_type": "code", "execution_count": 6, @@ -7032,6 +7047,138 @@ " print(df_actions.fillna('log only'))" ] }, + { + "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." + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " LogYear FilterActions Freq\n", + "0 2019-01-01 log only 498557\n", + "1 2019-01-01 disallow 312772\n", + "2 2019-01-01 disallow,tag 18\n", + "3 2019-01-01 tag 473854\n", + "4 2019-01-01 warn 205715\n", + "5 2018-01-01 log only 1019817\n", + "6 2018-01-01 disallow 366209\n", + "7 2018-01-01 disallow,tag 71\n", + "8 2018-01-01 tag 944445\n", + "9 2018-01-01 warn 452407\n", + "10 2017-01-01 log only 727988\n", + "11 2017-01-01 disallow 395566\n", + "12 2017-01-01 disallow,tag 961\n", + "13 2017-01-01 tag 1057178\n", + "14 2017-01-01 warn 496777\n", + "15 2016-01-01 log only 1188795\n", + "16 2016-01-01 disallow 397976\n", + "17 2016-01-01 disallow,tag 27752\n", + "18 2016-01-01 tag 1005328\n", + "19 2016-01-01 warn 637696\n", + "20 2015-01-01 log only 884479\n", + "21 2015-01-01 disallow 369453\n", + "22 2015-01-01 disallow,tag 36971\n", + "23 2015-01-01 tag 884762\n", + "24 2015-01-01 warn 633934\n", + "25 2014-01-01 log only 128362\n", + "26 2014-01-01 disallow 322553\n", + "27 2014-01-01 disallow,tag 3970\n", + "28 2014-01-01 tag 555330\n", + "29 2014-01-01 warn 566693\n", + "30 2013-01-01 log only 85726\n", + "31 2013-01-01 disallow 410817\n", + "32 2013-01-01 tag 594869\n", + "33 2013-01-01 warn 653766\n", + "34 2012-01-01 log only 92226\n", + "35 2012-01-01 aftv5flagabuse 5755\n", + "36 2012-01-01 blockautopromote 37\n", + "37 2012-01-01 disallow 452072\n", + "38 2012-01-01 tag 698173\n", + "39 2012-01-01 warn 733247\n", + "40 2011-01-01 log only 170676\n", + "41 2011-01-01 blockautopromote 40\n", + "42 2011-01-01 blockautopromote,tag 3\n", + "43 2011-01-01 disallow 283517\n", + "44 2011-01-01 tag 1009932\n", + "45 2011-01-01 warn 595725\n", + "46 2010-01-01 log only 56999\n", + "47 2010-01-01 blockautopromote 1\n", + "48 2010-01-01 disallow 283117\n", + "49 2010-01-01 disallow,tag 24\n", + "50 2010-01-01 tag 1222474\n", + "51 2010-01-01 warn 605113\n", + "52 2009-01-01 log only 192680\n", + "53 2009-01-01 blockautopromote 1056\n", + "54 2009-01-01 blockautopromote,tag 22\n", + "55 2009-01-01 disallow 98648\n", + "56 2009-01-01 disallow,tag 321\n", + "57 2009-01-01 tag 854153\n", + "58 2009-01-01 warn 662415\n" + ] + } + ], + "source": [ + "# Which actions were triggered how often over the years\n", + "df_actions_year = pd.read_csv(\"quarry-37500-number-of-abuse-filters-filter-actions-per-year-en-wiki-run389252.csv\", sep=',')\n", + "df_actions_year['LogYear'] = pd.to_datetime(df_actions_year['LogYear'], format=\"%Y\")\n", + "\n", + "with pd.option_context('display.max_rows', None, 'display.max_columns', None):\n", + " print(df_actions_year.fillna('log only'))" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "ufunc subtract cannot use operands with types dtype('<M8[ns]') and dtype('float64')", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-56-f24e07750944>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxticks\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrotation\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'20'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Num filters'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx_values\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_values\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 9\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\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 2275\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0malign\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'center'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2276\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0morientation\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'vertical'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2277\u001b[0;31m \u001b[0mleft\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mwidth\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2278\u001b[0m \u001b[0mbottom\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2279\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0morientation\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'horizontal'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: ufunc subtract cannot use operands with types dtype('<M8[ns]') and dtype('float64')" + ] + }, + { + "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": [ + "#ap_actions_labels = [x[0] for x in active_public_actions]\n", + "x_values = df_actions_year['LogYear']\n", + "y_values = df_actions_year['Freq']\n", + "\n", + "plt.xlabel('actions')\n", + "plt.xticks(rotation='20')\n", + "plt.ylabel('Num filters')\n", + "plt.bar(x_values, y_values)\n", + "plt.show()" + ] + }, { "cell_type": "code", "execution_count": 8,