Skip to content

Instantly share code, notes, and snippets.

@ICBacon
Created August 17, 2015 23:19
Show Gist options
  • Save ICBacon/8c19be2b28370ac07c14 to your computer and use it in GitHub Desktop.
Save ICBacon/8c19be2b28370ac07c14 to your computer and use it in GitHub Desktop.
Using pandas tables to visualize PyPi package data
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Ordering Key Value Objects using Real Data \n",
"\n",
"Use [PyPi releases data for Bokeh](https://pypi.python.org/pypi/bokeh/json) create ordered keys from an unordered JSON object."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
" \n",
" <link rel=\"stylesheet\" href=\"http://cdn.pydata.org/bokeh/release/bokeh-0.9.2.min.css\" type=\"text/css\" />\n",
" <script type=\"text/javascript\" src=\"http://cdn.pydata.org/bokeh/release/bokeh-0.9.2.min.js\"></script>\n",
" <script type=\"text/javascript\">\n",
" Bokeh.set_log_level(\"info\");\n",
" </script>\n",
" <div>\n",
" <a href=\"http://bokeh.pydata.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
" <span>BokehJS successfully loaded.</span>\n",
" </div>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from bokeh.io import output_notebook\n",
"from bokeh.resources import CDN\n",
"from bokeh.models import BoxSelectTool, ColumnDataSource, HoverTool, OpenURL, TapTool\n",
"from bokeh.plotting import figure, output_file, show, gridplot\n",
"from collections import OrderedDict\n",
"from functools import partial\n",
"\n",
"output_notebook(resources=CDN)\n",
"\n",
"import requests\n",
"import numpy as np\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
":0: FutureWarning: IPython widgets are experimental and may change in the future.\n"
]
}
],
"source": [
"import os\n",
"import itertools\n",
"import matplotlib\n",
"from datetime import datetime,date\n",
"from IPython.display import HTML\n",
"from IPython.html import widgets"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"package = 'scipy'"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"response = requests.get(\n",
" url = 'https://pypi.python.org/pypi/%s/json' % package\n",
")\n",
"data = response.json()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> The unordered objects are in their key ``releases``"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"releases = data['releases']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> The releases use [Semantic Versionsing](http://semver.org/)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"24\n"
]
},
{
"data": {
"text/plain": [
"[u'0.15.0',\n",
" u'0.14.1rc1',\n",
" u'0.11.0',\n",
" u'0.10.1',\n",
" u'0.10.0',\n",
" u'0.14.1rc1.dev-52fb336',\n",
" u'0.6.0',\n",
" u'0.7.2',\n",
" u'0.7.0',\n",
" u'0.12.1',\n",
" u'0.12.0',\n",
" u'0.16.0',\n",
" u'0.13.2',\n",
" u'0.4.4',\n",
" u'0.5.2',\n",
" u'0.13.1',\n",
" u'0.9.0',\n",
" u'0.15.1',\n",
" u'0.14.1',\n",
" u'0.14.0',\n",
" u'0.8.0',\n",
" u'0.14.1rc1.dev-205726a',\n",
" u'0.13.3',\n",
" u'0.13.0']"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"version = releases.keys() # Extracting the dictionary keys\n",
"num_releases = len(version)\n",
"\n",
"print(num_releases)\n",
"version"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#version = sorted(version)\n",
"#version"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"> Seeing which versions have multiple releases"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(u'0.15.0', 5)\n",
"(u'0.14.1rc1', 3)\n",
"(u'0.11.0', 3)\n",
"(u'0.10.1', 2)\n",
"(u'0.10.0', 3)\n",
"(u'0.14.1rc1.dev-52fb336', 3)\n",
"(u'0.6.0', 'none')\n",
"(u'0.7.2', 'none')\n",
"(u'0.7.0', 'none')\n",
"(u'0.12.1', 2)\n",
"(u'0.12.0', 3)\n",
"(u'0.16.0', 5)\n",
"(u'0.13.2', 2)\n",
"(u'0.4.4', 'none')\n",
"(u'0.5.2', 'none')\n",
"(u'0.13.1', 2)\n",
"(u'0.9.0', 2)\n",
"(u'0.15.1', 5)\n",
"(u'0.14.1', 5)\n",
"(u'0.14.0', 8)\n",
"(u'0.8.0', 1)\n",
"(u'0.14.1rc1.dev-205726a', 3)\n",
"(u'0.13.3', 5)\n",
"(u'0.13.0', 5)\n"
]
}
],
"source": [
"for i in range(0, num_releases):\n",
" if len(releases[version[i]]) >= 1:\n",
" print(version[i],len(releases[version[i]]))\n",
" else:\n",
" print(version[i],'none')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5\n",
"8\n",
"11\n",
"13\n",
"16\n",
"19\n",
"19\n",
"19\n",
"19\n",
"21\n",
"24\n",
"29\n",
"31\n",
"31\n",
"31\n",
"33\n",
"35\n",
"40\n",
"45\n",
"53\n",
"54\n",
"57\n",
"62\n",
"67\n"
]
},
{
"data": {
"text/plain": [
"(5, 18)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"counter = 0 # counting the number of version formats\n",
"empty = 0 # counting the number of empty version formats\n",
"extra = 0 # counting the number of versions with more than one format\n",
"for i in range (0, num_releases):\n",
" counter += len(releases[version[i]])\n",
" if len(releases[version[i]]) == 0:\n",
" empty += 1\n",
" elif len(releases[version[i]]) > 1:\n",
" extra += 1\n",
" # print(len(releases[version[i]]))\n",
" print(counter)\n",
"empty, extra"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Accessing the information for every format of the PyPi package version\n",
"\n",
" ``access = formatID['itemName']``\n",
" \n",
" ``formatID = releases[versionID][index], where index`` $\\equiv$ ``((Total # of version formats) - 1))``\n",
" \n",
" ``versionID = version[idx], where idx`` $\\equiv$ ``((Total # of versions) - 1))``"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Extracting the number of downloads per version format from the JSON data and appending them to a list"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"72\n"
]
}
],
"source": [
"num_downloads = []\n",
"for i in range(0, num_releases):\n",
" #if isinstance( version[i], list ):\n",
" if (len(releases[version[i]]) == 0):\n",
" num_downloads.append(0)\n",
" else:\n",
" for j in range(0, len(releases[version[i]])):\n",
" num_downloads.append(releases[version[i]][j]['downloads']) \n",
" #else:\n",
" # print( version[i] )\n",
"\n",
"#print(num_downloads)\n",
"print(len(num_downloads))"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"### Extracting the release date per version format from the JSON data and appending them to a list"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"72\n"
]
}
],
"source": [
"upload_at = []\n",
"for i in range(0, num_releases):\n",
" if (len(releases[version[i]]) == 0):\n",
" upload_at.append('N/A')\n",
" else:\n",
" for j in range(0, len(releases[version[i]])):\n",
" datetime_object = datetime.strptime(releases[version[i]][j]['upload_time'], '%Y-%m-%dT%H:%M:%S')\n",
" upload_at.append(datetime_object.date())\n",
"\n",
"print(len(upload_at))\n",
"#upload_at"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Extracting the version formats from the JSON data and appending them to a list"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"72\n"
]
}
],
"source": [
"file_ext = []\n",
"for i in range(0, num_releases):\n",
" if (len(releases[version[i]]) == 0):\n",
" file_ext.append(None)\n",
" else:\n",
" for j in range(0, len(releases[version[i]])):\n",
" file_name, extension = (os.path.splitext(releases[version[i]][j]['filename']))\n",
" if (extension != '.gz'):\n",
" file_ext.append(extension)\n",
" else:\n",
" file_name1, extension1 = (os.path.splitext(file_name))\n",
" file_ext.append(extension1)\n",
" \n",
"#print(file_ext)\n",
"print(len(file_ext))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> Iterating over two lists in parallel to combine the lists of release dates and number of downloads per version format into a list of tuples"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"list1 = []\n",
"for f,b in itertools.izip(upload_at, num_downloads):\n",
" list1.append((f,b))\n",
"#list1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> Iterating over two lists in parallel to combine the list of version formats with the previous list of tuples"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"list2 = []\n",
"for f,b in itertools.izip(file_ext, list1):\n",
" list2.append((f,b))\n",
"#list2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> Creating a new list that will take into account versions that have multiple releases"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"v = []\n",
"for i in range(num_releases):\n",
" if (len(releases[version[i]]) >= 1):\n",
" l = list(itertools.repeat(version[i], len(releases[version[i]])))\n",
" v.append(l)\n",
" else:\n",
" v.append([version[i]])\n",
"\n",
"#v"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"merged = list(itertools.chain(*v))\n",
"#merged"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> Creating a final list that associates each version release with its release date, number of downloads, and archive format "
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"list3 = []\n",
"for f,b in itertools.izip(merged, list2):\n",
" list3.append((f,b))\n",
"#list3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Extracting the version number for every release of the PyPi package "
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def extract_version_number( version_string ):\n",
" \"\"\"\n",
" Remove the leading number part of an alphanumeric string that begins with a number\n",
" \"\"\"\n",
" version_number = ''\n",
" for character in version_string:\n",
" if character.isdigit():\n",
" version_number += character\n",
" else:\n",
" break\n",
" return int( version_number )"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"versions = []\n",
"for version in merged:\n",
" try:\n",
" major, minor, patch = version.split('.',2)\n",
" except:\n",
" patch = '0'\n",
" major, minor = version.split('.',1)\n",
" versions.append({\n",
" 'major': extract_version_number(major),\n",
" 'minor': extract_version_number(minor),\n",
" 'patch': extract_version_number(patch),\n",
" 'key': version\n",
" })"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> Create a pandas DataFrame"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>key</th>\n",
" <th>major</th>\n",
" <th>minor</th>\n",
" <th>patch</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>0.10.1</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>0.10.1</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.6.0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.7.2</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>0.7.0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0.12.1</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0.12.1</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>0.14.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>0.14.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>0.14.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>0.14.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>0.14.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>0.14.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>0.14.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>0.14.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>0.8.0</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>0.13.3</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>0.13.3</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>0.13.3</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>65</th>\n",
" <td>0.13.3</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>0.13.3</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>72 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
" key major minor patch\n",
"0 0.15.0 0 15 0\n",
"1 0.15.0 0 15 0\n",
"2 0.15.0 0 15 0\n",
"3 0.15.0 0 15 0\n",
"4 0.15.0 0 15 0\n",
"5 0.14.1rc1 0 14 1\n",
"6 0.14.1rc1 0 14 1\n",
"7 0.14.1rc1 0 14 1\n",
"8 0.11.0 0 11 0\n",
"9 0.11.0 0 11 0\n",
"10 0.11.0 0 11 0\n",
"11 0.10.1 0 10 1\n",
"12 0.10.1 0 10 1\n",
"13 0.10.0 0 10 0\n",
"14 0.10.0 0 10 0\n",
"15 0.10.0 0 10 0\n",
"16 0.14.1rc1.dev-52fb336 0 14 1\n",
"17 0.14.1rc1.dev-52fb336 0 14 1\n",
"18 0.14.1rc1.dev-52fb336 0 14 1\n",
"19 0.6.0 0 6 0\n",
"20 0.7.2 0 7 2\n",
"21 0.7.0 0 7 0\n",
"22 0.12.1 0 12 1\n",
"23 0.12.1 0 12 1\n",
"24 0.12.0 0 12 0\n",
"25 0.12.0 0 12 0\n",
"26 0.12.0 0 12 0\n",
"27 0.16.0 0 16 0\n",
"28 0.16.0 0 16 0\n",
"29 0.16.0 0 16 0\n",
".. ... ... ... ...\n",
"42 0.15.1 0 15 1\n",
"43 0.15.1 0 15 1\n",
"44 0.15.1 0 15 1\n",
"45 0.14.1 0 14 1\n",
"46 0.14.1 0 14 1\n",
"47 0.14.1 0 14 1\n",
"48 0.14.1 0 14 1\n",
"49 0.14.1 0 14 1\n",
"50 0.14.0 0 14 0\n",
"51 0.14.0 0 14 0\n",
"52 0.14.0 0 14 0\n",
"53 0.14.0 0 14 0\n",
"54 0.14.0 0 14 0\n",
"55 0.14.0 0 14 0\n",
"56 0.14.0 0 14 0\n",
"57 0.14.0 0 14 0\n",
"58 0.8.0 0 8 0\n",
"59 0.14.1rc1.dev-205726a 0 14 1\n",
"60 0.14.1rc1.dev-205726a 0 14 1\n",
"61 0.14.1rc1.dev-205726a 0 14 1\n",
"62 0.13.3 0 13 3\n",
"63 0.13.3 0 13 3\n",
"64 0.13.3 0 13 3\n",
"65 0.13.3 0 13 3\n",
"66 0.13.3 0 13 3\n",
"67 0.13.0 0 13 0\n",
"68 0.13.0 0 13 0\n",
"69 0.13.0 0 13 0\n",
"70 0.13.0 0 13 0\n",
"71 0.13.0 0 13 0\n",
"\n",
"[72 rows x 4 columns]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(versions)\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> Sort the DataFrame based on version"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>key</th>\n",
" <th>major</th>\n",
" <th>minor</th>\n",
" <th>patch</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>0.4.4</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>0.5.2</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.6.0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>0.7.0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.7.2</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>0.8.0</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>0.9.0</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>0.9.0</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>0.10.1</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>0.10.1</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0.12.1</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0.12.1</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>0.13.1</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>0.13.1</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>0.13.2</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>0.13.2</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>0.14.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>72 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
" key major minor patch\n",
"34 0.4.4 0 4 4\n",
"35 0.5.2 0 5 2\n",
"19 0.6.0 0 6 0\n",
"21 0.7.0 0 7 0\n",
"20 0.7.2 0 7 2\n",
"58 0.8.0 0 8 0\n",
"38 0.9.0 0 9 0\n",
"39 0.9.0 0 9 0\n",
"13 0.10.0 0 10 0\n",
"14 0.10.0 0 10 0\n",
"15 0.10.0 0 10 0\n",
"11 0.10.1 0 10 1\n",
"12 0.10.1 0 10 1\n",
"8 0.11.0 0 11 0\n",
"9 0.11.0 0 11 0\n",
"10 0.11.0 0 11 0\n",
"24 0.12.0 0 12 0\n",
"25 0.12.0 0 12 0\n",
"26 0.12.0 0 12 0\n",
"22 0.12.1 0 12 1\n",
"23 0.12.1 0 12 1\n",
"67 0.13.0 0 13 0\n",
"68 0.13.0 0 13 0\n",
"69 0.13.0 0 13 0\n",
"70 0.13.0 0 13 0\n",
"71 0.13.0 0 13 0\n",
"36 0.13.1 0 13 1\n",
"37 0.13.1 0 13 1\n",
"32 0.13.2 0 13 2\n",
"33 0.13.2 0 13 2\n",
".. ... ... ... ...\n",
"57 0.14.0 0 14 0\n",
"5 0.14.1rc1 0 14 1\n",
"6 0.14.1rc1 0 14 1\n",
"7 0.14.1rc1 0 14 1\n",
"16 0.14.1rc1.dev-52fb336 0 14 1\n",
"17 0.14.1rc1.dev-52fb336 0 14 1\n",
"18 0.14.1rc1.dev-52fb336 0 14 1\n",
"45 0.14.1 0 14 1\n",
"46 0.14.1 0 14 1\n",
"47 0.14.1 0 14 1\n",
"48 0.14.1 0 14 1\n",
"49 0.14.1 0 14 1\n",
"59 0.14.1rc1.dev-205726a 0 14 1\n",
"60 0.14.1rc1.dev-205726a 0 14 1\n",
"61 0.14.1rc1.dev-205726a 0 14 1\n",
"0 0.15.0 0 15 0\n",
"1 0.15.0 0 15 0\n",
"2 0.15.0 0 15 0\n",
"3 0.15.0 0 15 0\n",
"4 0.15.0 0 15 0\n",
"40 0.15.1 0 15 1\n",
"41 0.15.1 0 15 1\n",
"42 0.15.1 0 15 1\n",
"43 0.15.1 0 15 1\n",
"44 0.15.1 0 15 1\n",
"27 0.16.0 0 16 0\n",
"28 0.16.0 0 16 0\n",
"29 0.16.0 0 16 0\n",
"30 0.16.0 0 16 0\n",
"31 0.16.0 0 16 0\n",
"\n",
"[72 rows x 4 columns]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.sort([ 'major','minor','patch'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> Number of releases per version"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(34, '0.4.4 of scipy has 0 release(s)')\n",
"(35, '0.5.2 of scipy has 0 release(s)')\n",
"(19, '0.6.0 of scipy has 0 release(s)')\n",
"(21, '0.7.0 of scipy has 0 release(s)')\n",
"(20, '0.7.2 of scipy has 0 release(s)')\n",
"(58, '0.8.0 of scipy has 1 release(s)')\n",
"(38, '0.9.0 of scipy has 2 release(s)')\n",
"(39, '0.9.0 of scipy has 2 release(s)')\n",
"(13, '0.10.0 of scipy has 3 release(s)')\n",
"(14, '0.10.0 of scipy has 3 release(s)')\n",
"(15, '0.10.0 of scipy has 3 release(s)')\n",
"(11, '0.10.1 of scipy has 2 release(s)')\n",
"(12, '0.10.1 of scipy has 2 release(s)')\n",
"(8, '0.11.0 of scipy has 3 release(s)')\n",
"(9, '0.11.0 of scipy has 3 release(s)')\n",
"(10, '0.11.0 of scipy has 3 release(s)')\n",
"(24, '0.12.0 of scipy has 3 release(s)')\n",
"(25, '0.12.0 of scipy has 3 release(s)')\n",
"(26, '0.12.0 of scipy has 3 release(s)')\n",
"(22, '0.12.1 of scipy has 2 release(s)')\n",
"(23, '0.12.1 of scipy has 2 release(s)')\n",
"(67, '0.13.0 of scipy has 5 release(s)')\n",
"(68, '0.13.0 of scipy has 5 release(s)')\n",
"(69, '0.13.0 of scipy has 5 release(s)')\n",
"(70, '0.13.0 of scipy has 5 release(s)')\n",
"(71, '0.13.0 of scipy has 5 release(s)')\n",
"(36, '0.13.1 of scipy has 2 release(s)')\n",
"(37, '0.13.1 of scipy has 2 release(s)')\n",
"(32, '0.13.2 of scipy has 2 release(s)')\n",
"(33, '0.13.2 of scipy has 2 release(s)')\n",
"(62, '0.13.3 of scipy has 5 release(s)')\n",
"(63, '0.13.3 of scipy has 5 release(s)')\n",
"(64, '0.13.3 of scipy has 5 release(s)')\n",
"(65, '0.13.3 of scipy has 5 release(s)')\n",
"(66, '0.13.3 of scipy has 5 release(s)')\n",
"(50, '0.14.0 of scipy has 8 release(s)')\n",
"(51, '0.14.0 of scipy has 8 release(s)')\n",
"(52, '0.14.0 of scipy has 8 release(s)')\n",
"(53, '0.14.0 of scipy has 8 release(s)')\n",
"(54, '0.14.0 of scipy has 8 release(s)')\n",
"(55, '0.14.0 of scipy has 8 release(s)')\n",
"(56, '0.14.0 of scipy has 8 release(s)')\n",
"(57, '0.14.0 of scipy has 8 release(s)')\n",
"(5, '0.14.1rc1 of scipy has 3 release(s)')\n",
"(6, '0.14.1rc1 of scipy has 3 release(s)')\n",
"(7, '0.14.1rc1 of scipy has 3 release(s)')\n",
"(16, '0.14.1rc1.dev-52fb336 of scipy has 3 release(s)')\n",
"(17, '0.14.1rc1.dev-52fb336 of scipy has 3 release(s)')\n",
"(18, '0.14.1rc1.dev-52fb336 of scipy has 3 release(s)')\n",
"(45, '0.14.1 of scipy has 5 release(s)')\n",
"(46, '0.14.1 of scipy has 5 release(s)')\n",
"(47, '0.14.1 of scipy has 5 release(s)')\n",
"(48, '0.14.1 of scipy has 5 release(s)')\n",
"(49, '0.14.1 of scipy has 5 release(s)')\n",
"(59, '0.14.1rc1.dev-205726a of scipy has 3 release(s)')\n",
"(60, '0.14.1rc1.dev-205726a of scipy has 3 release(s)')\n",
"(61, '0.14.1rc1.dev-205726a of scipy has 3 release(s)')\n",
"(0, '0.15.0 of scipy has 5 release(s)')\n",
"(1, '0.15.0 of scipy has 5 release(s)')\n",
"(2, '0.15.0 of scipy has 5 release(s)')\n",
"(3, '0.15.0 of scipy has 5 release(s)')\n",
"(4, '0.15.0 of scipy has 5 release(s)')\n",
"(40, '0.15.1 of scipy has 5 release(s)')\n",
"(41, '0.15.1 of scipy has 5 release(s)')\n",
"(42, '0.15.1 of scipy has 5 release(s)')\n",
"(43, '0.15.1 of scipy has 5 release(s)')\n",
"(44, '0.15.1 of scipy has 5 release(s)')\n",
"(27, '0.16.0 of scipy has 5 release(s)')\n",
"(28, '0.16.0 of scipy has 5 release(s)')\n",
"(29, '0.16.0 of scipy has 5 release(s)')\n",
"(30, '0.16.0 of scipy has 5 release(s)')\n",
"(31, '0.16.0 of scipy has 5 release(s)')\n"
]
}
],
"source": [
"df['number_of_releases'] = None\n",
"for index,sortedVersion in df.sort(['major','minor','patch']).iterrows():\n",
" print(index,\n",
" '{version} of {package} has {numRelease} release(s)'.format(\n",
" version = sortedVersion['key'],\n",
" package = package,\n",
" numRelease = len(releases[sortedVersion['key']])\n",
" )\n",
" )\n",
" df.loc[index,'number_of_releases' ] = len(releases[sortedVersion['key']])"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>key</th>\n",
" <th>major</th>\n",
" <th>minor</th>\n",
" <th>patch</th>\n",
" <th>number_of_releases</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>0.4.4</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>0.5.2</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.6.0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>0.7.0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.7.2</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>0.8.0</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>0.9.0</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>0.9.0</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>0.10.1</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>0.10.1</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0.12.1</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0.12.1</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>0.13.1</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>0.13.1</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>0.13.2</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>0.13.2</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>0.14.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>72 rows × 5 columns</p>\n",
"</div>"
],
"text/plain": [
" key major minor patch number_of_releases\n",
"34 0.4.4 0 4 4 0\n",
"35 0.5.2 0 5 2 0\n",
"19 0.6.0 0 6 0 0\n",
"21 0.7.0 0 7 0 0\n",
"20 0.7.2 0 7 2 0\n",
"58 0.8.0 0 8 0 1\n",
"38 0.9.0 0 9 0 2\n",
"39 0.9.0 0 9 0 2\n",
"13 0.10.0 0 10 0 3\n",
"14 0.10.0 0 10 0 3\n",
"15 0.10.0 0 10 0 3\n",
"11 0.10.1 0 10 1 2\n",
"12 0.10.1 0 10 1 2\n",
"8 0.11.0 0 11 0 3\n",
"9 0.11.0 0 11 0 3\n",
"10 0.11.0 0 11 0 3\n",
"24 0.12.0 0 12 0 3\n",
"25 0.12.0 0 12 0 3\n",
"26 0.12.0 0 12 0 3\n",
"22 0.12.1 0 12 1 2\n",
"23 0.12.1 0 12 1 2\n",
"67 0.13.0 0 13 0 5\n",
"68 0.13.0 0 13 0 5\n",
"69 0.13.0 0 13 0 5\n",
"70 0.13.0 0 13 0 5\n",
"71 0.13.0 0 13 0 5\n",
"36 0.13.1 0 13 1 2\n",
"37 0.13.1 0 13 1 2\n",
"32 0.13.2 0 13 2 2\n",
"33 0.13.2 0 13 2 2\n",
".. ... ... ... ... ...\n",
"57 0.14.0 0 14 0 8\n",
"5 0.14.1rc1 0 14 1 3\n",
"6 0.14.1rc1 0 14 1 3\n",
"7 0.14.1rc1 0 14 1 3\n",
"16 0.14.1rc1.dev-52fb336 0 14 1 3\n",
"17 0.14.1rc1.dev-52fb336 0 14 1 3\n",
"18 0.14.1rc1.dev-52fb336 0 14 1 3\n",
"45 0.14.1 0 14 1 5\n",
"46 0.14.1 0 14 1 5\n",
"47 0.14.1 0 14 1 5\n",
"48 0.14.1 0 14 1 5\n",
"49 0.14.1 0 14 1 5\n",
"59 0.14.1rc1.dev-205726a 0 14 1 3\n",
"60 0.14.1rc1.dev-205726a 0 14 1 3\n",
"61 0.14.1rc1.dev-205726a 0 14 1 3\n",
"0 0.15.0 0 15 0 5\n",
"1 0.15.0 0 15 0 5\n",
"2 0.15.0 0 15 0 5\n",
"3 0.15.0 0 15 0 5\n",
"4 0.15.0 0 15 0 5\n",
"40 0.15.1 0 15 1 5\n",
"41 0.15.1 0 15 1 5\n",
"42 0.15.1 0 15 1 5\n",
"43 0.15.1 0 15 1 5\n",
"44 0.15.1 0 15 1 5\n",
"27 0.16.0 0 16 0 5\n",
"28 0.16.0 0 16 0 5\n",
"29 0.16.0 0 16 0 5\n",
"30 0.16.0 0 16 0 5\n",
"31 0.16.0 0 16 0 5\n",
"\n",
"[72 rows x 5 columns]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.sort( ['major','minor','patch'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> Type of release per version"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(34, '0.4.4 of scipy released a None format')\n",
"(35, '0.5.2 of scipy released a None format')\n",
"(19, '0.6.0 of scipy released a None format')\n",
"(21, '0.7.0 of scipy released a None format')\n",
"(20, '0.7.2 of scipy released a None format')\n",
"(58, '0.8.0 of scipy released a .tar format')\n",
"(38, '0.9.0 of scipy released a .tar format')\n",
"(39, '0.9.0 of scipy released a .zip format')\n",
"(13, '0.10.0 of scipy released a .whl format')\n",
"(14, '0.10.0 of scipy released a .tar format')\n",
"(15, '0.10.0 of scipy released a .zip format')\n",
"(11, '0.10.1 of scipy released a .tar format')\n",
"(12, '0.10.1 of scipy released a .zip format')\n",
"(8, '0.11.0 of scipy released a .whl format')\n",
"(9, '0.11.0 of scipy released a .tar format')\n",
"(10, '0.11.0 of scipy released a .zip format')\n",
"(24, '0.12.0 of scipy released a .whl format')\n",
"(25, '0.12.0 of scipy released a .tar format')\n",
"(26, '0.12.0 of scipy released a .zip format')\n",
"(22, '0.12.1 of scipy released a .tar format')\n",
"(23, '0.12.1 of scipy released a .zip format')\n",
"(67, '0.13.0 of scipy released a .whl format')\n",
"(68, '0.13.0 of scipy released a .whl format')\n",
"(69, '0.13.0 of scipy released a .whl format')\n",
"(70, '0.13.0 of scipy released a .tar format')\n",
"(71, '0.13.0 of scipy released a .zip format')\n",
"(36, '0.13.1 of scipy released a .tar format')\n",
"(37, '0.13.1 of scipy released a .zip format')\n",
"(32, '0.13.2 of scipy released a .tar format')\n",
"(33, '0.13.2 of scipy released a .zip format')\n",
"(62, '0.13.3 of scipy released a .whl format')\n",
"(63, '0.13.3 of scipy released a .whl format')\n",
"(64, '0.13.3 of scipy released a .whl format')\n",
"(65, '0.13.3 of scipy released a .tar format')\n",
"(66, '0.13.3 of scipy released a .zip format')\n",
"(50, '0.14.0 of scipy released a .whl format')\n",
"(51, '0.14.0 of scipy released a .whl format')\n",
"(52, '0.14.0 of scipy released a .whl format')\n",
"(53, '0.14.0 of scipy released a .whl format')\n",
"(54, '0.14.0 of scipy released a .whl format')\n",
"(55, '0.14.0 of scipy released a .whl format')\n",
"(56, '0.14.0 of scipy released a .tar format')\n",
"(57, '0.14.0 of scipy released a .zip format')\n",
"(5, '0.14.1rc1 of scipy released a .whl format')\n",
"(6, '0.14.1rc1 of scipy released a .whl format')\n",
"(7, '0.14.1rc1 of scipy released a .whl format')\n",
"(16, '0.14.1rc1.dev-52fb336 of scipy released a .whl format')\n",
"(17, '0.14.1rc1.dev-52fb336 of scipy released a .whl format')\n",
"(18, '0.14.1rc1.dev-52fb336 of scipy released a .whl format')\n",
"(45, '0.14.1 of scipy released a .whl format')\n",
"(46, '0.14.1 of scipy released a .whl format')\n",
"(47, '0.14.1 of scipy released a .whl format')\n",
"(48, '0.14.1 of scipy released a .tar format')\n",
"(49, '0.14.1 of scipy released a .zip format')\n",
"(59, '0.14.1rc1.dev-205726a of scipy released a .whl format')\n",
"(60, '0.14.1rc1.dev-205726a of scipy released a .whl format')\n",
"(61, '0.14.1rc1.dev-205726a of scipy released a .whl format')\n",
"(0, '0.15.0 of scipy released a .whl format')\n",
"(1, '0.15.0 of scipy released a .whl format')\n",
"(2, '0.15.0 of scipy released a .whl format')\n",
"(3, '0.15.0 of scipy released a .tar format')\n",
"(4, '0.15.0 of scipy released a .zip format')\n",
"(40, '0.15.1 of scipy released a .whl format')\n",
"(41, '0.15.1 of scipy released a .whl format')\n",
"(42, '0.15.1 of scipy released a .whl format')\n",
"(43, '0.15.1 of scipy released a .tar format')\n",
"(44, '0.15.1 of scipy released a .zip format')\n",
"(27, '0.16.0 of scipy released a .whl format')\n",
"(28, '0.16.0 of scipy released a .whl format')\n",
"(29, '0.16.0 of scipy released a .whl format')\n",
"(30, '0.16.0 of scipy released a .tar format')\n",
"(31, '0.16.0 of scipy released a .zip format')\n"
]
}
],
"source": [
"df['type_of_release'] = None\n",
"for index,sortedVersion in df.sort(['major','minor','patch']).iterrows():\n",
" print(index,\n",
" '{version} of {package} released a {releaseType} format'.format(\n",
" version = sortedVersion['key'],\n",
" package = package,\n",
" releaseType = file_ext[index]\n",
" )\n",
" )\n",
" df.loc[index,'type_of_release' ] = file_ext[index]"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>key</th>\n",
" <th>major</th>\n",
" <th>minor</th>\n",
" <th>patch</th>\n",
" <th>number_of_releases</th>\n",
" <th>type_of_release</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>0.4.4</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>0.5.2</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.6.0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>0.7.0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.7.2</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>0.8.0</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>0.9.0</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>0.9.0</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>0.10.1</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>0.10.1</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0.12.1</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0.12.1</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>0.13.1</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>0.13.1</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>0.13.2</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>0.13.2</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>0.14.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>72 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" key major minor patch number_of_releases \\\n",
"34 0.4.4 0 4 4 0 \n",
"35 0.5.2 0 5 2 0 \n",
"19 0.6.0 0 6 0 0 \n",
"21 0.7.0 0 7 0 0 \n",
"20 0.7.2 0 7 2 0 \n",
"58 0.8.0 0 8 0 1 \n",
"38 0.9.0 0 9 0 2 \n",
"39 0.9.0 0 9 0 2 \n",
"13 0.10.0 0 10 0 3 \n",
"14 0.10.0 0 10 0 3 \n",
"15 0.10.0 0 10 0 3 \n",
"11 0.10.1 0 10 1 2 \n",
"12 0.10.1 0 10 1 2 \n",
"8 0.11.0 0 11 0 3 \n",
"9 0.11.0 0 11 0 3 \n",
"10 0.11.0 0 11 0 3 \n",
"24 0.12.0 0 12 0 3 \n",
"25 0.12.0 0 12 0 3 \n",
"26 0.12.0 0 12 0 3 \n",
"22 0.12.1 0 12 1 2 \n",
"23 0.12.1 0 12 1 2 \n",
"67 0.13.0 0 13 0 5 \n",
"68 0.13.0 0 13 0 5 \n",
"69 0.13.0 0 13 0 5 \n",
"70 0.13.0 0 13 0 5 \n",
"71 0.13.0 0 13 0 5 \n",
"36 0.13.1 0 13 1 2 \n",
"37 0.13.1 0 13 1 2 \n",
"32 0.13.2 0 13 2 2 \n",
"33 0.13.2 0 13 2 2 \n",
".. ... ... ... ... ... \n",
"57 0.14.0 0 14 0 8 \n",
"5 0.14.1rc1 0 14 1 3 \n",
"6 0.14.1rc1 0 14 1 3 \n",
"7 0.14.1rc1 0 14 1 3 \n",
"16 0.14.1rc1.dev-52fb336 0 14 1 3 \n",
"17 0.14.1rc1.dev-52fb336 0 14 1 3 \n",
"18 0.14.1rc1.dev-52fb336 0 14 1 3 \n",
"45 0.14.1 0 14 1 5 \n",
"46 0.14.1 0 14 1 5 \n",
"47 0.14.1 0 14 1 5 \n",
"48 0.14.1 0 14 1 5 \n",
"49 0.14.1 0 14 1 5 \n",
"59 0.14.1rc1.dev-205726a 0 14 1 3 \n",
"60 0.14.1rc1.dev-205726a 0 14 1 3 \n",
"61 0.14.1rc1.dev-205726a 0 14 1 3 \n",
"0 0.15.0 0 15 0 5 \n",
"1 0.15.0 0 15 0 5 \n",
"2 0.15.0 0 15 0 5 \n",
"3 0.15.0 0 15 0 5 \n",
"4 0.15.0 0 15 0 5 \n",
"40 0.15.1 0 15 1 5 \n",
"41 0.15.1 0 15 1 5 \n",
"42 0.15.1 0 15 1 5 \n",
"43 0.15.1 0 15 1 5 \n",
"44 0.15.1 0 15 1 5 \n",
"27 0.16.0 0 16 0 5 \n",
"28 0.16.0 0 16 0 5 \n",
"29 0.16.0 0 16 0 5 \n",
"30 0.16.0 0 16 0 5 \n",
"31 0.16.0 0 16 0 5 \n",
"\n",
" type_of_release \n",
"34 None \n",
"35 None \n",
"19 None \n",
"21 None \n",
"20 None \n",
"58 .tar \n",
"38 .tar \n",
"39 .zip \n",
"13 .whl \n",
"14 .tar \n",
"15 .zip \n",
"11 .tar \n",
"12 .zip \n",
"8 .whl \n",
"9 .tar \n",
"10 .zip \n",
"24 .whl \n",
"25 .tar \n",
"26 .zip \n",
"22 .tar \n",
"23 .zip \n",
"67 .whl \n",
"68 .whl \n",
"69 .whl \n",
"70 .tar \n",
"71 .zip \n",
"36 .tar \n",
"37 .zip \n",
"32 .tar \n",
"33 .zip \n",
".. ... \n",
"57 .zip \n",
"5 .whl \n",
"6 .whl \n",
"7 .whl \n",
"16 .whl \n",
"17 .whl \n",
"18 .whl \n",
"45 .whl \n",
"46 .whl \n",
"47 .whl \n",
"48 .tar \n",
"49 .zip \n",
"59 .whl \n",
"60 .whl \n",
"61 .whl \n",
"0 .whl \n",
"1 .whl \n",
"2 .whl \n",
"3 .tar \n",
"4 .zip \n",
"40 .whl \n",
"41 .whl \n",
"42 .whl \n",
"43 .tar \n",
"44 .zip \n",
"27 .whl \n",
"28 .whl \n",
"29 .whl \n",
"30 .tar \n",
"31 .zip \n",
"\n",
"[72 rows x 6 columns]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.sort( ['major','minor','patch'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> Time of release per version format"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(34, '0.4.4 of scipy was released on N/A')\n",
"(35, '0.5.2 of scipy was released on N/A')\n",
"(19, '0.6.0 of scipy was released on N/A')\n",
"(21, '0.7.0 of scipy was released on N/A')\n",
"(20, '0.7.2 of scipy was released on N/A')\n",
"(58, '0.8.0 of scipy was released on 2010-07-27')\n",
"(38, '0.9.0 of scipy was released on 2011-02-28')\n",
"(39, '0.9.0 of scipy was released on 2011-02-28')\n",
"(13, '0.10.0 of scipy was released on 2014-07-31')\n",
"(14, '0.10.0 of scipy was released on 2011-11-13')\n",
"(15, '0.10.0 of scipy was released on 2011-11-13')\n",
"(11, '0.10.1 of scipy was released on 2012-02-28')\n",
"(12, '0.10.1 of scipy was released on 2012-02-28')\n",
"(8, '0.11.0 of scipy was released on 2014-07-31')\n",
"(9, '0.11.0 of scipy was released on 2012-09-29')\n",
"(10, '0.11.0 of scipy was released on 2012-09-29')\n",
"(24, '0.12.0 of scipy was released on 2014-07-31')\n",
"(25, '0.12.0 of scipy was released on 2013-04-09')\n",
"(26, '0.12.0 of scipy was released on 2013-04-09')\n",
"(22, '0.12.1 of scipy was released on 2013-10-12')\n",
"(23, '0.12.1 of scipy was released on 2013-10-12')\n",
"(67, '0.13.0 of scipy was released on 2014-07-31')\n",
"(68, '0.13.0 of scipy was released on 2014-07-31')\n",
"(69, '0.13.0 of scipy was released on 2014-07-31')\n",
"(70, '0.13.0 of scipy was released on 2013-10-19')\n",
"(71, '0.13.0 of scipy was released on 2013-10-19')\n",
"(36, '0.13.1 of scipy was released on 2013-11-17')\n",
"(37, '0.13.1 of scipy was released on 2013-11-17')\n",
"(32, '0.13.2 of scipy was released on 2013-12-08')\n",
"(33, '0.13.2 of scipy was released on 2013-12-08')\n",
"(62, '0.13.3 of scipy was released on 2014-04-29')\n",
"(63, '0.13.3 of scipy was released on 2014-04-29')\n",
"(64, '0.13.3 of scipy was released on 2014-04-29')\n",
"(65, '0.13.3 of scipy was released on 2014-02-04')\n",
"(66, '0.13.3 of scipy was released on 2014-02-04')\n",
"(50, '0.14.0 of scipy was released on 2014-11-03')\n",
"(51, '0.14.0 of scipy was released on 2014-06-28')\n",
"(52, '0.14.0 of scipy was released on 2014-11-03')\n",
"(53, '0.14.0 of scipy was released on 2014-06-28')\n",
"(54, '0.14.0 of scipy was released on 2014-11-03')\n",
"(55, '0.14.0 of scipy was released on 2014-06-28')\n",
"(56, '0.14.0 of scipy was released on 2014-05-03')\n",
"(57, '0.14.0 of scipy was released on 2014-05-03')\n",
"(5, '0.14.1rc1 of scipy was released on 2014-12-30')\n",
"(6, '0.14.1rc1 of scipy was released on 2014-12-30')\n",
"(7, '0.14.1rc1 of scipy was released on 2014-12-30')\n",
"(16, '0.14.1rc1.dev-52fb336 of scipy was released on 2014-12-30')\n",
"(17, '0.14.1rc1.dev-52fb336 of scipy was released on 2014-12-30')\n",
"(18, '0.14.1rc1.dev-52fb336 of scipy was released on 2014-12-30')\n",
"(45, '0.14.1 of scipy was released on 2014-12-30')\n",
"(46, '0.14.1 of scipy was released on 2014-12-30')\n",
"(47, '0.14.1 of scipy was released on 2014-12-30')\n",
"(48, '0.14.1 of scipy was released on 2014-12-30')\n",
"(49, '0.14.1 of scipy was released on 2014-12-30')\n",
"(59, '0.14.1rc1.dev-205726a of scipy was released on 2014-12-30')\n",
"(60, '0.14.1rc1.dev-205726a of scipy was released on 2014-12-30')\n",
"(61, '0.14.1rc1.dev-205726a of scipy was released on 2014-12-30')\n",
"(0, '0.15.0 of scipy was released on 2015-01-11')\n",
"(1, '0.15.0 of scipy was released on 2015-01-11')\n",
"(2, '0.15.0 of scipy was released on 2015-01-11')\n",
"(3, '0.15.0 of scipy was released on 2015-01-11')\n",
"(4, '0.15.0 of scipy was released on 2015-01-11')\n",
"(40, '0.15.1 of scipy was released on 2015-01-18')\n",
"(41, '0.15.1 of scipy was released on 2015-01-18')\n",
"(42, '0.15.1 of scipy was released on 2015-01-18')\n",
"(43, '0.15.1 of scipy was released on 2015-01-18')\n",
"(44, '0.15.1 of scipy was released on 2015-01-18')\n",
"(27, '0.16.0 of scipy was released on 2015-07-24')\n",
"(28, '0.16.0 of scipy was released on 2015-07-24')\n",
"(29, '0.16.0 of scipy was released on 2015-07-24')\n",
"(30, '0.16.0 of scipy was released on 2015-07-24')\n",
"(31, '0.16.0 of scipy was released on 2015-07-24')\n"
]
}
],
"source": [
"df['uploaded_on'] = None\n",
"for index,sortedVersion in df.sort(['major','minor','patch']).iterrows():\n",
" print(index,\n",
" '{version} of {package} was released on {uploadTime}'.format(\n",
" version = sortedVersion['key'],\n",
" package = package,\n",
" uploadTime = upload_at[index]\n",
" )\n",
" )\n",
" df.loc[index,'uploaded_on' ] = upload_at[index]"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>key</th>\n",
" <th>major</th>\n",
" <th>minor</th>\n",
" <th>patch</th>\n",
" <th>number_of_releases</th>\n",
" <th>type_of_release</th>\n",
" <th>uploaded_on</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>0.4.4</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>N/A</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>0.5.2</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>N/A</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.6.0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>N/A</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>0.7.0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>N/A</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.7.2</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>N/A</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>0.8.0</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>.tar</td>\n",
" <td>2010-07-27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>0.9.0</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" <td>2011-02-28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>0.9.0</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" <td>2011-02-28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-07-31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.tar</td>\n",
" <td>2011-11-13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.zip</td>\n",
" <td>2011-11-13</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>0.10.1</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" <td>2012-02-28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>0.10.1</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" <td>2012-02-28</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-07-31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.tar</td>\n",
" <td>2012-09-29</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.zip</td>\n",
" <td>2012-09-29</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-07-31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.tar</td>\n",
" <td>2013-04-09</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.zip</td>\n",
" <td>2013-04-09</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0.12.1</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" <td>2013-10-12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0.12.1</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" <td>2013-10-12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2014-07-31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2014-07-31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2014-07-31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" <td>2013-10-19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" <td>2013-10-19</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>0.13.1</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" <td>2013-11-17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>0.13.1</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" <td>2013-11-17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>0.13.2</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" <td>2013-12-08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>0.13.2</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" <td>2013-12-08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>0.14.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" <td>.zip</td>\n",
" <td>2014-05-03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-01-11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-01-11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-01-11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" <td>2015-01-11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" <td>2015-01-11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-01-18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-01-18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-01-18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" <td>2015-01-18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" <td>2015-01-18</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-07-24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-07-24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-07-24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" <td>2015-07-24</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" <td>2015-07-24</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>72 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" key major minor patch number_of_releases \\\n",
"34 0.4.4 0 4 4 0 \n",
"35 0.5.2 0 5 2 0 \n",
"19 0.6.0 0 6 0 0 \n",
"21 0.7.0 0 7 0 0 \n",
"20 0.7.2 0 7 2 0 \n",
"58 0.8.0 0 8 0 1 \n",
"38 0.9.0 0 9 0 2 \n",
"39 0.9.0 0 9 0 2 \n",
"13 0.10.0 0 10 0 3 \n",
"14 0.10.0 0 10 0 3 \n",
"15 0.10.0 0 10 0 3 \n",
"11 0.10.1 0 10 1 2 \n",
"12 0.10.1 0 10 1 2 \n",
"8 0.11.0 0 11 0 3 \n",
"9 0.11.0 0 11 0 3 \n",
"10 0.11.0 0 11 0 3 \n",
"24 0.12.0 0 12 0 3 \n",
"25 0.12.0 0 12 0 3 \n",
"26 0.12.0 0 12 0 3 \n",
"22 0.12.1 0 12 1 2 \n",
"23 0.12.1 0 12 1 2 \n",
"67 0.13.0 0 13 0 5 \n",
"68 0.13.0 0 13 0 5 \n",
"69 0.13.0 0 13 0 5 \n",
"70 0.13.0 0 13 0 5 \n",
"71 0.13.0 0 13 0 5 \n",
"36 0.13.1 0 13 1 2 \n",
"37 0.13.1 0 13 1 2 \n",
"32 0.13.2 0 13 2 2 \n",
"33 0.13.2 0 13 2 2 \n",
".. ... ... ... ... ... \n",
"57 0.14.0 0 14 0 8 \n",
"5 0.14.1rc1 0 14 1 3 \n",
"6 0.14.1rc1 0 14 1 3 \n",
"7 0.14.1rc1 0 14 1 3 \n",
"16 0.14.1rc1.dev-52fb336 0 14 1 3 \n",
"17 0.14.1rc1.dev-52fb336 0 14 1 3 \n",
"18 0.14.1rc1.dev-52fb336 0 14 1 3 \n",
"45 0.14.1 0 14 1 5 \n",
"46 0.14.1 0 14 1 5 \n",
"47 0.14.1 0 14 1 5 \n",
"48 0.14.1 0 14 1 5 \n",
"49 0.14.1 0 14 1 5 \n",
"59 0.14.1rc1.dev-205726a 0 14 1 3 \n",
"60 0.14.1rc1.dev-205726a 0 14 1 3 \n",
"61 0.14.1rc1.dev-205726a 0 14 1 3 \n",
"0 0.15.0 0 15 0 5 \n",
"1 0.15.0 0 15 0 5 \n",
"2 0.15.0 0 15 0 5 \n",
"3 0.15.0 0 15 0 5 \n",
"4 0.15.0 0 15 0 5 \n",
"40 0.15.1 0 15 1 5 \n",
"41 0.15.1 0 15 1 5 \n",
"42 0.15.1 0 15 1 5 \n",
"43 0.15.1 0 15 1 5 \n",
"44 0.15.1 0 15 1 5 \n",
"27 0.16.0 0 16 0 5 \n",
"28 0.16.0 0 16 0 5 \n",
"29 0.16.0 0 16 0 5 \n",
"30 0.16.0 0 16 0 5 \n",
"31 0.16.0 0 16 0 5 \n",
"\n",
" type_of_release uploaded_on \n",
"34 None N/A \n",
"35 None N/A \n",
"19 None N/A \n",
"21 None N/A \n",
"20 None N/A \n",
"58 .tar 2010-07-27 \n",
"38 .tar 2011-02-28 \n",
"39 .zip 2011-02-28 \n",
"13 .whl 2014-07-31 \n",
"14 .tar 2011-11-13 \n",
"15 .zip 2011-11-13 \n",
"11 .tar 2012-02-28 \n",
"12 .zip 2012-02-28 \n",
"8 .whl 2014-07-31 \n",
"9 .tar 2012-09-29 \n",
"10 .zip 2012-09-29 \n",
"24 .whl 2014-07-31 \n",
"25 .tar 2013-04-09 \n",
"26 .zip 2013-04-09 \n",
"22 .tar 2013-10-12 \n",
"23 .zip 2013-10-12 \n",
"67 .whl 2014-07-31 \n",
"68 .whl 2014-07-31 \n",
"69 .whl 2014-07-31 \n",
"70 .tar 2013-10-19 \n",
"71 .zip 2013-10-19 \n",
"36 .tar 2013-11-17 \n",
"37 .zip 2013-11-17 \n",
"32 .tar 2013-12-08 \n",
"33 .zip 2013-12-08 \n",
".. ... ... \n",
"57 .zip 2014-05-03 \n",
"5 .whl 2014-12-30 \n",
"6 .whl 2014-12-30 \n",
"7 .whl 2014-12-30 \n",
"16 .whl 2014-12-30 \n",
"17 .whl 2014-12-30 \n",
"18 .whl 2014-12-30 \n",
"45 .whl 2014-12-30 \n",
"46 .whl 2014-12-30 \n",
"47 .whl 2014-12-30 \n",
"48 .tar 2014-12-30 \n",
"49 .zip 2014-12-30 \n",
"59 .whl 2014-12-30 \n",
"60 .whl 2014-12-30 \n",
"61 .whl 2014-12-30 \n",
"0 .whl 2015-01-11 \n",
"1 .whl 2015-01-11 \n",
"2 .whl 2015-01-11 \n",
"3 .tar 2015-01-11 \n",
"4 .zip 2015-01-11 \n",
"40 .whl 2015-01-18 \n",
"41 .whl 2015-01-18 \n",
"42 .whl 2015-01-18 \n",
"43 .tar 2015-01-18 \n",
"44 .zip 2015-01-18 \n",
"27 .whl 2015-07-24 \n",
"28 .whl 2015-07-24 \n",
"29 .whl 2015-07-24 \n",
"30 .tar 2015-07-24 \n",
"31 .zip 2015-07-24 \n",
"\n",
"[72 rows x 7 columns]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.sort( ['major','minor','patch'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> Number of downloads per version format"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(34, '0.4.4 of scipy has 0 downloads')\n",
"(35, '0.5.2 of scipy has 0 downloads')\n",
"(19, '0.6.0 of scipy has 0 downloads')\n",
"(21, '0.7.0 of scipy has 0 downloads')\n",
"(20, '0.7.2 of scipy has 0 downloads')\n",
"(58, '0.8.0 of scipy has 56945 downloads')\n",
"(38, '0.9.0 of scipy has 13242 downloads')\n",
"(39, '0.9.0 of scipy has 32703 downloads')\n",
"(13, '0.10.0 of scipy has 968 downloads')\n",
"(14, '0.10.0 of scipy has 13114 downloads')\n",
"(15, '0.10.0 of scipy has 17207 downloads')\n",
"(11, '0.10.1 of scipy has 33823 downloads')\n",
"(12, '0.10.1 of scipy has 63332 downloads')\n",
"(8, '0.11.0 of scipy has 1431 downloads')\n",
"(9, '0.11.0 of scipy has 320750 downloads')\n",
"(10, '0.11.0 of scipy has 94598 downloads')\n",
"(24, '0.12.0 of scipy has 5554 downloads')\n",
"(25, '0.12.0 of scipy has 93602 downloads')\n",
"(26, '0.12.0 of scipy has 113455 downloads')\n",
"(22, '0.12.1 of scipy has 10513 downloads')\n",
"(23, '0.12.1 of scipy has 3246 downloads')\n",
"(67, '0.13.0 of scipy has 1159 downloads')\n",
"(68, '0.13.0 of scipy has 946 downloads')\n",
"(69, '0.13.0 of scipy has 959 downloads')\n",
"(70, '0.13.0 of scipy has 48604 downloads')\n",
"(71, '0.13.0 of scipy has 8386 downloads')\n",
"(36, '0.13.1 of scipy has 26768 downloads')\n",
"(37, '0.13.1 of scipy has 5852 downloads')\n",
"(32, '0.13.2 of scipy has 74236 downloads')\n",
"(33, '0.13.2 of scipy has 64609 downloads')\n",
"(62, '0.13.3 of scipy has 1767 downloads')\n",
"(63, '0.13.3 of scipy has 1215 downloads')\n",
"(64, '0.13.3 of scipy has 1297 downloads')\n",
"(65, '0.13.3 of scipy has 157426 downloads')\n",
"(66, '0.13.3 of scipy has 25931 downloads')\n",
"(50, '0.14.0 of scipy has 18014 downloads')\n",
"(51, '0.14.0 of scipy has 27740 downloads')\n",
"(52, '0.14.0 of scipy has 992 downloads')\n",
"(53, '0.14.0 of scipy has 1773 downloads')\n",
"(54, '0.14.0 of scipy has 3556 downloads')\n",
"(55, '0.14.0 of scipy has 6158 downloads')\n",
"(56, '0.14.0 of scipy has 536728 downloads')\n",
"(57, '0.14.0 of scipy has 68592 downloads')\n",
"(5, '0.14.1rc1 of scipy has 664 downloads')\n",
"(6, '0.14.1rc1 of scipy has 662 downloads')\n",
"(7, '0.14.1rc1 of scipy has 665 downloads')\n",
"(16, '0.14.1rc1.dev-52fb336 of scipy has 823 downloads')\n",
"(17, '0.14.1rc1.dev-52fb336 of scipy has 687 downloads')\n",
"(18, '0.14.1rc1.dev-52fb336 of scipy has 753 downloads')\n",
"(45, '0.14.1 of scipy has 4681 downloads')\n",
"(46, '0.14.1 of scipy has 743 downloads')\n",
"(47, '0.14.1 of scipy has 1419 downloads')\n",
"(48, '0.14.1 of scipy has 41891 downloads')\n",
"(49, '0.14.1 of scipy has 13304 downloads')\n",
"(59, '0.14.1rc1.dev-205726a of scipy has 656 downloads')\n",
"(60, '0.14.1rc1.dev-205726a of scipy has 648 downloads')\n",
"(61, '0.14.1rc1.dev-205726a of scipy has 649 downloads')\n",
"(0, '0.15.0 of scipy has 3645 downloads')\n",
"(1, '0.15.0 of scipy has 733 downloads')\n",
"(2, '0.15.0 of scipy has 1146 downloads')\n",
"(3, '0.15.0 of scipy has 39965 downloads')\n",
"(4, '0.15.0 of scipy has 4435 downloads')\n",
"(40, '0.15.1 of scipy has 70390 downloads')\n",
"(41, '0.15.1 of scipy has 5422 downloads')\n",
"(42, '0.15.1 of scipy has 19935 downloads')\n",
"(43, '0.15.1 of scipy has 506741 downloads')\n",
"(44, '0.15.1 of scipy has 67128 downloads')\n",
"(27, '0.16.0 of scipy has 15238 downloads')\n",
"(28, '0.16.0 of scipy has 340 downloads')\n",
"(29, '0.16.0 of scipy has 7977 downloads')\n",
"(30, '0.16.0 of scipy has 81593 downloads')\n",
"(31, '0.16.0 of scipy has 20372 downloads')\n"
]
}
],
"source": [
"df['number_of_downloads'] = None\n",
"for index,sortedVersion in df.sort(['major','minor','patch']).iterrows():\n",
" print(index,\n",
" '{version} of {package} has {numDownloads} downloads'.format(\n",
" version = sortedVersion['key'],\n",
" package = package,\n",
" numDownloads = num_downloads[index]\n",
" )\n",
" )\n",
" df.loc[index,'number_of_downloads' ] = num_downloads[index]"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>key</th>\n",
" <th>major</th>\n",
" <th>minor</th>\n",
" <th>patch</th>\n",
" <th>number_of_releases</th>\n",
" <th>type_of_release</th>\n",
" <th>uploaded_on</th>\n",
" <th>number_of_downloads</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>0.4.4</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>N/A</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>0.5.2</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>N/A</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>0.6.0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>N/A</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>0.7.0</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>N/A</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>0.7.2</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>None</td>\n",
" <td>N/A</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>0.8.0</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>.tar</td>\n",
" <td>2010-07-27</td>\n",
" <td>56945</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>0.9.0</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" <td>2011-02-28</td>\n",
" <td>13242</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>0.9.0</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" <td>2011-02-28</td>\n",
" <td>32703</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-07-31</td>\n",
" <td>968</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.tar</td>\n",
" <td>2011-11-13</td>\n",
" <td>13114</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>0.10.0</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.zip</td>\n",
" <td>2011-11-13</td>\n",
" <td>17207</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>0.10.1</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" <td>2012-02-28</td>\n",
" <td>33823</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>0.10.1</td>\n",
" <td>0</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" <td>2012-02-28</td>\n",
" <td>63332</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-07-31</td>\n",
" <td>1431</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.tar</td>\n",
" <td>2012-09-29</td>\n",
" <td>320750</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>0.11.0</td>\n",
" <td>0</td>\n",
" <td>11</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.zip</td>\n",
" <td>2012-09-29</td>\n",
" <td>94598</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-07-31</td>\n",
" <td>5554</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.tar</td>\n",
" <td>2013-04-09</td>\n",
" <td>93602</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>0.12.0</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>.zip</td>\n",
" <td>2013-04-09</td>\n",
" <td>113455</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>0.12.1</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" <td>2013-10-12</td>\n",
" <td>10513</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>0.12.1</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" <td>2013-10-12</td>\n",
" <td>3246</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2014-07-31</td>\n",
" <td>1159</td>\n",
" </tr>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2014-07-31</td>\n",
" <td>946</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2014-07-31</td>\n",
" <td>959</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" <td>2013-10-19</td>\n",
" <td>48604</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>0.13.0</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" <td>2013-10-19</td>\n",
" <td>8386</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>0.13.1</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" <td>2013-11-17</td>\n",
" <td>26768</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>0.13.1</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" <td>2013-11-17</td>\n",
" <td>5852</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>0.13.2</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>.tar</td>\n",
" <td>2013-12-08</td>\n",
" <td>74236</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>0.13.2</td>\n",
" <td>0</td>\n",
" <td>13</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>.zip</td>\n",
" <td>2013-12-08</td>\n",
" <td>64609</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>0.14.0</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>0</td>\n",
" <td>8</td>\n",
" <td>.zip</td>\n",
" <td>2014-05-03</td>\n",
" <td>68592</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" <td>664</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" <td>662</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.14.1rc1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" <td>665</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" <td>823</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" <td>687</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>0.14.1rc1.dev-52fb336</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" <td>753</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" <td>4681</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" <td>743</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" <td>1419</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" <td>2014-12-30</td>\n",
" <td>41891</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>0.14.1</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" <td>2014-12-30</td>\n",
" <td>13304</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" <td>656</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" <td>648</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>0.14.1rc1.dev-205726a</td>\n",
" <td>0</td>\n",
" <td>14</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>.whl</td>\n",
" <td>2014-12-30</td>\n",
" <td>649</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-01-11</td>\n",
" <td>3645</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-01-11</td>\n",
" <td>733</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-01-11</td>\n",
" <td>1146</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" <td>2015-01-11</td>\n",
" <td>39965</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.15.0</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" <td>2015-01-11</td>\n",
" <td>4435</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-01-18</td>\n",
" <td>70390</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-01-18</td>\n",
" <td>5422</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-01-18</td>\n",
" <td>19935</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" <td>2015-01-18</td>\n",
" <td>506741</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>0.15.1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" <td>2015-01-18</td>\n",
" <td>67128</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-07-24</td>\n",
" <td>15238</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-07-24</td>\n",
" <td>340</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.whl</td>\n",
" <td>2015-07-24</td>\n",
" <td>7977</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.tar</td>\n",
" <td>2015-07-24</td>\n",
" <td>81593</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>0.16.0</td>\n",
" <td>0</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>.zip</td>\n",
" <td>2015-07-24</td>\n",
" <td>20372</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>72 rows × 8 columns</p>\n",
"</div>"
],
"text/plain": [
" key major minor patch number_of_releases \\\n",
"34 0.4.4 0 4 4 0 \n",
"35 0.5.2 0 5 2 0 \n",
"19 0.6.0 0 6 0 0 \n",
"21 0.7.0 0 7 0 0 \n",
"20 0.7.2 0 7 2 0 \n",
"58 0.8.0 0 8 0 1 \n",
"38 0.9.0 0 9 0 2 \n",
"39 0.9.0 0 9 0 2 \n",
"13 0.10.0 0 10 0 3 \n",
"14 0.10.0 0 10 0 3 \n",
"15 0.10.0 0 10 0 3 \n",
"11 0.10.1 0 10 1 2 \n",
"12 0.10.1 0 10 1 2 \n",
"8 0.11.0 0 11 0 3 \n",
"9 0.11.0 0 11 0 3 \n",
"10 0.11.0 0 11 0 3 \n",
"24 0.12.0 0 12 0 3 \n",
"25 0.12.0 0 12 0 3 \n",
"26 0.12.0 0 12 0 3 \n",
"22 0.12.1 0 12 1 2 \n",
"23 0.12.1 0 12 1 2 \n",
"67 0.13.0 0 13 0 5 \n",
"68 0.13.0 0 13 0 5 \n",
"69 0.13.0 0 13 0 5 \n",
"70 0.13.0 0 13 0 5 \n",
"71 0.13.0 0 13 0 5 \n",
"36 0.13.1 0 13 1 2 \n",
"37 0.13.1 0 13 1 2 \n",
"32 0.13.2 0 13 2 2 \n",
"33 0.13.2 0 13 2 2 \n",
".. ... ... ... ... ... \n",
"57 0.14.0 0 14 0 8 \n",
"5 0.14.1rc1 0 14 1 3 \n",
"6 0.14.1rc1 0 14 1 3 \n",
"7 0.14.1rc1 0 14 1 3 \n",
"16 0.14.1rc1.dev-52fb336 0 14 1 3 \n",
"17 0.14.1rc1.dev-52fb336 0 14 1 3 \n",
"18 0.14.1rc1.dev-52fb336 0 14 1 3 \n",
"45 0.14.1 0 14 1 5 \n",
"46 0.14.1 0 14 1 5 \n",
"47 0.14.1 0 14 1 5 \n",
"48 0.14.1 0 14 1 5 \n",
"49 0.14.1 0 14 1 5 \n",
"59 0.14.1rc1.dev-205726a 0 14 1 3 \n",
"60 0.14.1rc1.dev-205726a 0 14 1 3 \n",
"61 0.14.1rc1.dev-205726a 0 14 1 3 \n",
"0 0.15.0 0 15 0 5 \n",
"1 0.15.0 0 15 0 5 \n",
"2 0.15.0 0 15 0 5 \n",
"3 0.15.0 0 15 0 5 \n",
"4 0.15.0 0 15 0 5 \n",
"40 0.15.1 0 15 1 5 \n",
"41 0.15.1 0 15 1 5 \n",
"42 0.15.1 0 15 1 5 \n",
"43 0.15.1 0 15 1 5 \n",
"44 0.15.1 0 15 1 5 \n",
"27 0.16.0 0 16 0 5 \n",
"28 0.16.0 0 16 0 5 \n",
"29 0.16.0 0 16 0 5 \n",
"30 0.16.0 0 16 0 5 \n",
"31 0.16.0 0 16 0 5 \n",
"\n",
" type_of_release uploaded_on number_of_downloads \n",
"34 None N/A 0 \n",
"35 None N/A 0 \n",
"19 None N/A 0 \n",
"21 None N/A 0 \n",
"20 None N/A 0 \n",
"58 .tar 2010-07-27 56945 \n",
"38 .tar 2011-02-28 13242 \n",
"39 .zip 2011-02-28 32703 \n",
"13 .whl 2014-07-31 968 \n",
"14 .tar 2011-11-13 13114 \n",
"15 .zip 2011-11-13 17207 \n",
"11 .tar 2012-02-28 33823 \n",
"12 .zip 2012-02-28 63332 \n",
"8 .whl 2014-07-31 1431 \n",
"9 .tar 2012-09-29 320750 \n",
"10 .zip 2012-09-29 94598 \n",
"24 .whl 2014-07-31 5554 \n",
"25 .tar 2013-04-09 93602 \n",
"26 .zip 2013-04-09 113455 \n",
"22 .tar 2013-10-12 10513 \n",
"23 .zip 2013-10-12 3246 \n",
"67 .whl 2014-07-31 1159 \n",
"68 .whl 2014-07-31 946 \n",
"69 .whl 2014-07-31 959 \n",
"70 .tar 2013-10-19 48604 \n",
"71 .zip 2013-10-19 8386 \n",
"36 .tar 2013-11-17 26768 \n",
"37 .zip 2013-11-17 5852 \n",
"32 .tar 2013-12-08 74236 \n",
"33 .zip 2013-12-08 64609 \n",
".. ... ... ... \n",
"57 .zip 2014-05-03 68592 \n",
"5 .whl 2014-12-30 664 \n",
"6 .whl 2014-12-30 662 \n",
"7 .whl 2014-12-30 665 \n",
"16 .whl 2014-12-30 823 \n",
"17 .whl 2014-12-30 687 \n",
"18 .whl 2014-12-30 753 \n",
"45 .whl 2014-12-30 4681 \n",
"46 .whl 2014-12-30 743 \n",
"47 .whl 2014-12-30 1419 \n",
"48 .tar 2014-12-30 41891 \n",
"49 .zip 2014-12-30 13304 \n",
"59 .whl 2014-12-30 656 \n",
"60 .whl 2014-12-30 648 \n",
"61 .whl 2014-12-30 649 \n",
"0 .whl 2015-01-11 3645 \n",
"1 .whl 2015-01-11 733 \n",
"2 .whl 2015-01-11 1146 \n",
"3 .tar 2015-01-11 39965 \n",
"4 .zip 2015-01-11 4435 \n",
"40 .whl 2015-01-18 70390 \n",
"41 .whl 2015-01-18 5422 \n",
"42 .whl 2015-01-18 19935 \n",
"43 .tar 2015-01-18 506741 \n",
"44 .zip 2015-01-18 67128 \n",
"27 .whl 2015-07-24 15238 \n",
"28 .whl 2015-07-24 340 \n",
"29 .whl 2015-07-24 7977 \n",
"30 .tar 2015-07-24 81593 \n",
"31 .zip 2015-07-24 20372 \n",
"\n",
"[72 rows x 8 columns]"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.sort( ['major','minor','patch'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [],
"source": [
"#df = pd.DataFrame(np.random.normal(size=(2,2)), columns = ['a', 'b'])\n",
"#HTML(df.to_html())\n",
"#df.plot(kind='bar', stacked=True);"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"output_file(\"index.html\", mode = 'cdn' )\n",
"TOOLS = [BoxSelectTool(), HoverTool(), TapTool()]"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"df = pd.DataFrame(versions)\n",
"#incorporate languages later\n",
"#circleMult = 9\n",
"#df['number_of_downloads'] = [len(f.keys())*circleMult for f in df['number_of_downloads']]\n",
"df['index'] = df.index\n",
"df.loc[index,'number_of_downloads' ] = num_downloads[index]\n",
"df.loc[index,'number_of_releases' ] = len(releases[sortedVersion['key']])\n",
"df.loc[index,'type_of_release' ] = file_ext[index]\n",
"df.loc[index,'uploaded_on' ] = upload_at[index]\n",
"\n",
"source = ColumnDataSource(df)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#ix3 = pd.MultiIndex.from_arrays([['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'], ['foo', 'foo', 'bar', 'bar', 'foo', 'foo', 'bar', 'bar']], names=['letter', 'word'])\n",
"\n",
"#df3 = pd.DataFrame({'data1': [3, 2, 4, 3, 2, 4, 3, 2], 'data2': [6, 5, 7, 5, 4, 5, 6, 5]}, index=ix3)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#df = pd.DataFrame(np.random.randn(1000, 2), columns=['index', 'number_of_downloads'])\n",
"\n",
"#df['number_of_downloads'] = df['number_of_downloads'] + np.arange(1000)\n",
"\n",
"#df.plot(kind='hexbin', x='index', y='number_of_downloads', gridsize=25)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#p = figure(x_axis_type = \"datetime\", tools=TOOLS)\n",
"\n",
"#p.segment(\n",
"# x0 = 'index',\n",
"# x1 = 'index',\n",
"# y0 = 'uploaded_on',\n",
"# y1 = 'uploaded_on',\n",
"# color = \"blue\",\n",
"# line_alpha = 1,\n",
"# source = source\n",
"#)\n",
"\n",
"#p.circle(\n",
"# x= 'index',\n",
"# y = 'type_of_release',\n",
"# source = source,\n",
"# size = 'number_of_downloads',\n",
"# color = 'purple',\n",
"# fill_alpha = 0.85\n",
"#)\n",
"\n",
"#url = \"https://pypi.python.org/pypi/%s/@version\" % package\n",
"#taptool = p.select(type = TapTool)\n",
"#taptool.action = OpenURL(url = url)\n",
"\n",
"#hover = p.select(dict(type = HoverTool))\n",
"\n",
"#hover.tooltips = OrderedDict([\n",
"# (\"index\", \"$index\"),\n",
" #(\"description\", \"@short_description\"),\n",
"# (\"format\", \"@type_of_release\"),\n",
"# (\"created\", \"@uploaded_on\"), \n",
" #(\"updated\", \"@updated_to\"),\n",
"# (\"downloads\", \"@number_of_downloads\"),\n",
"#])\n",
"\n",
"#show(p)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.8"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment