Last active
May 29, 2019 17:23
-
-
Save jenningsanderson/018c57c4df21ca88a0543f5ab965230c to your computer and use it in GitHub Desktop.
Notebook describing the counting of minor versions from `history_geoms` table.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Counting how many users are creating minor versions\n", | |
"\n", | |
"\n", | |
"```sql\n", | |
"SELECT changesets.user, changesets.uid, MAX(changesets.created_at), count(history_geoms.id) AS number_of_versions, count(distinct(history_geoms.id)) AS number_of_objects\n", | |
"FROM history_geoms\n", | |
"JOIN changesets ON changesets.id = history_geoms.changeset\n", | |
"WHERE minorversion > 0\n", | |
"GROUP BY changesets.user, changesets.uid\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 135, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2019-05-29T17:07:27.211894Z", | |
"start_time": "2019-05-29T17:07:27.186165Z" | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"import json, csv, pandas as pd\n", | |
"import warnings\n", | |
"warnings.filterwarnings(action='once')\n", | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 136, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2019-05-29T17:07:28.301963Z", | |
"start_time": "2019-05-29T17:07:27.832109Z" | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"df = pd.read_csv('data/minor_versions_by_user.csv')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 137, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2019-05-29T17:07:29.067478Z", | |
"start_time": "2019-05-29T17:07:28.351297Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"records: 448,683\n" | |
] | |
}, | |
{ | |
"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>user</th>\n", | |
" <th>uid</th>\n", | |
" <th>_col2</th>\n", | |
" <th>number_of_versions</th>\n", | |
" <th>number_of_objects</th>\n", | |
" <th>last_edit</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>sk656</td>\n", | |
" <td>549423</td>\n", | |
" <td>2014-07-06 06:43:21.000</td>\n", | |
" <td>2679</td>\n", | |
" <td>1321</td>\n", | |
" <td>2014-07-06</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>Kuskokwim</td>\n", | |
" <td>8901564</td>\n", | |
" <td>2019-05-10 05:45:16.000</td>\n", | |
" <td>12750</td>\n", | |
" <td>9436</td>\n", | |
" <td>2019-05-10</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>AjBelnuovo</td>\n", | |
" <td>1799626</td>\n", | |
" <td>2019-05-07 13:53:12.000</td>\n", | |
" <td>104333</td>\n", | |
" <td>68497</td>\n", | |
" <td>2019-05-07</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" user uid _col2 number_of_versions \\\n", | |
"0 sk656 549423 2014-07-06 06:43:21.000 2679 \n", | |
"1 Kuskokwim 8901564 2019-05-10 05:45:16.000 12750 \n", | |
"2 AjBelnuovo 1799626 2019-05-07 13:53:12.000 104333 \n", | |
"\n", | |
" number_of_objects last_edit \n", | |
"0 1321 2014-07-06 \n", | |
"1 9436 2019-05-10 \n", | |
"2 68497 2019-05-07 " | |
] | |
}, | |
"execution_count": 137, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"print(\"records: {:,}\".format(len(df)))\n", | |
"df['last_edit'] = df._col2.apply(lambda x: pd.Timestamp(x).date())\n", | |
"df.head(3)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 138, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2019-05-29T17:07:29.877646Z", | |
"start_time": "2019-05-29T17:07:29.115183Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/usr/local/Cellar/jupyter/1.0.0_5/libexec/lib/python3.7/site-packages/ipykernel_launcher.py:3: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n", | |
" This is separate from the ipykernel package so we can avoid doing imports until\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Filtered length: 447,189\n" | |
] | |
} | |
], | |
"source": [ | |
"#Clean out broken user?\n", | |
"filtered_df = df[df['user'].str.contains('woodpeck_repair')==False];\n", | |
"filtered_df = filtered_df[df['user'].str.contains('user_870861')==False];\n", | |
"filtered_df = filtered_df[df['user'].str.contains('import')==False];\n", | |
"print(\"Filtered length: {:,}\".format( len(filtered_df) ) );" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 139, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2019-05-29T17:07:38.605123Z", | |
"start_time": "2019-05-29T17:07:38.597674Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Ultimately, there are 134,407,944 objects with 197,987,929 minor versions globally\n" | |
] | |
} | |
], | |
"source": [ | |
"print(\"Ultimately, there are {:,} objects with {:,} minor versions globally\".format( \n", | |
" filtered_df.number_of_objects.sum(), filtered_df.number_of_versions.sum() ) )" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 141, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2019-05-29T17:08:23.382191Z", | |
"start_time": "2019-05-29T17:08:23.373776Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Average number of minor versions created per user: 443\n", | |
"Average number of objects edited via a minor version per user: 301\n" | |
] | |
} | |
], | |
"source": [ | |
"print(\"Average number of minor versions created per user: {:.0f}\".format( filtered_df.number_of_versions.mean() ))\n", | |
"print(\"Average number of objects edited via a minor version per user: {:.0f}\".format( filtered_df.number_of_objects.mean() ))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 143, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2019-05-29T17:08:58.473475Z", | |
"start_time": "2019-05-29T17:08:57.851123Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 1080x576 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"ax = filtered_df.number_of_objects.plot(kind='hist',bins=100,logy=True, figsize=(15,8))\n", | |
"ax.set_title(\"Histogram of number of objects edited via minor version per user\");" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 144, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2019-05-29T17:09:12.590784Z", | |
"start_time": "2019-05-29T17:09:12.493733Z" | |
} | |
}, | |
"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>user</th>\n", | |
" <th>uid</th>\n", | |
" <th>_col2</th>\n", | |
" <th>number_of_versions</th>\n", | |
" <th>number_of_objects</th>\n", | |
" <th>last_edit</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>143188</th>\n", | |
" <td>yoshitk</td>\n", | |
" <td>1003241</td>\n", | |
" <td>2019-05-13 01:59:39.000</td>\n", | |
" <td>522827</td>\n", | |
" <td>398922</td>\n", | |
" <td>2019-05-13</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>177336</th>\n", | |
" <td>didier2020</td>\n", | |
" <td>300459</td>\n", | |
" <td>2019-05-12 18:19:17.000</td>\n", | |
" <td>378795</td>\n", | |
" <td>370677</td>\n", | |
" <td>2019-05-12</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>227084</th>\n", | |
" <td>lodde1949</td>\n", | |
" <td>138772</td>\n", | |
" <td>2019-04-13 16:23:05.000</td>\n", | |
" <td>570765</td>\n", | |
" <td>351464</td>\n", | |
" <td>2019-04-13</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>82576</th>\n", | |
" <td>Hjart</td>\n", | |
" <td>207581</td>\n", | |
" <td>2019-05-12 06:47:22.000</td>\n", | |
" <td>415567</td>\n", | |
" <td>322759</td>\n", | |
" <td>2019-05-12</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>24080</th>\n", | |
" <td>GautierPP</td>\n", | |
" <td>2797881</td>\n", | |
" <td>2019-05-11 09:02:32.000</td>\n", | |
" <td>392944</td>\n", | |
" <td>249199</td>\n", | |
" <td>2019-05-11</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" user uid _col2 number_of_versions \\\n", | |
"143188 yoshitk 1003241 2019-05-13 01:59:39.000 522827 \n", | |
"177336 didier2020 300459 2019-05-12 18:19:17.000 378795 \n", | |
"227084 lodde1949 138772 2019-04-13 16:23:05.000 570765 \n", | |
"82576 Hjart 207581 2019-05-12 06:47:22.000 415567 \n", | |
"24080 GautierPP 2797881 2019-05-11 09:02:32.000 392944 \n", | |
"\n", | |
" number_of_objects last_edit \n", | |
"143188 398922 2019-05-13 \n", | |
"177336 370677 2019-05-12 \n", | |
"227084 351464 2019-04-13 \n", | |
"82576 322759 2019-05-12 \n", | |
"24080 249199 2019-05-11 " | |
] | |
}, | |
"execution_count": 144, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"filtered_df.sort_values(by='number_of_objects',ascending=False).head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 150, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2019-05-29T17:15:20.464505Z", | |
"start_time": "2019-05-29T17:15:20.203711Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 1080x576 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"ax = filtered_df.groupby('last_edit').aggregate('count')['user'].plot(figsize=(15,8))\n", | |
"ax.set_title(\"Latest edit to a minor version: (Count of recency in editing)\")\n", | |
"ax.set_ylabel(\"Number of Users\"); ax.set_xlabel(\"Date\");" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### Interpretation\n", | |
"This figure shows that people are actively editing minor versions. The earlier spikes represent the number of people who haven't edited a minor version since then. The largest spike at the end (and the rising quantities towards the end) show that many users continue to actively edit minor versions" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"hide_input": false, | |
"kernelspec": { | |
"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.3" | |
}, | |
"varInspector": { | |
"cols": { | |
"lenName": 16, | |
"lenType": 16, | |
"lenVar": 40 | |
}, | |
"kernels_config": { | |
"python": { | |
"delete_cmd_postfix": "", | |
"delete_cmd_prefix": "del ", | |
"library": "var_list.py", | |
"varRefreshCmd": "print(var_dic_list())" | |
}, | |
"r": { | |
"delete_cmd_postfix": ") ", | |
"delete_cmd_prefix": "rm(", | |
"library": "var_list.r", | |
"varRefreshCmd": "cat(var_dic_list()) " | |
} | |
}, | |
"types_to_exclude": [ | |
"module", | |
"function", | |
"builtin_function_or_method", | |
"instance", | |
"_Feature" | |
], | |
"window_display": false | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment