Created
December 1, 2017 10:46
-
-
Save fperez/4e2937764f0531e329b20d2d63ff2ac9 to your computer and use it in GitHub Desktop.
Release counts
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": "code", | |
| "execution_count": 1, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "%matplotlib inline\n", | |
| "import matplotlib.pyplot as plt\n", | |
| "import pandas as pd" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| ",org,repo,tag,date\r\n", | |
| "0,Project Jupyter,nbviewer,1.0.1,2017-10-15T03:32:54Z\r\n", | |
| "1,Project Jupyter,nbviewer,1.0.0,2017-10-15T03:27:03Z\r\n", | |
| "2,Project Jupyter,nbgrader,v0.5.4,2017-10-28T10:46:38Z\r\n", | |
| "3,Project Jupyter,nbgrader,v0.5.3,2017-08-24T18:01:51Z\r\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "!head -5 releases-2017.csv" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "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>org</th>\n", | |
| " <th>repo</th>\n", | |
| " <th>tag</th>\n", | |
| " <th>date</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>Project Jupyter</td>\n", | |
| " <td>nbviewer</td>\n", | |
| " <td>1.0.1</td>\n", | |
| " <td>2017-10-15T03:32:54Z</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>Project Jupyter</td>\n", | |
| " <td>nbviewer</td>\n", | |
| " <td>1.0.0</td>\n", | |
| " <td>2017-10-15T03:27:03Z</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>Project Jupyter</td>\n", | |
| " <td>nbgrader</td>\n", | |
| " <td>v0.5.4</td>\n", | |
| " <td>2017-10-28T10:46:38Z</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>Project Jupyter</td>\n", | |
| " <td>nbgrader</td>\n", | |
| " <td>v0.5.3</td>\n", | |
| " <td>2017-08-24T18:01:51Z</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>Project Jupyter</td>\n", | |
| " <td>nbgrader</td>\n", | |
| " <td>v0.5.2</td>\n", | |
| " <td>2017-07-20T18:41:24Z</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " org repo tag date\n", | |
| "0 Project Jupyter nbviewer 1.0.1 2017-10-15T03:32:54Z\n", | |
| "1 Project Jupyter nbviewer 1.0.0 2017-10-15T03:27:03Z\n", | |
| "2 Project Jupyter nbgrader v0.5.4 2017-10-28T10:46:38Z\n", | |
| "3 Project Jupyter nbgrader v0.5.3 2017-08-24T18:01:51Z\n", | |
| "4 Project Jupyter nbgrader v0.5.2 2017-07-20T18:41:24Z" | |
| ] | |
| }, | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "df = pd.read_csv(\"releases-2017.csv\", index_col=0)\n", | |
| "df.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "df['date'] = pd.to_datetime(df['date'])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "cutoff = pd.to_datetime('2016-11-30T23:59:00Z')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "df_report = df[df['date'] > cutoff]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 13, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "t = df_report['tag']\n", | |
| "df_clean = df_report[t.apply(lambda x: '@' not in x)]\n", | |
| "t = df_clean['tag']\n", | |
| "df_clean = df_clean[t.apply(lambda x: 'beta' not in x)]\n", | |
| "t = df_clean['tag']\n", | |
| "df_clean = df_clean[t.apply(lambda x: 'rc' not in x)]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "359" | |
| ] | |
| }, | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "len(df_clean)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 25, | |
| "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></th>\n", | |
| " <th>Releases</th>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>org</th>\n", | |
| " <th>repo</th>\n", | |
| " <th></th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th rowspan=\"7\" valign=\"top\">IPython</th>\n", | |
| " <th>disp</th>\n", | |
| " <td>3</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>ipykernel</th>\n", | |
| " <td>2</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>ipynb</th>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>ipyparallel</th>\n", | |
| " <td>3</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>ipython</th>\n", | |
| " <td>11</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>ipython_genutils</th>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>traitlets</th>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th rowspan=\"2\" valign=\"top\">Jupyter Widgets</th>\n", | |
| " <th>ipywidgets</th>\n", | |
| " <td>42</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyter-sphinx</th>\n", | |
| " <td>5</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th rowspan=\"13\" valign=\"top\">JupyterHub</th>\n", | |
| " <th>configurable-http-proxy</th>\n", | |
| " <td>7</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>dockerspawner</th>\n", | |
| " <td>5</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>helm-chart</th>\n", | |
| " <td>5</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyterhub</th>\n", | |
| " <td>10</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyterlab-hub</th>\n", | |
| " <td>5</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>kubespawner</th>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>nbrsessionproxy</th>\n", | |
| " <td>10</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>nbserverproxy</th>\n", | |
| " <td>4</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>nullauthenticator</th>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>oauthenticator</th>\n", | |
| " <td>5</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>sudospawner</th>\n", | |
| " <td>4</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>tmpauthenticator</th>\n", | |
| " <td>4</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>zero-to-jupyterhub-k8s</th>\n", | |
| " <td>7</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th rowspan=\"7\" valign=\"top\">JupyterLab</th>\n", | |
| " <th>jupyter-renderers</th>\n", | |
| " <td>9</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyterlab</th>\n", | |
| " <td>73</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyterlab-github</th>\n", | |
| " <td>3</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyterlab-google-drive</th>\n", | |
| " <td>13</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyterlab_app</th>\n", | |
| " <td>2</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyterlab_launcher</th>\n", | |
| " <td>26</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyterlab_xkcd</th>\n", | |
| " <td>19</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th rowspan=\"22\" valign=\"top\">Project Jupyter</th>\n", | |
| " <th>atom-notebook</th>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>dashboards</th>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>echo_kernel</th>\n", | |
| " <td>2</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyter-alabaster-theme</th>\n", | |
| " <td>3</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyter-packaging</th>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyter_client</th>\n", | |
| " <td>3</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyter_console</th>\n", | |
| " <td>2</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyter_core</th>\n", | |
| " <td>3</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jupyter_kernel_test</th>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>jvm-repr</th>\n", | |
| " <td>3</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>kernel_gateway</th>\n", | |
| " <td>7</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>nbconvert</th>\n", | |
| " <td>8</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>nbdime</th>\n", | |
| " <td>6</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>nbformat</th>\n", | |
| " <td>3</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>nbgrader</th>\n", | |
| " <td>8</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>nbviewer</th>\n", | |
| " <td>2</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>notebook</th>\n", | |
| " <td>12</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>qtconsole</th>\n", | |
| " <td>2</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>repo2docker</th>\n", | |
| " <td>4</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>sphinxcontrib_github_alt</th>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>terminado</th>\n", | |
| " <td>3</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>testpath</th>\n", | |
| " <td>1</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " Releases\n", | |
| "org repo \n", | |
| "IPython disp 3\n", | |
| " ipykernel 2\n", | |
| " ipynb 1\n", | |
| " ipyparallel 3\n", | |
| " ipython 11\n", | |
| " ipython_genutils 1\n", | |
| " traitlets 1\n", | |
| "Jupyter Widgets ipywidgets 42\n", | |
| " jupyter-sphinx 5\n", | |
| "JupyterHub configurable-http-proxy 7\n", | |
| " dockerspawner 5\n", | |
| " helm-chart 5\n", | |
| " jupyterhub 10\n", | |
| " jupyterlab-hub 5\n", | |
| " kubespawner 1\n", | |
| " nbrsessionproxy 10\n", | |
| " nbserverproxy 4\n", | |
| " nullauthenticator 1\n", | |
| " oauthenticator 5\n", | |
| " sudospawner 4\n", | |
| " tmpauthenticator 4\n", | |
| " zero-to-jupyterhub-k8s 7\n", | |
| "JupyterLab jupyter-renderers 9\n", | |
| " jupyterlab 73\n", | |
| " jupyterlab-github 3\n", | |
| " jupyterlab-google-drive 13\n", | |
| " jupyterlab_app 2\n", | |
| " jupyterlab_launcher 26\n", | |
| " jupyterlab_xkcd 19\n", | |
| "Project Jupyter atom-notebook 1\n", | |
| " dashboards 1\n", | |
| " echo_kernel 2\n", | |
| " jupyter-alabaster-theme 3\n", | |
| " jupyter-packaging 1\n", | |
| " jupyter_client 3\n", | |
| " jupyter_console 2\n", | |
| " jupyter_core 3\n", | |
| " jupyter_kernel_test 1\n", | |
| " jvm-repr 3\n", | |
| " kernel_gateway 7\n", | |
| " nbconvert 8\n", | |
| " nbdime 6\n", | |
| " nbformat 3\n", | |
| " nbgrader 8\n", | |
| " nbviewer 2\n", | |
| " notebook 12\n", | |
| " qtconsole 2\n", | |
| " repo2docker 4\n", | |
| " sphinxcontrib_github_alt 1\n", | |
| " terminado 3\n", | |
| " testpath 1" | |
| ] | |
| }, | |
| "execution_count": 25, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "c = df_clean.drop(['date'], axis=1).groupby(['org','repo']).count()\n", | |
| "c = c.rename({'tag': 'Releases'}, axis='columns')\n", | |
| "c" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 28, | |
| "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>Releases</th>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>org</th>\n", | |
| " <th></th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>IPython</th>\n", | |
| " <td>22</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>Jupyter Widgets</th>\n", | |
| " <td>47</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>JupyterHub</th>\n", | |
| " <td>68</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>JupyterLab</th>\n", | |
| " <td>145</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>Project Jupyter</th>\n", | |
| " <td>77</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " Releases\n", | |
| "org \n", | |
| "IPython 22\n", | |
| "Jupyter Widgets 47\n", | |
| "JupyterHub 68\n", | |
| "JupyterLab 145\n", | |
| "Project Jupyter 77" | |
| ] | |
| }, | |
| "execution_count": 28, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "s = c.groupby('org').sum()\n", | |
| "s" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 29, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "Releases 359\n", | |
| "dtype: int64" | |
| ] | |
| }, | |
| "execution_count": 29, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "s.sum()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "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.3" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment