{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "papermill": { "duration": 0.717985, "end_time": "2019-08-01T17:02:19.271138", "exception": false, "start_time": "2019-08-01T17:02:18.553153", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import pandas as pd\n", "import altair as alt\n", "\n", "from datetime import timedelta\n", "import pytz\n", "\n", "import sys\n", "sys.path.append('../')\n", "from mod import load_data, alt_theme" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "papermill": { "duration": 2.901151, "end_time": "2019-08-01T17:02:22.184707", "exception": false, "start_time": "2019-08-01T17:02:19.283556", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "comments, issues, prs = load_data('../../data/')\n", "bot_names = pd.read_csv('../bot_names.csv')\n", "comments = comments.query('author not in @bot_names')\n", "issues = issues.query('author not in @bot_names')\n", "prs = prs.query('author not in @bot_names')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "papermill": { "duration": 0.028441, "end_time": "2019-08-01T17:02:22.226844", "exception": false, "start_time": "2019-08-01T17:02:22.198403", "status": "completed" }, "tags": [ "parameters" ] }, "outputs": [], "source": [ "renderer = \"jupyterlab\"" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "papermill": { "duration": 0.022358, "end_time": "2019-08-01T17:02:22.261871", "exception": false, "start_time": "2019-08-01T17:02:22.239513", "status": "completed" }, "tags": [ "injected-parameters" ] }, "outputs": [], "source": [ "# Parameters\n", "renderer = \"kaggle\"\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "papermill": { "duration": 0.030317, "end_time": "2019-08-01T17:02:22.305717", "exception": false, "start_time": "2019-08-01T17:02:22.275400", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "ThemeRegistry.enable('my_theme')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "alt.renderers.enable(renderer);\n", "alt.themes.register('my_theme', alt_theme)\n", "alt.themes.enable(\"my_theme\")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "papermill": { "duration": 0.494666, "end_time": "2019-08-01T17:02:22.814065", "exception": false, "start_time": "2019-08-01T17:02:22.319399", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "use_data = prs # comments\n", "seen_times = use_data.groupby(['org', 'author']).agg({'updatedAt': ['min', 'max']})['updatedAt']" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "papermill": { "duration": 0.038162, "end_time": "2019-08-01T17:02:22.863528", "exception": false, "start_time": "2019-08-01T17:02:22.825366", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "seen_times = seen_times.rename(columns={'min': 'first_seen', 'max': 'last_seen'})\n", "for col in seen_times.columns:\n", " seen_times[col] = pd.to_datetime(seen_times[col], utc=True)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "papermill": { "duration": 0.538181, "end_time": "2019-08-01T17:02:23.413123", "exception": false, "start_time": "2019-08-01T17:02:22.874942", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/choldgraf/anaconda/envs/dev/lib/python3.6/site-packages/ipykernel_launcher.py:9: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", " if __name__ == '__main__':\n" ] }, { "data": { "text/html": [ "\n", " \n", "
\n", " " ], "text/plain": [ "HConcatChart({\n", " hconcat: [Chart({\n", " data: date kind count date_name\n", " 0 2017-10-31 00:00:00+00:00 first_seen 3 2017-10\n", " 1 2017-11-30 00:00:00+00:00 first_seen 2 2017-11\n", " 2 2017-12-31 00:00:00+00:00 first_seen 0 2017-12\n", " 3 2018-01-31 00:00:00+00:00 first_seen 0 2018-01\n", " 4 2018-02-28 00:00:00+00:00 first_seen 1 2018-02\n", " 5 2018-03-31 00:00:00+00:00 first_seen 0 2018-03\n", " 6 2018-04-30 00:00:00+00:00 first_seen 0 2018-04\n", " 7 2018-05-31 00:00:00+00:00 first_seen 0 2018-05\n", " 8 2018-06-30 00:00:00+00:00 first_seen 0 2018-06\n", " 9 2018-07-31 00:00:00+00:00 first_seen 1 2018-07\n", " 10 2018-08-31 00:00:00+00:00 first_seen 2 2018-08\n", " 11 2018-09-30 00:00:00+00:00 first_seen 2 2018-09\n", " 12 2018-10-31 00:00:00+00:00 first_seen 4 2018-10\n", " 13 2018-11-30 00:00:00+00:00 first_seen 2 2018-11\n", " 14 2018-12-31 00:00:00+00:00 first_seen 1 2018-12\n", " 15 2019-01-31 00:00:00+00:00 first_seen 0 2019-01\n", " 16 2019-02-28 00:00:00+00:00 first_seen 2 2019-02\n", " 17 2019-03-31 00:00:00+00:00 first_seen 3 2019-03\n", " 18 2019-04-30 00:00:00+00:00 first_seen 0 2019-04\n", " 19 2019-05-31 00:00:00+00:00 first_seen 4 2019-05\n", " 20 2017-10-31 00:00:00+00:00 seen_recently False 2017-10\n", " 21 2017-11-30 00:00:00+00:00 seen_recently False 2017-11\n", " 22 2017-12-31 00:00:00+00:00 seen_recently False 2017-12\n", " 23 2018-01-31 00:00:00+00:00 seen_recently False 2018-01\n", " 24 2018-02-28 00:00:00+00:00 seen_recently False 2018-02\n", " 25 2018-03-31 00:00:00+00:00 seen_recently False 2018-03\n", " 26 2018-04-30 00:00:00+00:00 seen_recently False 2018-04\n", " 27 2018-05-31 00:00:00+00:00 seen_recently False 2018-05\n", " 28 2018-06-30 00:00:00+00:00 seen_recently False 2018-06\n", " 29 2018-07-31 00:00:00+00:00 seen_recently False 2018-07\n", " 30 2018-08-31 00:00:00+00:00 seen_recently False 2018-08\n", " 31 2018-09-30 00:00:00+00:00 seen_recently True 2018-09\n", " 32 2018-10-31 00:00:00+00:00 seen_recently False 2018-10\n", " 33 2018-11-30 00:00:00+00:00 seen_recently False 2018-11\n", " 34 2018-12-31 00:00:00+00:00 seen_recently False 2018-12\n", " 35 2019-01-31 00:00:00+00:00 seen_recently False 2019-01\n", " 36 2019-02-28 00:00:00+00:00 seen_recently False 2019-02\n", " 37 2019-03-31 00:00:00+00:00 seen_recently False 2019-03\n", " 38 2019-04-30 00:00:00+00:00 seen_recently False 2019-04\n", " 39 2019-05-31 00:00:00+00:00 seen_recently False 2019-05,\n", " encoding: FacetedEncoding({\n", " color: Color({\n", " field: 'kind',\n", " type: 'nominal'\n", " }),\n", " row: Row({\n", " field: 'date_name',\n", " type: 'ordinal'\n", " }),\n", " x: X({\n", " field: 'count',\n", " type: 'quantitative'\n", " }),\n", " y: Y({\n", " field: 'kind',\n", " type: 'nominal'\n", " })\n", " }),\n", " mark: 'bar',\n", " title: 'binder-examples'\n", " }), Chart({\n", " data: date kind count date_name\n", " 0 2015-01-31 00:00:00+00:00 first_seen 27.0 2015-01\n", " 1 2015-02-28 00:00:00+00:00 first_seen 11.0 2015-02\n", " 2 2015-03-31 00:00:00+00:00 first_seen 30.0 2015-03\n", " 3 2015-04-30 00:00:00+00:00 first_seen 6.0 2015-04\n", " 4 2015-05-31 00:00:00+00:00 first_seen 4.0 2015-05\n", " 5 2015-06-30 00:00:00+00:00 first_seen 6.0 2015-06\n", " 6 2015-07-31 00:00:00+00:00 first_seen 9.0 2015-07\n", " 7 2015-08-31 00:00:00+00:00 first_seen 25.0 2015-08\n", " 8 2015-09-30 00:00:00+00:00 first_seen 11.0 2015-09\n", " 9 2015-10-31 00:00:00+00:00 first_seen 15.0 2015-10\n", " 10 2015-11-30 00:00:00+00:00 first_seen 10.0 2015-11\n", " 11 2015-12-31 00:00:00+00:00 first_seen 7.0 2015-12\n", " 12 2016-01-31 00:00:00+00:00 first_seen 8.0 2016-01\n", " 13 2016-02-29 00:00:00+00:00 first_seen 8.0 2016-02\n", " 14 2016-03-31 00:00:00+00:00 first_seen 6.0 2016-03\n", " 15 2016-04-30 00:00:00+00:00 first_seen 11.0 2016-04\n", " 16 2016-05-31 00:00:00+00:00 first_seen 8.0 2016-05\n", " 17 2016-06-30 00:00:00+00:00 first_seen 8.0 2016-06\n", " 18 2016-07-31 00:00:00+00:00 first_seen 6.0 2016-07\n", " 19 2016-08-31 00:00:00+00:00 first_seen 17.0 2016-08\n", " 20 2016-09-30 00:00:00+00:00 first_seen 9.0 2016-09\n", " 21 2016-10-31 00:00:00+00:00 first_seen 8.0 2016-10\n", " 22 2016-11-30 00:00:00+00:00 first_seen 8.0 2016-11\n", " 23 2016-12-31 00:00:00+00:00 first_seen 6.0 2016-12\n", " 24 2017-01-31 00:00:00+00:00 first_seen 6.0 2017-01\n", " 25 2017-02-28 00:00:00+00:00 first_seen 4.0 2017-02\n", " 26 2017-03-31 00:00:00+00:00 first_seen 8.0 2017-03\n", " 27 2017-04-30 00:00:00+00:00 first_seen 5.0 2017-04\n", " 28 2017-05-31 00:00:00+00:00 first_seen 23.0 2017-05\n", " 29 2017-06-30 00:00:00+00:00 first_seen 7.0 2017-06\n", " .. ... ... ... ...\n", " 82 2017-03-31 00:00:00+00:00 seen_recently 0.0 2017-03\n", " 83 2017-04-30 00:00:00+00:00 seen_recently 0.0 2017-04\n", " 84 2017-05-31 00:00:00+00:00 seen_recently 0.0 2017-05\n", " 85 2017-06-30 00:00:00+00:00 seen_recently 1.0 2017-06\n", " 86 2017-07-31 00:00:00+00:00 seen_recently 0.0 2017-07\n", " 87 2017-08-31 00:00:00+00:00 seen_recently 0.0 2017-08\n", " 88 2017-09-30 00:00:00+00:00 seen_recently 0.0 2017-09\n", " 89 2017-10-31 00:00:00+00:00 seen_recently 0.0 2017-10\n", " 90 2017-11-30 00:00:00+00:00 seen_recently 1.0 2017-11\n", " 91 2017-12-31 00:00:00+00:00 seen_recently 0.0 2017-12\n", " 92 2018-01-31 00:00:00+00:00 seen_recently 0.0 2018-01\n", " 93 2018-02-28 00:00:00+00:00 seen_recently 0.0 2018-02\n", " 94 2018-03-31 00:00:00+00:00 seen_recently 0.0 2018-03\n", " 95 2018-04-30 00:00:00+00:00 seen_recently 0.0 2018-04\n", " 96 2018-05-31 00:00:00+00:00 seen_recently 1.0 2018-05\n", " 97 2018-06-30 00:00:00+00:00 seen_recently 1.0 2018-06\n", " 98 2018-07-31 00:00:00+00:00 seen_recently 1.0 2018-07\n", " 99 2018-08-31 00:00:00+00:00 seen_recently 0.0 2018-08\n", " 100 2018-09-30 00:00:00+00:00 seen_recently 0.0 2018-09\n", " 101 2018-10-31 00:00:00+00:00 seen_recently 1.0 2018-10\n", " 102 2018-11-30 00:00:00+00:00 seen_recently 0.0 2018-11\n", " 103 2018-12-31 00:00:00+00:00 seen_recently 0.0 2018-12\n", " 104 2019-01-31 00:00:00+00:00 seen_recently 1.0 2019-01\n", " 105 2019-02-28 00:00:00+00:00 seen_recently 0.0 2019-02\n", " 106 2019-03-31 00:00:00+00:00 seen_recently 0.0 2019-03\n", " 107 2019-04-30 00:00:00+00:00 seen_recently 0.0 2019-04\n", " 108 2019-05-31 00:00:00+00:00 seen_recently 1.0 2019-05\n", " 109 2019-06-30 00:00:00+00:00 seen_recently 1.0 2019-06\n", " 110 2019-07-31 00:00:00+00:00 seen_recently 11.0 2019-07\n", " 111 2019-08-31 00:00:00+00:00 seen_recently 1.0 2019-08\n", " \n", " [112 rows x 4 columns],\n", " encoding: FacetedEncoding({\n", " color: Color({\n", " field: 'kind',\n", " type: 'nominal'\n", " }),\n", " row: Row({\n", " field: 'date_name',\n", " type: 'ordinal'\n", " }),\n", " x: X({\n", " field: 'count',\n", " type: 'quantitative'\n", " }),\n", " y: Y({\n", " field: 'kind',\n", " type: 'nominal'\n", " })\n", " }),\n", " mark: 'bar',\n", " title: 'ipython'\n", " }), Chart({\n", " data: date kind count date_name\n", " 0 2015-01-31 00:00:00+00:00 first_seen 8.0 2015-01\n", " 1 2015-02-28 00:00:00+00:00 first_seen 8.0 2015-02\n", " 2 2015-03-31 00:00:00+00:00 first_seen 2.0 2015-03\n", " 3 2015-04-30 00:00:00+00:00 first_seen 11.0 2015-04\n", " 4 2015-05-31 00:00:00+00:00 first_seen 12.0 2015-05\n", " 5 2015-06-30 00:00:00+00:00 first_seen 9.0 2015-06\n", " 6 2015-07-31 00:00:00+00:00 first_seen 19.0 2015-07\n", " 7 2015-08-31 00:00:00+00:00 first_seen 17.0 2015-08\n", " 8 2015-09-30 00:00:00+00:00 first_seen 22.0 2015-09\n", " 9 2015-10-31 00:00:00+00:00 first_seen 32.0 2015-10\n", " 10 2015-11-30 00:00:00+00:00 first_seen 13.0 2015-11\n", " 11 2015-12-31 00:00:00+00:00 first_seen 26.0 2015-12\n", " 12 2016-01-31 00:00:00+00:00 first_seen 21.0 2016-01\n", " 13 2016-02-29 00:00:00+00:00 first_seen 25.0 2016-02\n", " 14 2016-03-31 00:00:00+00:00 first_seen 15.0 2016-03\n", " 15 2016-04-30 00:00:00+00:00 first_seen 18.0 2016-04\n", " 16 2016-05-31 00:00:00+00:00 first_seen 14.0 2016-05\n", " 17 2016-06-30 00:00:00+00:00 first_seen 15.0 2016-06\n", " 18 2016-07-31 00:00:00+00:00 first_seen 11.0 2016-07\n", " 19 2016-08-31 00:00:00+00:00 first_seen 11.0 2016-08\n", " 20 2016-09-30 00:00:00+00:00 first_seen 17.0 2016-09\n", " 21 2016-10-31 00:00:00+00:00 first_seen 7.0 2016-10\n", " 22 2016-11-30 00:00:00+00:00 first_seen 9.0 2016-11\n", " 23 2016-12-31 00:00:00+00:00 first_seen 24.0 2016-12\n", " 24 2017-01-31 00:00:00+00:00 first_seen 24.0 2017-01\n", " 25 2017-02-28 00:00:00+00:00 first_seen 21.0 2017-02\n", " 26 2017-03-31 00:00:00+00:00 first_seen 14.0 2017-03\n", " 27 2017-04-30 00:00:00+00:00 first_seen 12.0 2017-04\n", " 28 2017-05-31 00:00:00+00:00 first_seen 14.0 2017-05\n", " 29 2017-06-30 00:00:00+00:00 first_seen 14.0 2017-06\n", " .. ... ... ... ...\n", " 80 2017-02-28 00:00:00+00:00 seen_recently 0.0 2017-02\n", " 81 2017-03-31 00:00:00+00:00 seen_recently 0.0 2017-03\n", " 82 2017-04-30 00:00:00+00:00 seen_recently 1.0 2017-04\n", " 83 2017-05-31 00:00:00+00:00 seen_recently 0.0 2017-05\n", " 84 2017-06-30 00:00:00+00:00 seen_recently 0.0 2017-06\n", " 85 2017-07-31 00:00:00+00:00 seen_recently 1.0 2017-07\n", " 86 2017-08-31 00:00:00+00:00 seen_recently 2.0 2017-08\n", " 87 2017-09-30 00:00:00+00:00 seen_recently 1.0 2017-09\n", " 88 2017-10-31 00:00:00+00:00 seen_recently 3.0 2017-10\n", " 89 2017-11-30 00:00:00+00:00 seen_recently 1.0 2017-11\n", " 90 2017-12-31 00:00:00+00:00 seen_recently 0.0 2017-12\n", " 91 2018-01-31 00:00:00+00:00 seen_recently 0.0 2018-01\n", " 92 2018-02-28 00:00:00+00:00 seen_recently 2.0 2018-02\n", " 93 2018-03-31 00:00:00+00:00 seen_recently 2.0 2018-03\n", " 94 2018-04-30 00:00:00+00:00 seen_recently 0.0 2018-04\n", " 95 2018-05-31 00:00:00+00:00 seen_recently 1.0 2018-05\n", " 96 2018-06-30 00:00:00+00:00 seen_recently 0.0 2018-06\n", " 97 2018-07-31 00:00:00+00:00 seen_recently 1.0 2018-07\n", " 98 2018-08-31 00:00:00+00:00 seen_recently 1.0 2018-08\n", " 99 2018-09-30 00:00:00+00:00 seen_recently 0.0 2018-09\n", " 100 2018-10-31 00:00:00+00:00 seen_recently 1.0 2018-10\n", " 101 2018-11-30 00:00:00+00:00 seen_recently 0.0 2018-11\n", " 102 2018-12-31 00:00:00+00:00 seen_recently 1.0 2018-12\n", " 103 2019-01-31 00:00:00+00:00 seen_recently 0.0 2019-01\n", " 104 2019-02-28 00:00:00+00:00 seen_recently 1.0 2019-02\n", " 105 2019-03-31 00:00:00+00:00 seen_recently 1.0 2019-03\n", " 106 2019-04-30 00:00:00+00:00 seen_recently 3.0 2019-04\n", " 107 2019-05-31 00:00:00+00:00 seen_recently 4.0 2019-05\n", " 108 2019-06-30 00:00:00+00:00 seen_recently 6.0 2019-06\n", " 109 2019-07-31 00:00:00+00:00 seen_recently 38.0 2019-07\n", " \n", " [110 rows x 4 columns],\n", " encoding: FacetedEncoding({\n", " color: Color({\n", " field: 'kind',\n", " type: 'nominal'\n", " }),\n", " row: Row({\n", " field: 'date_name',\n", " type: 'ordinal'\n", " }),\n", " x: X({\n", " field: 'count',\n", " type: 'quantitative'\n", " }),\n", " y: Y({\n", " field: 'kind',\n", " type: 'nominal'\n", " })\n", " }),\n", " mark: 'bar',\n", " title: 'jupyter'\n", " }), Chart({\n", " data: date kind count date_name\n", " 0 2015-05-31 00:00:00+00:00 first_seen 4.0 2015-05\n", " 1 2015-06-30 00:00:00+00:00 first_seen 1.0 2015-06\n", " 2 2015-07-31 00:00:00+00:00 first_seen 1.0 2015-07\n", " 3 2015-08-31 00:00:00+00:00 first_seen 4.0 2015-08\n", " 4 2015-09-30 00:00:00+00:00 first_seen 2.0 2015-09\n", " 5 2015-10-31 00:00:00+00:00 first_seen 4.0 2015-10\n", " 6 2015-11-30 00:00:00+00:00 first_seen 1.0 2015-11\n", " 7 2015-12-31 00:00:00+00:00 first_seen 1.0 2015-12\n", " 8 2016-01-31 00:00:00+00:00 first_seen 6.0 2016-01\n", " 9 2016-02-29 00:00:00+00:00 first_seen 1.0 2016-02\n", " 10 2016-03-31 00:00:00+00:00 first_seen 2.0 2016-03\n", " 11 2016-04-30 00:00:00+00:00 first_seen 3.0 2016-04\n", " 12 2016-05-31 00:00:00+00:00 first_seen 2.0 2016-05\n", " 13 2016-06-30 00:00:00+00:00 first_seen 0.0 2016-06\n", " 14 2016-07-31 00:00:00+00:00 first_seen 1.0 2016-07\n", " 15 2016-08-31 00:00:00+00:00 first_seen 0.0 2016-08\n", " 16 2016-09-30 00:00:00+00:00 first_seen 3.0 2016-09\n", " 17 2016-10-31 00:00:00+00:00 first_seen 2.0 2016-10\n", " 18 2016-11-30 00:00:00+00:00 first_seen 0.0 2016-11\n", " 19 2016-12-31 00:00:00+00:00 first_seen 0.0 2016-12\n", " 20 2017-01-31 00:00:00+00:00 first_seen 0.0 2017-01\n", " 21 2017-02-28 00:00:00+00:00 first_seen 12.0 2017-02\n", " 22 2017-03-31 00:00:00+00:00 first_seen 0.0 2017-03\n", " 23 2017-04-30 00:00:00+00:00 first_seen 3.0 2017-04\n", " 24 2017-05-31 00:00:00+00:00 first_seen 4.0 2017-05\n", " 25 2017-06-30 00:00:00+00:00 first_seen 2.0 2017-06\n", " 26 2017-07-31 00:00:00+00:00 first_seen 0.0 2017-07\n", " 27 2017-08-31 00:00:00+00:00 first_seen 5.0 2017-08\n", " 28 2017-09-30 00:00:00+00:00 first_seen 2.0 2017-09\n", " 29 2017-10-31 00:00:00+00:00 first_seen 5.0 2017-10\n", " .. ... ... ... ...\n", " 72 2017-02-28 00:00:00+00:00 seen_recently 3.0 2017-02\n", " 73 2017-03-31 00:00:00+00:00 seen_recently 0.0 2017-03\n", " 74 2017-04-30 00:00:00+00:00 seen_recently 0.0 2017-04\n", " 75 2017-05-31 00:00:00+00:00 seen_recently 0.0 2017-05\n", " 76 2017-06-30 00:00:00+00:00 seen_recently 1.0 2017-06\n", " 77 2017-07-31 00:00:00+00:00 seen_recently 0.0 2017-07\n", " 78 2017-08-31 00:00:00+00:00 seen_recently 0.0 2017-08\n", " 79 2017-09-30 00:00:00+00:00 seen_recently 0.0 2017-09\n", " 80 2017-10-31 00:00:00+00:00 seen_recently 0.0 2017-10\n", " 81 2017-11-30 00:00:00+00:00 seen_recently 0.0 2017-11\n", " 82 2017-12-31 00:00:00+00:00 seen_recently 0.0 2017-12\n", " 83 2018-01-31 00:00:00+00:00 seen_recently 0.0 2018-01\n", " 84 2018-02-28 00:00:00+00:00 seen_recently 1.0 2018-02\n", " 85 2018-03-31 00:00:00+00:00 seen_recently 0.0 2018-03\n", " 86 2018-04-30 00:00:00+00:00 seen_recently 0.0 2018-04\n", " 87 2018-05-31 00:00:00+00:00 seen_recently 0.0 2018-05\n", " 88 2018-06-30 00:00:00+00:00 seen_recently 0.0 2018-06\n", " 89 2018-07-31 00:00:00+00:00 seen_recently 1.0 2018-07\n", " 90 2018-08-31 00:00:00+00:00 seen_recently 0.0 2018-08\n", " 91 2018-09-30 00:00:00+00:00 seen_recently 0.0 2018-09\n", " 92 2018-10-31 00:00:00+00:00 seen_recently 0.0 2018-10\n", " 93 2018-11-30 00:00:00+00:00 seen_recently 1.0 2018-11\n", " 94 2018-12-31 00:00:00+00:00 seen_recently 1.0 2018-12\n", " 95 2019-01-31 00:00:00+00:00 seen_recently 0.0 2019-01\n", " 96 2019-02-28 00:00:00+00:00 seen_recently 0.0 2019-02\n", " 97 2019-03-31 00:00:00+00:00 seen_recently 0.0 2019-03\n", " 98 2019-04-30 00:00:00+00:00 seen_recently 0.0 2019-04\n", " 99 2019-05-31 00:00:00+00:00 seen_recently 0.0 2019-05\n", " 100 2019-06-30 00:00:00+00:00 seen_recently 2.0 2019-06\n", " 101 2019-07-31 00:00:00+00:00 seen_recently 17.0 2019-07\n", " \n", " [102 rows x 4 columns],\n", " encoding: FacetedEncoding({\n", " color: Color({\n", " field: 'kind',\n", " type: 'nominal'\n", " }),\n", " row: Row({\n", " field: 'date_name',\n", " type: 'ordinal'\n", " }),\n", " x: X({\n", " field: 'count',\n", " type: 'quantitative'\n", " }),\n", " y: Y({\n", " field: 'kind',\n", " type: 'nominal'\n", " })\n", " }),\n", " mark: 'bar',\n", " title: 'jupyter-widgets'\n", " }), Chart({\n", " data: date kind count date_name\n", " 0 2016-02-29 00:00:00+00:00 first_seen 1.0 2016-02\n", " 1 2016-03-31 00:00:00+00:00 first_seen 1.0 2016-03\n", " 2 2016-04-30 00:00:00+00:00 first_seen 59.0 2016-04\n", " 3 2016-05-31 00:00:00+00:00 first_seen 4.0 2016-05\n", " 4 2016-06-30 00:00:00+00:00 first_seen 4.0 2016-06\n", " 5 2016-07-31 00:00:00+00:00 first_seen 4.0 2016-07\n", " 6 2016-08-31 00:00:00+00:00 first_seen 5.0 2016-08\n", " 7 2016-09-30 00:00:00+00:00 first_seen 5.0 2016-09\n", " 8 2016-10-31 00:00:00+00:00 first_seen 5.0 2016-10\n", " 9 2016-11-30 00:00:00+00:00 first_seen 16.0 2016-11\n", " 10 2016-12-31 00:00:00+00:00 first_seen 3.0 2016-12\n", " 11 2017-01-31 00:00:00+00:00 first_seen 8.0 2017-01\n", " 12 2017-02-28 00:00:00+00:00 first_seen 3.0 2017-02\n", " 13 2017-03-31 00:00:00+00:00 first_seen 5.0 2017-03\n", " 14 2017-04-30 00:00:00+00:00 first_seen 10.0 2017-04\n", " 15 2017-05-31 00:00:00+00:00 first_seen 13.0 2017-05\n", " 16 2017-06-30 00:00:00+00:00 first_seen 5.0 2017-06\n", " 17 2017-07-31 00:00:00+00:00 first_seen 11.0 2017-07\n", " 18 2017-08-31 00:00:00+00:00 first_seen 27.0 2017-08\n", " 19 2017-09-30 00:00:00+00:00 first_seen 11.0 2017-09\n", " 20 2017-10-31 00:00:00+00:00 first_seen 14.0 2017-10\n", " 21 2017-11-30 00:00:00+00:00 first_seen 19.0 2017-11\n", " 22 2017-12-31 00:00:00+00:00 first_seen 16.0 2017-12\n", " 23 2018-01-31 00:00:00+00:00 first_seen 8.0 2018-01\n", " 24 2018-02-28 00:00:00+00:00 first_seen 13.0 2018-02\n", " 25 2018-03-31 00:00:00+00:00 first_seen 19.0 2018-03\n", " 26 2018-04-30 00:00:00+00:00 first_seen 17.0 2018-04\n", " 27 2018-05-31 00:00:00+00:00 first_seen 17.0 2018-05\n", " 28 2018-06-30 00:00:00+00:00 first_seen 17.0 2018-06\n", " 29 2018-07-31 00:00:00+00:00 first_seen 18.0 2018-07\n", " .. ... ... ... ...\n", " 54 2017-02-28 00:00:00+00:00 seen_recently 0.0 2017-02\n", " 55 2017-03-31 00:00:00+00:00 seen_recently 0.0 2017-03\n", " 56 2017-04-30 00:00:00+00:00 seen_recently 2.0 2017-04\n", " 57 2017-05-31 00:00:00+00:00 seen_recently 1.0 2017-05\n", " 58 2017-06-30 00:00:00+00:00 seen_recently 0.0 2017-06\n", " 59 2017-07-31 00:00:00+00:00 seen_recently 1.0 2017-07\n", " 60 2017-08-31 00:00:00+00:00 seen_recently 0.0 2017-08\n", " 61 2017-09-30 00:00:00+00:00 seen_recently 0.0 2017-09\n", " 62 2017-10-31 00:00:00+00:00 seen_recently 0.0 2017-10\n", " 63 2017-11-30 00:00:00+00:00 seen_recently 0.0 2017-11\n", " 64 2017-12-31 00:00:00+00:00 seen_recently 2.0 2017-12\n", " 65 2018-01-31 00:00:00+00:00 seen_recently 1.0 2018-01\n", " 66 2018-02-28 00:00:00+00:00 seen_recently 2.0 2018-02\n", " 67 2018-03-31 00:00:00+00:00 seen_recently 1.0 2018-03\n", " 68 2018-04-30 00:00:00+00:00 seen_recently 2.0 2018-04\n", " 69 2018-05-31 00:00:00+00:00 seen_recently 0.0 2018-05\n", " 70 2018-06-30 00:00:00+00:00 seen_recently 0.0 2018-06\n", " 71 2018-07-31 00:00:00+00:00 seen_recently 1.0 2018-07\n", " 72 2018-08-31 00:00:00+00:00 seen_recently 2.0 2018-08\n", " 73 2018-09-30 00:00:00+00:00 seen_recently 1.0 2018-09\n", " 74 2018-10-31 00:00:00+00:00 seen_recently 0.0 2018-10\n", " 75 2018-11-30 00:00:00+00:00 seen_recently 1.0 2018-11\n", " 76 2018-12-31 00:00:00+00:00 seen_recently 0.0 2018-12\n", " 77 2019-01-31 00:00:00+00:00 seen_recently 2.0 2019-01\n", " 78 2019-02-28 00:00:00+00:00 seen_recently 1.0 2019-02\n", " 79 2019-03-31 00:00:00+00:00 seen_recently 1.0 2019-03\n", " 80 2019-04-30 00:00:00+00:00 seen_recently 0.0 2019-04\n", " 81 2019-05-31 00:00:00+00:00 seen_recently 2.0 2019-05\n", " 82 2019-06-30 00:00:00+00:00 seen_recently 1.0 2019-06\n", " 83 2019-07-31 00:00:00+00:00 seen_recently 27.0 2019-07\n", " \n", " [84 rows x 4 columns],\n", " encoding: FacetedEncoding({\n", " color: Color({\n", " field: 'kind',\n", " type: 'nominal'\n", " }),\n", " row: Row({\n", " field: 'date_name',\n", " type: 'ordinal'\n", " }),\n", " x: X({\n", " field: 'count',\n", " type: 'quantitative'\n", " }),\n", " y: Y({\n", " field: 'kind',\n", " type: 'nominal'\n", " })\n", " }),\n", " mark: 'bar',\n", " title: 'jupyterhub'\n", " }), Chart({\n", " data: date kind count date_name\n", " 0 2016-06-30 00:00:00+00:00 first_seen 15.0 2016-06\n", " 1 2016-07-31 00:00:00+00:00 first_seen 8.0 2016-07\n", " 2 2016-08-31 00:00:00+00:00 first_seen 6.0 2016-08\n", " 3 2016-09-30 00:00:00+00:00 first_seen 7.0 2016-09\n", " 4 2016-10-31 00:00:00+00:00 first_seen 6.0 2016-10\n", " 5 2016-11-30 00:00:00+00:00 first_seen 5.0 2016-11\n", " 6 2016-12-31 00:00:00+00:00 first_seen 2.0 2016-12\n", " 7 2017-01-31 00:00:00+00:00 first_seen 2.0 2017-01\n", " 8 2017-02-28 00:00:00+00:00 first_seen 4.0 2017-02\n", " 9 2017-03-31 00:00:00+00:00 first_seen 3.0 2017-03\n", " 10 2017-04-30 00:00:00+00:00 first_seen 1.0 2017-04\n", " 11 2017-05-31 00:00:00+00:00 first_seen 11.0 2017-05\n", " 12 2017-06-30 00:00:00+00:00 first_seen 7.0 2017-06\n", " 13 2017-07-31 00:00:00+00:00 first_seen 2.0 2017-07\n", " 14 2017-08-31 00:00:00+00:00 first_seen 12.0 2017-08\n", " 15 2017-09-30 00:00:00+00:00 first_seen 7.0 2017-09\n", " 16 2017-10-31 00:00:00+00:00 first_seen 2.0 2017-10\n", " 17 2017-11-30 00:00:00+00:00 first_seen 3.0 2017-11\n", " 18 2017-12-31 00:00:00+00:00 first_seen 7.0 2017-12\n", " 19 2018-01-31 00:00:00+00:00 first_seen 10.0 2018-01\n", " 20 2018-02-28 00:00:00+00:00 first_seen 15.0 2018-02\n", " 21 2018-03-31 00:00:00+00:00 first_seen 16.0 2018-03\n", " 22 2018-04-30 00:00:00+00:00 first_seen 6.0 2018-04\n", " 23 2018-05-31 00:00:00+00:00 first_seen 5.0 2018-05\n", " 24 2018-06-30 00:00:00+00:00 first_seen 18.0 2018-06\n", " 25 2018-07-31 00:00:00+00:00 first_seen 20.0 2018-07\n", " 26 2018-08-31 00:00:00+00:00 first_seen 12.0 2018-08\n", " 27 2018-09-30 00:00:00+00:00 first_seen 10.0 2018-09\n", " 28 2018-10-31 00:00:00+00:00 first_seen 17.0 2018-10\n", " 29 2018-11-30 00:00:00+00:00 first_seen 11.0 2018-11\n", " .. ... ... ... ...\n", " 48 2017-03-31 00:00:00+00:00 seen_recently 0.0 2017-03\n", " 49 2017-04-30 00:00:00+00:00 seen_recently 0.0 2017-04\n", " 50 2017-05-31 00:00:00+00:00 seen_recently 0.0 2017-05\n", " 51 2017-06-30 00:00:00+00:00 seen_recently 0.0 2017-06\n", " 52 2017-07-31 00:00:00+00:00 seen_recently 0.0 2017-07\n", " 53 2017-08-31 00:00:00+00:00 seen_recently 1.0 2017-08\n", " 54 2017-09-30 00:00:00+00:00 seen_recently 0.0 2017-09\n", " 55 2017-10-31 00:00:00+00:00 seen_recently 1.0 2017-10\n", " 56 2017-11-30 00:00:00+00:00 seen_recently 0.0 2017-11\n", " 57 2017-12-31 00:00:00+00:00 seen_recently 1.0 2017-12\n", " 58 2018-01-31 00:00:00+00:00 seen_recently 0.0 2018-01\n", " 59 2018-02-28 00:00:00+00:00 seen_recently 2.0 2018-02\n", " 60 2018-03-31 00:00:00+00:00 seen_recently 0.0 2018-03\n", " 61 2018-04-30 00:00:00+00:00 seen_recently 2.0 2018-04\n", " 62 2018-05-31 00:00:00+00:00 seen_recently 2.0 2018-05\n", " 63 2018-06-30 00:00:00+00:00 seen_recently 1.0 2018-06\n", " 64 2018-07-31 00:00:00+00:00 seen_recently 1.0 2018-07\n", " 65 2018-08-31 00:00:00+00:00 seen_recently 2.0 2018-08\n", " 66 2018-09-30 00:00:00+00:00 seen_recently 0.0 2018-09\n", " 67 2018-10-31 00:00:00+00:00 seen_recently 1.0 2018-10\n", " 68 2018-11-30 00:00:00+00:00 seen_recently 1.0 2018-11\n", " 69 2018-12-31 00:00:00+00:00 seen_recently 1.0 2018-12\n", " 70 2019-01-31 00:00:00+00:00 seen_recently 1.0 2019-01\n", " 71 2019-02-28 00:00:00+00:00 seen_recently 1.0 2019-02\n", " 72 2019-03-31 00:00:00+00:00 seen_recently 0.0 2019-03\n", " 73 2019-04-30 00:00:00+00:00 seen_recently 3.0 2019-04\n", " 74 2019-05-31 00:00:00+00:00 seen_recently 0.0 2019-05\n", " 75 2019-06-30 00:00:00+00:00 seen_recently 3.0 2019-06\n", " 76 2019-07-31 00:00:00+00:00 seen_recently 22.0 2019-07\n", " 77 2019-08-31 00:00:00+00:00 seen_recently 1.0 2019-08\n", " \n", " [78 rows x 4 columns],\n", " encoding: FacetedEncoding({\n", " color: Color({\n", " field: 'kind',\n", " type: 'nominal'\n", " }),\n", " row: Row({\n", " field: 'date_name',\n", " type: 'ordinal'\n", " }),\n", " x: X({\n", " field: 'count',\n", " type: 'quantitative'\n", " }),\n", " y: Y({\n", " field: 'kind',\n", " type: 'nominal'\n", " })\n", " }),\n", " mark: 'bar',\n", " title: 'jupyterlab'\n", " }), Chart({\n", " data: date kind count date_name\n", " 0 2015-05-31 00:00:00+00:00 first_seen 2.0 2015-05\n", " 1 2015-06-30 00:00:00+00:00 first_seen 3.0 2015-06\n", " 2 2015-07-31 00:00:00+00:00 first_seen 2.0 2015-07\n", " 3 2015-08-31 00:00:00+00:00 first_seen 1.0 2015-08\n", " 4 2015-09-30 00:00:00+00:00 first_seen 3.0 2015-09\n", " 5 2015-10-31 00:00:00+00:00 first_seen 0.0 2015-10\n", " 6 2015-11-30 00:00:00+00:00 first_seen 2.0 2015-11\n", " 7 2015-12-31 00:00:00+00:00 first_seen 1.0 2015-12\n", " 8 2016-01-31 00:00:00+00:00 first_seen 2.0 2016-01\n", " 9 2016-02-29 00:00:00+00:00 first_seen 5.0 2016-02\n", " 10 2016-03-31 00:00:00+00:00 first_seen 6.0 2016-03\n", " 11 2016-04-30 00:00:00+00:00 first_seen 1.0 2016-04\n", " 12 2016-05-31 00:00:00+00:00 first_seen 0.0 2016-05\n", " 13 2016-06-30 00:00:00+00:00 first_seen 3.0 2016-06\n", " 14 2016-07-31 00:00:00+00:00 first_seen 2.0 2016-07\n", " 15 2016-08-31 00:00:00+00:00 first_seen 2.0 2016-08\n", " 16 2016-09-30 00:00:00+00:00 first_seen 2.0 2016-09\n", " 17 2016-10-31 00:00:00+00:00 first_seen 7.0 2016-10\n", " 18 2016-11-30 00:00:00+00:00 first_seen 2.0 2016-11\n", " 19 2016-12-31 00:00:00+00:00 first_seen 2.0 2016-12\n", " 20 2017-01-31 00:00:00+00:00 first_seen 3.0 2017-01\n", " 21 2017-02-28 00:00:00+00:00 first_seen 2.0 2017-02\n", " 22 2017-03-31 00:00:00+00:00 first_seen 3.0 2017-03\n", " 23 2017-04-30 00:00:00+00:00 first_seen 1.0 2017-04\n", " 24 2017-05-31 00:00:00+00:00 first_seen 3.0 2017-05\n", " 25 2017-06-30 00:00:00+00:00 first_seen 5.0 2017-06\n", " 26 2017-07-31 00:00:00+00:00 first_seen 6.0 2017-07\n", " 27 2017-08-31 00:00:00+00:00 first_seen 2.0 2017-08\n", " 28 2017-09-30 00:00:00+00:00 first_seen 8.0 2017-09\n", " 29 2017-10-31 00:00:00+00:00 first_seen 13.0 2017-10\n", " .. ... ... ... ...\n", " 72 2017-02-28 00:00:00+00:00 seen_recently 0.0 2017-02\n", " 73 2017-03-31 00:00:00+00:00 seen_recently 0.0 2017-03\n", " 74 2017-04-30 00:00:00+00:00 seen_recently 0.0 2017-04\n", " 75 2017-05-31 00:00:00+00:00 seen_recently 0.0 2017-05\n", " 76 2017-06-30 00:00:00+00:00 seen_recently 1.0 2017-06\n", " 77 2017-07-31 00:00:00+00:00 seen_recently 0.0 2017-07\n", " 78 2017-08-31 00:00:00+00:00 seen_recently 0.0 2017-08\n", " 79 2017-09-30 00:00:00+00:00 seen_recently 1.0 2017-09\n", " 80 2017-10-31 00:00:00+00:00 seen_recently 1.0 2017-10\n", " 81 2017-11-30 00:00:00+00:00 seen_recently 1.0 2017-11\n", " 82 2017-12-31 00:00:00+00:00 seen_recently 1.0 2017-12\n", " 83 2018-01-31 00:00:00+00:00 seen_recently 0.0 2018-01\n", " 84 2018-02-28 00:00:00+00:00 seen_recently 0.0 2018-02\n", " 85 2018-03-31 00:00:00+00:00 seen_recently 0.0 2018-03\n", " 86 2018-04-30 00:00:00+00:00 seen_recently 2.0 2018-04\n", " 87 2018-05-31 00:00:00+00:00 seen_recently 0.0 2018-05\n", " 88 2018-06-30 00:00:00+00:00 seen_recently 0.0 2018-06\n", " 89 2018-07-31 00:00:00+00:00 seen_recently 0.0 2018-07\n", " 90 2018-08-31 00:00:00+00:00 seen_recently 1.0 2018-08\n", " 91 2018-09-30 00:00:00+00:00 seen_recently 0.0 2018-09\n", " 92 2018-10-31 00:00:00+00:00 seen_recently 0.0 2018-10\n", " 93 2018-11-30 00:00:00+00:00 seen_recently 0.0 2018-11\n", " 94 2018-12-31 00:00:00+00:00 seen_recently 0.0 2018-12\n", " 95 2019-01-31 00:00:00+00:00 seen_recently 0.0 2019-01\n", " 96 2019-02-28 00:00:00+00:00 seen_recently 0.0 2019-02\n", " 97 2019-03-31 00:00:00+00:00 seen_recently 0.0 2019-03\n", " 98 2019-04-30 00:00:00+00:00 seen_recently 2.0 2019-04\n", " 99 2019-05-31 00:00:00+00:00 seen_recently 1.0 2019-05\n", " 100 2019-06-30 00:00:00+00:00 seen_recently 2.0 2019-06\n", " 101 2019-07-31 00:00:00+00:00 seen_recently 8.0 2019-07\n", " \n", " [102 rows x 4 columns],\n", " encoding: FacetedEncoding({\n", " color: Color({\n", " field: 'kind',\n", " type: 'nominal'\n", " }),\n", " row: Row({\n", " field: 'date_name',\n", " type: 'ordinal'\n", " }),\n", " x: X({\n", " field: 'count',\n", " type: 'quantitative'\n", " }),\n", " y: Y({\n", " field: 'kind',\n", " type: 'nominal'\n", " })\n", " }),\n", " mark: 'bar',\n", " title: 'nteract'\n", " })]\n", "})" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# \"recent\" defined as N days in the past\n", "recently = pd.datetime.utcnow() - timedelta(days=30)\n", "recently = pytz.utc.localize(recently)\n", "\n", "charts = []\n", "for org, idata in seen_times.groupby('org'):\n", " idata = idata.loc[org]\n", "\n", " idata['seen_recently'] = idata.eval('last_seen > @recently')\n", "\n", "\n", " first_seen = idata.resample('M', on='first_seen').agg({'first_seen': 'count', 'seen_recently': 'sum'})\n", " first_seen.index.name = 'date'\n", "\n", " first_seen = pd.melt(first_seen.reset_index(), id_vars='date', var_name='kind', value_name='count')\n", "\n", " first_seen['date_name'] = first_seen['date'].map(lambda a: \"{:%Y-%m}\".format(a))\n", "\n", " bar = alt.Chart(first_seen, title=org).mark_bar().encode(\n", " x='count:Q',\n", " y='kind',\n", " color='kind',\n", " row='date_name:O'\n", " )\n", " charts.append(bar)\n", " \n", "alt.hconcat(*charts)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "papermill": { "duration": 0.042887, "end_time": "2019-08-01T17:02:23.479838", "exception": false, "start_time": "2019-08-01T17:02:23.436951", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%html\n", "" ] } ], "metadata": { "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.6.5" }, "papermill": { "duration": 6.46796, "end_time": "2019-08-01T17:02:24.008392", "environment_variables": {}, "exception": null, "input_path": "./stats/retention.ipynb", "output_path": "../reports/summaries/retention.ipynb", "parameters": { "renderer": "kaggle" }, "start_time": "2019-08-01T17:02:17.540432", "version": "1.0.1" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }