OSGeoLive-Notebooks/Pandas/solved - 04b - Advanced gro...

2238 lines
172 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Groupby operations"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Some imports:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"try:\n",
" import seaborn\n",
"except ImportError:\n",
" pass\n",
"\n",
"pd.options.display.max_rows = 10"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Recap: the groupby operation (split-apply-combine)\n",
"\n",
"The \"group by\" concept: we want to **apply the same function on subsets of your dataframe, based on some key to split the dataframe in subsets**\n",
"\n",
"This operation is also referred to as the \"split-apply-combine\" operation, involving the following steps:\n",
"\n",
"* **Splitting** the data into groups based on some criteria\n",
"* **Applying** a function to each group independently\n",
"* **Combining** the results into a data structure\n",
"\n",
"<img src=\"img/splitApplyCombine.png\">\n",
"\n",
"Similar to SQL `GROUP BY`"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"The example of the image in pandas syntax:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>data</th>\n",
" <th>key</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>A</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>5</td>\n",
" <td>B</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>10</td>\n",
" <td>C</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>5</td>\n",
" <td>A</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>10</td>\n",
" <td>B</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>15</td>\n",
" <td>C</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>10</td>\n",
" <td>A</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>15</td>\n",
" <td>B</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>20</td>\n",
" <td>C</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data key\n",
"0 0 A\n",
"1 5 B\n",
"2 10 C\n",
"3 5 A\n",
"4 10 B\n",
"5 15 C\n",
"6 10 A\n",
"7 15 B\n",
"8 20 C"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame({'key':['A','B','C','A','B','C','A','B','C'],\n",
" 'data': [0, 5, 10, 5, 10, 15, 10, 15, 20]})\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using the filtering and reductions operations we have seen in the previous notebooks, we could do something like:\n",
"\n",
"\n",
" df[df['key'] == \"A\"].sum()\n",
" df[df['key'] == \"B\"].sum()\n",
" ...\n",
"\n",
"But pandas provides the `groupby` method to do this:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>data</th>\n",
" </tr>\n",
" <tr>\n",
" <th>key</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>45</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data\n",
"key \n",
"A 15\n",
"B 30\n",
"C 45"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('key').aggregate('sum') # np.sum"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>data</th>\n",
" </tr>\n",
" <tr>\n",
" <th>key</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>45</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data\n",
"key \n",
"A 15\n",
"B 30\n",
"C 45"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('key').sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pandas does not only let you group by a column name. In `df.groupby(grouper)` can be many things:\n",
"\n",
"- Series (or string indicating a column in df)\n",
"- function (to be applied on the index)\n",
"- dict : groups by values\n",
"- levels=[], names of levels in a MultiIndex\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>data</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data\n",
"0 10\n",
"1 10"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby(lambda x: x % 2).mean()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## And now applying this on some real data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"These exercises are based on the [PyCon tutorial of Brandon Rhodes](https://github.com/brandon-rhodes/pycon-pandas-tutorial/) (so all credit to him!) and the datasets he prepared for that. You can download these data from here: [`titles.csv`](https://drive.google.com/open?id=0B3G70MlBnCgKajNMa1pfSzN6Q3M) and [`cast.csv`](https://drive.google.com/open?id=0B3G70MlBnCgKal9UYTJSR2ZhSW8) and put them in the `/data` folder."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`cast` dataset: different roles played by actors/actresses in films\n",
"\n",
"- title: title of the film\n",
"- name: name of the actor/actress\n",
"- type: actor/actress\n",
"- n: the order of the role (n=1: leading role)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>title</th>\n",
" <th>year</th>\n",
" <th>name</th>\n",
" <th>type</th>\n",
" <th>character</th>\n",
" <th>n</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Suuri illusioni</td>\n",
" <td>1985</td>\n",
" <td>Homo $</td>\n",
" <td>actor</td>\n",
" <td>Guests</td>\n",
" <td>22.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Gangsta Rap: The Glockumentary</td>\n",
" <td>2007</td>\n",
" <td>Too $hort</td>\n",
" <td>actor</td>\n",
" <td>Himself</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Menace II Society</td>\n",
" <td>1993</td>\n",
" <td>Too $hort</td>\n",
" <td>actor</td>\n",
" <td>Lew-Loc</td>\n",
" <td>27.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Porndogs: The Adventures of Sadie</td>\n",
" <td>2009</td>\n",
" <td>Too $hort</td>\n",
" <td>actor</td>\n",
" <td>Bosco</td>\n",
" <td>3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Stop Pepper Palmer</td>\n",
" <td>2014</td>\n",
" <td>Too $hort</td>\n",
" <td>actor</td>\n",
" <td>Himself</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" title year name type character n\n",
"0 Suuri illusioni 1985 Homo $ actor Guests 22.0\n",
"1 Gangsta Rap: The Glockumentary 2007 Too $hort actor Himself NaN\n",
"2 Menace II Society 1993 Too $hort actor Lew-Loc 27.0\n",
"3 Porndogs: The Adventures of Sadie 2009 Too $hort actor Bosco 3.0\n",
"4 Stop Pepper Palmer 2014 Too $hort actor Himself NaN"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cast = pd.read_csv('data/cast.csv')\n",
"cast.head()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>title</th>\n",
" <th>year</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>The Rising Son</td>\n",
" <td>1990</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Ashes of Kukulcan</td>\n",
" <td>2016</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>The Thousand Plane Raid</td>\n",
" <td>1969</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Crucea de piatra</td>\n",
" <td>1993</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>The 86</td>\n",
" <td>2015</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" title year\n",
"0 The Rising Son 1990\n",
"1 Ashes of Kukulcan 2016\n",
"2 The Thousand Plane Raid 1969\n",
"3 Crucea de piatra 1993\n",
"4 The 86 2015"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titles = pd.read_csv('data/titles.csv')\n",
"titles.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: Using groupby(), plot the number of films that have been released each decade in the history of cinema.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f710e20d9e8>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAe8AAAFyCAYAAADccVJQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X9UVPeB///XzPDDCAYdw2DUaCrr4pYEKyZapKyBEnYl\nqV2zaAyK3Wq21RprukRjNYLZZsWYWtc2a9M0uoEoVaupMcYAa+lxDbiJR9EVzxpTrTlBT4BBEEEU\nBu/3j3zLR0oUIw6T98zz8RfcuXNf7/eg8+LeufdisyzLEgAAMIbd1wMAAABfDOUNAIBhKG8AAAxD\neQMAYBjKGwAAw1DeAAAYJuhmVtq1a5c2bNigoKAg/fCHP1RMTIwWLVoky7IUGRmp1atXKzg4WLt2\n7VJBQYEcDoemTp2qjIwMeTweLVmyROfOnZPD4VBeXp6GDh2qEydOaMWKFbLb7YqJiVFubq635woA\ngF+wdXedd0NDgx5//HHt3LlTzc3N+vnPf662tjYlJycrLS1Na9eu1d13361vf/vbmjJlinbs2KGg\noCBlZGRo8+bNKi0t1bFjx7R8+XKVlZVp+/btWrt2rWbNmqVnn31WsbGxys7O1j/8wz8oKSmpt+YN\nAICxuj1sXl5ersTERN1xxx2666679K//+q/64IMPlJycLElKTk5WeXm5jh49qri4OIWFhSk0NFTx\n8fE6dOiQDhw4oNTUVEnShAkTVFFRoba2NlVVVSk2NlaSlJKSovLyci9OEwAA/9HtYfOzZ8+qpaVF\n8+bN08WLFzV//nxdvnxZwcHBkqSBAweqpqZGdXV1cjqdHc9zOp2qra2V2+3uWG6z2WSz2eR2u9W/\nf/8u6wIAgO51W96WZamhoUH/8R//obNnz2rWrFm69kj79Y6632i5zWa77uPX4/G0KyjI8YWeAwCA\nP+q2vO+66y6NGTNGdrtd99xzj8LCwhQUFKTW1laFhISourpaUVFRcrlcnfaeq6urNWbMGLlcLrnd\nbsXExMjj8XSc5NbQ0NBpXZfLdcNx1Ndf6sE0pcjIfqqtvdijbZBPPvlmZZNPvun5kZH9Pnd5t595\nJyYm6v3335dlWaqvr9elS5eUkJCgoqIiSVJxcbGSkpIUFxenyspKNTU1qbm5WRUVFRo7dqwSExM7\n1i0tLdX48ePlcDg0YsQIHT58WJJUUlLCyWoAANykbve8o6Ki9Hd/93eaNm2abDabcnJydN9992nx\n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\nDziQH7j5gTx38snn/17v5ftleUtSa2urjhw5orq6OlmWpaFDh+q+++7z+g/wzxobG3Xo0CHV1tZK\nkqKiojR27FiFh4f3Sv71vP/++xo/frzXc06dOqWGhgZ97Wtfk8Ph6Fj+hz/8QcnJyV7Pr62tVXh4\nuO644w5VVVXp2LFj+spXvqJRo0Z5PfsvbdiwQXPmzOmVLMuyOh22q6ys1MmTJzVy5Ejdf//9vTKG\nK1euKDQ0VJL0xz/+UR999JFGjBihmJgYr2cfOXJEX/va17yecyN1dXXq06ePwsLCdP78eX300Ue6\n5557NHjw4F7J572vK3983/PL8i4pKdF//ud/atSoUaqoqNDIkSN19epVnThxQjk5OV7/IW7fvl35\n+fmKj4+X0+mUZVmqrq5WRUWFFixYoEceecSr+Tcya9YsFRQUeDVj7dq1OnDggPr3769z585pzZo1\nHW/cvZH/y1/+Ujt37pTdbtcPfvADvfbaa4qPj9fx48c1ceJEzZ8/32vZP/7xj7ss27dvnyZOnChJ\nysvL81q21Pn1ff311/X222/r61//ug4fPqyHHnpI3//+972av379ep06dUpr1qxRQUGB3nzzTcXH\nx+v//u//lJiYqKeeesqr+RMmTFB0dLS+853vKDU11atZn+e1117Tm2++KYfDoenTp+s3v/mNYmJi\ndPLkSU2bNk1ZWVlezee97/P54/ueX37m/frrrys/P18hISFqbm7Wj3/8Y/385z9XbW2tvv/97+vN\nN9/0av5vf/tbbd++vWPv48+am5s1Z84cr/8DXrhw4ecutyxLf/zjH72aLX32W+62bdskSR9++KGe\neeYZvfTSSxo1apR643fFffv26d1331VDQ4MmT56sPXv26M4771R7e7ueeOIJr5b3lStXVFVVpXnz\n5iksLEyWZel///d/NWXKFK9lXuva17e4uFibNm3SHXfcIY/HoxkzZni9vEtLS7V9+3ZJUlFRkbZs\n2aI+ffro6tWryszM9Hp5R0dHa/369dqwYYN+9atfaeLEiZowYYJGjRqlvn37ejVbkvbu3at33nlH\nly9f1je/+U2VlJQoPDxcbW1tmjVrltfLO5Df+wLtfc8vy7u1tbXj0GFbW5tqamokSREREb1SHu3t\n7fJ4PF3+AVuW1XHtnzc1NzfrgQceUHx8fJf8Tz75xOv57e3tamlp0R133KGYmBj94he/0IIFC5Sb\nm9vpkK432e12OZ1OTZo0SXfeeack9Ur2z372M5WVlemVV17RE088ofT0dPXr10/jxo3zerbUeY5D\nhgzp+Dpx6NdvAAAH70lEQVQoKEjt7e1ez7csSydOnNCoUaM0fPhwtba2qk+fPmpqauqVf/s2m039\n+vXT008/rXnz5mnv3r0qLCzUsWPH1NTUpLKyMq/n22w2ORwO2e12hYSESJKCg4N75b0nkN/7Au19\nzy/LOyMjQ48++qhGjBihkydPavHixZKkOXPmaOrUqV7PnzVrlv7xH/9RcXFxHWcd1tbWqrKyUtnZ\n2V7P/9nPfqbc3FzNmjWry95Gb3zu9N3vflePPvqo3n77bfXt21f33nuvfv3rX2vZsmU6duyY1/O/\n8Y1v6Omnn9a///u/a9myZZI+++x3xYoVSktL83p+YmKiHnzwQb366quaO3euWlpavJ75Z4cOHVJC\nQoIsy9KVK1f04IMP6vHHH1d2drYSEhK8nv9v//ZvysnJUUtLi+68805NnjxZf/VXf6Xm5mY999xz\nXs+/tqBCQ0P1yCOP9Oqh2nHjxmn69OlqbW3VrFmzNGPGDI0ePVqVlZX6xje+4fX8QH7vC7T3Pb/8\nzFuSzp8/r6qqKg0fPlwRERGSPvvN6NqTCLyppaVFR48eldvtls1mk8vlUlxcXJffSHvb1atXe+XE\nlcuXL6tPnz5dlp85c0b33nuv1/PPnj3bac+zurpadXV1+upXv+r17Gt9/PHH2rdvn2bNmtWruX/p\nT3/6k77yla/0Wl5dXZ3Onj0ry7I0cOBADR06tFdyjx8/rtjY2F7Jup6PPvpI/fr106BBg/TJJ5/o\n2LFjGj58eK+N68vy3ldXVydJX4r3Pn983/PLPe+LFy9qx44dGjBggO677z5t2rRJlZWVGj58uLKy\nsrz+W9jVq1dVWlqq9957r+OMzyFDhujSpUsdJy55O//dd9/tkp+cnNxr+b///e99mn/kyBG9/PLL\nXfJ7I3vPnj0qKyvrlH3tSWvezr/ez743yvt6+SkpKfrbv/1br+f/zd/8jd555x2f/ts7efJkl/yw\nsDCvZ/85/8CBAz6bf1tbm9566y2Vl5d3HLKPiopSUlKSpkyZ4tVfINra2rRjxw6Vl5d3nOnucrk6\nsr2tra1NO3fu7LV8x4oVK1bc9q362MKFCzVo0CB9+umnevnllxUeHq5vfvObqqmp0datWzVp0iSv\n5ufm5urq1atKT09Xa2urBg0apAkTJmjnzp06cuSI1w+fke+7/ECe+43yf/e73wX0/AMl/5lnnpHD\n4dBjjz2mb3/723r44YcVHR2t999/X3v27NHDDz/ca9mpqam9lu2T/Nt+w9UvgaysrI6v//7v//66\nj3nLzJkzO33/ne98p+PrjIwM8v04P5DnTj75M2bMuKXHTM/2Rb5f3tvc4/Ho448/VkVFhS5cuKAj\nR45I+uwC+ra2Nq/nW5al9957TxcuXNBbb73V8RnIvn37vJ5Nvm/zA3nu5JNvs9lUXFzc6X22tbVV\nb7/9dseZ9/6Y7Yt8vzxh7eDBg1q1apWcTqeWLFmiF154QR9++KEiIyP1/PPPe/0OTKdPn9ZPf/pT\nffzxx4qJidHixYs1aNAg/eIXv9DEiRMVFxdHvp/mB/LcySf/008/1bp163Tw4EG1tLTIsiyFhYUp\nISFB8+bN09133+2X2T7Jv+378l9yvXHYnHzyv2zZ5JPfG/klJSXWQw89ZI0bN85avHixdfHixV7L\n92W2L/L98mzzzZs3X/ex6upq8sn3y2zyyfd1/quvvqrf/e53uvPOO7V9+3bNmTNHr732mvr16+f1\nm8T4MtsX+X5Z3q+//roSEhLkcrm6PObxeMgn3y+zySff1/kOh0P9+/eXJE2bNk1Op1Nz5szRK6+8\n4vU7HPoy2yf5t31f/kvgww8/tLKysqwrV650eewvz8Ykn3x/ySaffF/nv/jii9b3vvc9q6WlpWPZ\nf//3f1vf+ta3rKSkJL/N9kW+X5a3ZVnWpUuXrPb29i7LKysrySffb7PJJ9/X+f/zP/9jXb16tdOy\nixcvWlu3bvXr7N7O98uzzQEA8Gd+eZ03AAD+jPIGAMAwlDcAAIahvAEAMAzlDQCAYfzyJi0AuvfE\nE0/oX/7lX/Tggw9Kkv75n/9ZjzzyiIqKinT58mVdunRJP/rRj5SQkKDTp08rNzdXQUFBampq0tNP\nP63ExES9/PLLqqqq0rlz57RkyRJ99atf9fGsgMBAeQMBavr06XrzzTf14IMP6sKFC/rTn/6kPXv2\n6Mknn9S4cePkdrs1bdo07d27V263WwsXLtQDDzygI0eO6Cc/+YkSExMlSWfPntUbb7zh49kAgYXy\nBgLUpEmTtG7dOrW0tOi//uu/NHnyZG3cuFEtLS0d64SEhKiurk6RkZFavXq11q5dq7a2NjU0NHSs\nM3r0aF8MHwholDcQoEJCQvTwww+rpKREJSUlys3N1ebNm/Xyyy8rIiKi07rPPvusvvWtb2nKlCn6\n6KOPNHfu3I7HgoODe3voQMDjhDUggE2bNk2/+c1vZFmWhgwZovj4eL3zzjuSpPPnz2vlypWSpLq6\nOkVHR0uS9uzZo9bWVp+NGQDlDQS06Ohotbe367HHHpMkLVu2THv37tWMGTM0d+5cJSQkSJK++93v\navHixXryySf1wAMPqH///nrxxRd9OXQgoHFvcyCAVVVVae7cuXrrrbfkcDh8PRwAN4nPvIEA9atf\n/UrvvvuuXnjhBYobMAx73gAAGIbPvAEAMAzlDQCAYShvAAAMQ3kDAGAYyhsAAMP8fwecnu4R8LmX\nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f710c730da0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"titles.groupby(titles.year // 10 * 10).size().plot(kind='bar')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: Use groupby() to plot the number of \"Hamlet\" films made each decade.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f710c6b4940>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nQSooKFB6eroyMzNNT2wlPz9fv/3tbzV48GB99NFHGjBggJqbm3X8+HEtXrw45B5obNmyRS+//LJG\njBghj8cjy7J0+vRpffTRR3rsscd05513mp7YLh35Z7IjfyY8b968i15uWZY+++yzDl4TmIMHD+qP\nf/yjJOnTTz/VE088oeXLl2vw4MEK1b8H1dXVqbi4WHPmzFGPHj1kWZb++c9/asqUKaanXdS3b8ed\nO3fqd7/7na699lo1NjZq+vTpIRnhd999V1u2bJEkvfPOO8rLy1N4eLiam5t1//33h1yE4+PjtXbt\nWm3YsEEvvviiUlJSdPvtt2vw4MG+f2c81OzatUtvvfWWzp8/rx/+8IfKz89XRESEGhoaNHPmzJCM\n8EsvvaSXX35ZXbt2VU1NjZ588kn9+te/VllZmR555BFt3brV9MQWXnvtNW3ZssX3jM4FNTU1ysrK\nCskIh0pHHBnhmpoaJSQkaMSIES0utyxLRUVFhlZdWlNTk2pra3Xttddq0KBBeuGFF/TYY48pJyen\nxVOooWTVqlXau3ev1q1bp2nTpmnixImKjIzUqFGjTE+7qG/fjrGxsb6Pw8LC1NTUZGKSX5Zl6fjx\n4xo8eLDi4uJUX1+v8PBwVVdX+35vMZS4XC5FRkZq/vz5mjNnjnbt2qXf//73+uSTT1RdXa29e/ea\nntiKy+WSy+WS2+1Wly5d1LVrV0nSNddcE7J/Aa6vr/fdnxsaGlRaWipJ6tWrV0hubmpqUmNjY6sI\nW5YVkvdjKXQ64sgIr1q1Sjk5OZo5c2arv32H6s8fZs2apUmTJunNN99U9+7d1b9/f/3mN7/RU089\npU8++cT0vDYlJSVp5MiRWr9+vWbPnq3a2lrTk9r04YcfKjExUZZlqa6uTiNHjtTUqVP1+OOPKzEx\n0fS8i1q6dKkWL16s2tpa9ezZU3fffbe+973vqaamRr/85S9Nz2vl2wHo1q2b7rzzzpB8lPNto0aN\nUkZGhurr6zVz5kxNnz5dw4cP19GjRzV69GjT8y7q3nvv1aRJk3TDDTeooKBACxYskCRlZWXpvvvu\nM7yutZkzZ+onP/mJbrrpJt8rjcvKynT06FE9/vjjhtddXKh0pNP9TLi5uTlkX7hw/vx5hYeHt7r8\niy++UP/+/Tt+UDudOnVKe/bs0cyZM01PaZfPP/9c3/3ud03PuKSKigp9+eWXsixL1113nfr162d6\n0kUdO3ZMQ4cONT2j3U6cOKHIyEj16dNHRUVF+uSTTxQXFxfS30tlZaWKi4sVFxenXr16SfrPI85v\nv6gzlNTW1urjjz9WRUWFpP+80vimm25q9ejYCTqyI458JNzc3Ky3335bH3zwge+Vg7Gxsbrjjjt8\nLxoKNc3NzfrrX//quM07duzQ3r17W2z+9ouzQsml7hehGuG2No8dO1bJycmm57Xy/e9/X2+99Zbj\n7scFBQWtNvfo0cP0tDY1Nzdr//79jrmdGxoatH37du3bt8/31HlMTIzGjBmjKVOmhORfHBoaGvSn\nP/1J+/bt872i2+v1+jZ3FPevfvWrX3XYVwuSnJwcNTc3a+LEiaqvr1efPn10++236/XXX9eRI0dC\n8ikmNtvPaXultjdv27YtJDd3ptuYzcHzxBNPyO1265577tHkyZM1btw4xcfH6+DBg9qxY4fGjRtn\nemIr/7s5LS3NzGbb3xjTBjNmzGjx+QMPPOD7+N577+3gNYFhs/2ctteynLfZaXsti80dYfr06Zd1\nzKRQ2RyaPzz1w7IsffDBB/r666+1fft2389Z9+zZY3hZ29hsP6ftlZy32Wl7JTZ3BJfLpZ07d6qh\nocF3WX19vd58803fq9FDTahsduQLs06ePKkVK1bo1KlTGjRokBYsWKA+ffrohRdeUEpKim666SbT\nE1ths/2ctldy3man7ZXY3BG++uorPf/88zp06JBqa2tlWZZ69OihxMREzZkzR9dff73pia2EzOYO\ne8zdQTIzM01PaDc2289pey3LeZudttey2Bws+fn5VmpqqjVq1ChrwYIF1tmzZ33HQnGvZYXOZke+\nOvrVV19t89jp06c7cEng2Gw/p+2VnLfZaXslNneE9evXa9u2berZs6e2bNmirKws5ebmKjIyMiTf\nXEQKnc2OjPBLL72kxMREeb3eVscaGxsNLPKPzfZz2l7JeZudtldic0dwu92KioqSJKWnp8vj8Sgr\nK0vr1q0L2XcEDJnNHfaYO4g+/fRTKzMz06qrq2t17H9fVRgq2Gw/p+21LOdtdtpey2JzR3j22Wet\nhx9+2KqtrfVd9re//c266667rDFjxhhc1rZQ2ezICFuWZZ07d85qampqdfnRo0cNrAkMm+3ntL2W\n5bzNTttrWWzuCAcOHLCam5tbXHb27FnrD3/4g6FF/oXCZke+OhoAgM7Akb8nDABAZ0CEAQAwhAgD\nAGAIEQYAwBAiDACAIY58sw4A/zVt2jRlZ2dr5MiRkqSf/vSnuvPOO/XOO+/o/PnzOnfunH7+858r\nMTFRJ0/jd+jVAAABzElEQVSeVE5OjsLCwlRdXa358+crKSlJa9asUXFxsUpKSrRw4UINGTLE8HcF\nXB2IMOBwGRkZ2rp1q0aOHKmvv/5an3/+uXbs2KGHHnpIo0aNUnl5udLT07Vr1y6Vl5dr3rx5SkhI\n0JEjR/T0008rKSlJkvTll19q06ZNhr8b4OpChAGH+/GPf6znn39etbW1+stf/qK7775bGzduVG1t\nre86Xbt2VUVFhaKjo/Xcc89p9erVamho0JkzZ3zXGT58uIn5wFWNCAMO17VrV40bN075+fnKz89X\nTk6OXn31Va1Zs0a9evVqcd1f/OIXuuuuuzRlyhSdOHFCs2fP9h275pprOno6cNXjhVlAJ5Cenq7N\nmzfLsizFxsZqxIgReuuttyRJlZWV+r//+z9JUkVFheLj4yVJO3bsUH19vbHNAIgw0CnEx8erqalJ\n99xzjyTpqaee0q5duzR9+nTNnj1biYmJkqRZs2ZpwYIFeuihh5SQkKCoqCg9++yzJqcDVzXeOxro\nBIqLizV79mxt375dbrfb9BwAAeJnwoDDvfjii3r77be1ZMkSAgw4DI+EAQAwhJ8JAwBgCBEGAMAQ\nIgwAgCFEGAAAQ4gwAACG/D8HGpOt4XF00QAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f710c662c50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hamlet = titles[titles['title'] == 'Hamlet']\n",
"hamlet.groupby(hamlet.year // 10 * 10).size().plot(kind='bar')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: How many leading (n=1) roles were available to actors, and how many to actresses, in each year of the 1950s?\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"clear_cell": true,
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"year type \n",
"1950 actor 604\n",
" actress 271\n",
"1951 actor 633\n",
" actress 272\n",
"1952 actor 591\n",
" ... \n",
"1957 actress 284\n",
"1958 actor 694\n",
" actress 275\n",
"1959 actor 678\n",
" actress 287\n",
"dtype: int64"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cast1950 = cast[cast.year // 10 == 195]\n",
"cast1950 = cast1950[cast1950.n == 1]\n",
"cast1950.groupby(['year', 'type']).size()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: List the 10 actors/actresses that have the most leading roles (n=1) since the 1990's.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"name\n",
"Mohanlal 126\n",
"Mammootty 118\n",
"Akshay Kumar 87\n",
"Jayaram 76\n",
"Andy Lau 72\n",
"Ajay Devgn 69\n",
"Amitabh Bachchan 68\n",
"Eric Roberts 68\n",
"Nagarjuna Akkineni 60\n",
"Dilip 59\n",
"dtype: int64"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cast1990 = cast[cast['year'] >= 1990]\n",
"cast1990 = cast1990[cast1990.n == 1]\n",
"cast1990.groupby('name').size().nlargest(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: Use groupby() to determine how many roles are listed for each of The Pink Panther movies.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>n</th>\n",
" </tr>\n",
" <tr>\n",
" <th>year</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1963</th>\n",
" <td>15.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006</th>\n",
" <td>50.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" n\n",
"year \n",
"1963 15.0\n",
"2006 50.0"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = cast\n",
"c = c[c.title == 'The Pink Panther']\n",
"c = c.groupby(['year'])[['n']].max()\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: List, in order by year, each of the films in which Frank Oz has played more than 1 role.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"year title \n",
"1979 The Muppet Movie 8\n",
"1981 An American Werewolf in London 2\n",
" The Great Muppet Caper 6\n",
"1982 The Dark Crystal 2\n",
"1984 The Muppets Take Manhattan 7\n",
"1985 Sesame Street Presents: Follow that Bird 3\n",
"1992 The Muppet Christmas Carol 7\n",
"1996 Muppet Treasure Island 4\n",
"1999 Muppets from Space 4\n",
" The Adventures of Elmo in Grouchland 3\n",
"dtype: int64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = cast\n",
"c = c[c.name == 'Frank Oz']\n",
"g = c.groupby(['year', 'title']).size()\n",
"g[g > 1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: List each of the characters that Frank Oz has portrayed at least twice.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"character\n",
"Grover 2\n",
"Bert 3\n",
"Cookie Monster 3\n",
"Fozzie Bear 4\n",
"Sam the Eagle 5\n",
"Yoda 5\n",
"Animal 6\n",
"Miss Piggy 6\n",
"dtype: int64"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = cast\n",
"c = c[c.name == 'Frank Oz']\n",
"g = c.groupby(['character']).size()\n",
"g[g > 1].sort_values()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Transforms"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sometimes you don't want to aggregate the groups, but transform the values in each group. This can be achieved with `transform`:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>data</th>\n",
" <th>key</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>A</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>5</td>\n",
" <td>B</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>10</td>\n",
" <td>C</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>5</td>\n",
" <td>A</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>10</td>\n",
" <td>B</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>15</td>\n",
" <td>C</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>10</td>\n",
" <td>A</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>15</td>\n",
" <td>B</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>20</td>\n",
" <td>C</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data key\n",
"0 0 A\n",
"1 5 B\n",
"2 10 C\n",
"3 5 A\n",
"4 10 B\n",
"5 15 C\n",
"6 10 A\n",
"7 15 B\n",
"8 20 C"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>data</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>15</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data\n",
"0 5\n",
"1 10\n",
"2 15\n",
"3 5\n",
"4 10\n",
"5 15\n",
"6 5\n",
"7 10\n",
"8 15"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('key').transform('mean')"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def normalize(group):\n",
" return (group - group.mean()) / group.std()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>data</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>1.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data\n",
"0 -1.0\n",
"1 -1.0\n",
"2 -1.0\n",
"3 0.0\n",
"4 0.0\n",
"5 0.0\n",
"6 1.0\n",
"7 1.0\n",
"8 1.0"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('key').transform(normalize)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>data</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>45</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>45</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>45</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" data\n",
"0 15\n",
"1 30\n",
"2 45\n",
"3 15\n",
"4 30\n",
"5 45\n",
"6 15\n",
"7 30\n",
"8 45"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('key').transform('sum')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: Add a column to the `cast` dataframe that indicates the number of roles for the film.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>title</th>\n",
" <th>year</th>\n",
" <th>name</th>\n",
" <th>type</th>\n",
" <th>character</th>\n",
" <th>n</th>\n",
" <th>n_total</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Suuri illusioni</td>\n",
" <td>1985</td>\n",
" <td>Homo $</td>\n",
" <td>actor</td>\n",
" <td>Guests</td>\n",
" <td>22.0</td>\n",
" <td>22.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Gangsta Rap: The Glockumentary</td>\n",
" <td>2007</td>\n",
" <td>Too $hort</td>\n",
" <td>actor</td>\n",
" <td>Himself</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Menace II Society</td>\n",
" <td>1993</td>\n",
" <td>Too $hort</td>\n",
" <td>actor</td>\n",
" <td>Lew-Loc</td>\n",
" <td>27.0</td>\n",
" <td>45.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Porndogs: The Adventures of Sadie</td>\n",
" <td>2009</td>\n",
" <td>Too $hort</td>\n",
" <td>actor</td>\n",
" <td>Bosco</td>\n",
" <td>3.0</td>\n",
" <td>9.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Stop Pepper Palmer</td>\n",
" <td>2014</td>\n",
" <td>Too $hort</td>\n",
" <td>actor</td>\n",
" <td>Himself</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" title year name type character n \\\n",
"0 Suuri illusioni 1985 Homo $ actor Guests 22.0 \n",
"1 Gangsta Rap: The Glockumentary 2007 Too $hort actor Himself NaN \n",
"2 Menace II Society 1993 Too $hort actor Lew-Loc 27.0 \n",
"3 Porndogs: The Adventures of Sadie 2009 Too $hort actor Bosco 3.0 \n",
"4 Stop Pepper Palmer 2014 Too $hort actor Himself NaN \n",
"\n",
" n_total \n",
"0 22.0 \n",
"1 NaN \n",
"2 45.0 \n",
"3 9.0 \n",
"4 NaN "
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cast['n_total'] = cast.groupby('title')['n'].transform('max')\n",
"cast.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: Calculate the ratio of leading actor and actress roles to the total number of leading roles per decade. \n",
"</div>\n",
"\n",
"Tip: you can to do a groupby twice in two steps, once calculating the numbers, and then the ratios."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"year type \n",
"1900 actor 5\n",
" actress 1\n",
"1910 actor 2406\n",
" actress 2753\n",
"1920 actor 4485\n",
" ... \n",
"2000 actress 7537\n",
"2010 actor 17262\n",
" actress 7384\n",
"2020 actor 3\n",
" actress 1\n",
"dtype: int64"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"leading = cast[cast['n'] == 1]\n",
"sums_decade = leading.groupby([cast['year'] // 10 * 10, 'type']).size()\n",
"sums_decade"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"year type \n",
"1900 actor 0.833333\n",
" actress 0.166667\n",
"1910 actor 0.466369\n",
" actress 0.533631\n",
"1920 actor 0.598080\n",
" ... \n",
"2000 actress 0.295464\n",
"2010 actor 0.700398\n",
" actress 0.299602\n",
"2020 actor 0.750000\n",
" actress 0.250000\n",
"dtype: float64"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#sums_decade.groupby(level='year').transform(lambda x: x / x.sum())\n",
"ratios_decade = sums_decade / sums_decade.groupby(level='year').transform('sum')\n",
"ratios_decade"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"clear_cell": true,
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f710c5b3e80>"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nHR1NVlYWc+fO5euvvwask5W/OQ0YMIAPPviAxMRE3nvvPZxOJ5GRkZbJCTpfX0REBAD79+9n4sSJ\neDweevXqBUDfvn25efMmLS0tlq7n/uTU1NQEBK6eP9cvoq1cuZKSkhLmz5/vm5r25C08zd/8TPzJ\n65Uvsq5yeuTq1atkZGSwefNmbDbbU8+1ek61tbVUVVUxbdq0f5zKZ6WcoOusjDHU19eTlZXFrl27\nKCoqoqam5qnnWimrrnK6du0a5eXlHDt2jLKyMgoLC7l169ZTz7VCThUVFXz77besXr36sffX373X\nrFrP/c0pEPX8X2eP/z8GDBhAfn4+0Pkptqmpif79+/s+eQDcuHGD0aNH+2acx8bG+j5phIU91+X1\nGF3lBNDY2MjSpUvZtGkTsbGxAMrpiZyOHz/O9evXcTqd3L9/n9u3b7Nz505L5wRdZ9W3b1+GDRtG\ndHQ0AHFxcVy6dMnSWXWV06+//sqoUaOw2+3Y7XZiY2MtmdOJEyfYsWMHO3fupHfv3kRGRuL1erHb\n7dy4cYOYmBjVc/49p0eXYwJVz5/rmfZXX33F8ePHASgqKmLSpEmMHDmSqqoqWltbefDgAT///DNv\nv/02DoeD0tJSAI4dO8a4ceOe59J6lK5yAsjOziYnJ8d3DRJQTk/k9Mknn3Dw4EH27dtHTk4OEyZM\nYOHChZbOCZ7OKjExkUGDBvHgwQPu3btHR0cHFy9eZMiQITgcDkpKSgDrZdXVnnr99depqqoCoL29\nnerqal577TVL7anW1lY2bdpEfn4+UVGdNwRJSEjw3Yfi6NGjvPvuu5av5/7mBIGr5wEbY3r+/Hk2\nbNhAQ0MDYWFhxMTEkJGRwdq1awGIj49n1apVAJSVlVFQUEBoaCgul4ukpCQ6OjrIzs6mtraW8PBw\nNmzYQExMTCCW1qP4m9PVq1eZOXMmI0aM8F1WWLBgARMmTFBOPL6fHjl16hQHDhxg/fr1ltlP8GxZ\n/fLLL6xbt47Q0FDeeecdlixZYpmsniWnvLw8KisrCQkJYdq0abhcLsvkBPDNN9+Ql5fH4MGDffVn\n48aNZGdn4/V6GThwIOvXr8dms1m6nvub07Vr1wJWzzV7XEREJEhoIpqIiEiQUNMWEREJEmraIiIi\nQUJNW0REJEioaYuIiAQJNW0REZEgoaYtIiISJNS0RUREgsSLOQxWxEJSU1NJT09nzJgxAHz66ack\nJSVRWlpKW1sbbrebFStWkJCQwOXLl8nJySEsLIzW1laWL1+Ow+EgLy+Puro6GhoayMzMZPjw4d38\nqkSkK2raIkHO6XRSVFTEmDFjuHv3LleuXKG4uJhFixYxduxYmpubmTNnDhUVFTQ3N7Ns2TLi4+M5\ne/Ysa9euxeFwAFBfX8/u3bu7+dWIyD9R0xYJclOnTmXr1q14PB7Ky8v58MMP2bVrFx6Px3eM3W6n\npaWFfv368eWXX5Kbm0t7ezt37tzxHTNq1KjuWL6IPAM1bZEgZ7fbmTJlCmVlZZSVlZGTk8PevXvJ\ny8vj5ZdffuzYVatWMWPGDGbOnMmlS5dIS0vz/a1Xr17/9dJF5Bnpi2giL4A5c+ZQWFiIMYZXX32V\nuLg4jhw5AsCtW7f44osvAGhpaWHo0KEAFBcX4/V6u23NIvLs1LRFXgBDhw7ljz/+4KOPPgI6791b\nUVHBxx9/TFpaGgkJCQAsWLCAlStXsmjRIuLj4+nTpw8bN27szqWLyDPQrTlFXgB1dXWkpaVx8OBB\nbDZbdy9HRJ4TXdMWCXLbt2+npKSEdevWqWGLvOB0pi0iIhIkdE1bREQkSKhpi4iIBAk1bRERkSCh\npi0iIhIk1LRFRESChJq2iIhIkPgTmq6lHRf7IYwAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f710c66b1d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ratios_decade[:, 'actor'].plot()\n",
"ratios_decade[:, 'actress'].plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Intermezzo: string manipulations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python strings have a lot of useful methods available to manipulate or check the content of the string:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"s = 'Bradwurst'"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.startswith('B')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In pandas, those methods (together with some additional methods) are also available for string Series through the `.str` accessor:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"s = pd.Series(['Bradwurst', 'Kartoffelsalat', 'Sauerkraut'])"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0 True\n",
"1 False\n",
"2 False\n",
"dtype: bool"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.str.startswith('B')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For an overview of all string methods, see: http://pandas.pydata.org/pandas-docs/stable/api.html#string-handling"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: We already plotted the number of 'Hamlet' films released each decade, but not all titles are exactly called 'Hamlet'. Give an overview of the titles that contain 'Hamlet', and that start with 'Hamlet':\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Hamlet 19\n",
"Hamlet (II) 5\n",
"Hamlet (III) 2\n",
"Han, hun og Hamlet 2\n",
"Fuck Hamlet 1\n",
" ..\n",
"Hamlet: Prince of Denmark 1\n",
"Zombie Hamlet 1\n",
"Hamlet_X 1\n",
"Dogg's Hamlet, Cahoot's Macbeth 1\n",
"Predstava 'Hamleta' u Mrdusi Donjoj 1\n",
"Name: title, dtype: int64"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hamlets = titles[titles['title'].str.contains('Hamlet')]\n",
"hamlets['title'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Hamlet 19\n",
"Hamlet (II) 5\n",
"Hamlet (III) 2\n",
"Hamlet the Vampire Slayer 1\n",
"Hamlet's Ghost 1\n",
" ..\n",
"Hamlet: Prince of Denmark 1\n",
"Hamlet (A Modern Adaptation) 1\n",
"Hamlet_X 1\n",
"Hamlet: The Fall of a Sparrow 1\n",
"Hamlet in the Hamptons 1\n",
"Name: title, dtype: int64"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"hamlets = titles[titles['title'].str.match('Hamlet')]\n",
"hamlets['title'].value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: List the 10 movie titles with the longest name.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"127048 208\n",
"28483 196\n",
"103597 116\n",
"8396 114\n",
"85693 104\n",
"108020 104\n",
"206303 101\n",
"122757 99\n",
"52929 94\n",
"187654 92\n",
"Name: title, dtype: int64"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"title_longest = titles['title'].str.len().nlargest(10)\n",
"title_longest"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>title</th>\n",
" <th>year</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>127048</th>\n",
" <td>Night of the Day of the Dawn of the Son of the Bride of the Return of the Revenge of the Terror of the Attack of the Evil Mutant Hellbound Flesh Eating Crawling Alien Zombified Subhumanoid Living Dead, Part 5</td>\n",
" <td>2011</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28483</th>\n",
" <td>Night of the Day of the Dawn of the Son of the Bride of the Return of the Revenge of the Terror of the Attack of the Evil, Mutant, Hellbound, Flesh-Eating Subhumanoid Zombified Living Dead, Part 3</td>\n",
" <td>2005</td>\n",
" </tr>\n",
" <tr>\n",
" <th>103597</th>\n",
" <td>Maverick and Ariel's First Ever Ever Movie Hollywood or Else... (Ang pinakamahabang title ng movie sa balat ng lupa)</td>\n",
" <td>2010</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8396</th>\n",
" <td>The Fable of the Kid Who Shifted His Ideals to Golf and Finally Became a Baseball Fan and Took the Only Known Cure</td>\n",
" <td>1916</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85693</th>\n",
" <td>Film d'amore e d'anarchia, ovvero 'stamattina alle 10 in via dei Fiori nella nota casa di tolleranza...'</td>\n",
" <td>1973</td>\n",
" </tr>\n",
" <tr>\n",
" <th>108020</th>\n",
" <td>Those Magnificent Men in Their Flying Machines or How I Flew from London to Paris in 25 hours 11 minutes</td>\n",
" <td>1965</td>\n",
" </tr>\n",
" <tr>\n",
" <th>206303</th>\n",
" <td>Ontologica! or a Brief Explanation of Absolutely Everything that is Known about Absolutely Everything</td>\n",
" <td>2012</td>\n",
" </tr>\n",
" <tr>\n",
" <th>122757</th>\n",
" <td>The Official Motion Pictures of the Heavyweight Boxing Contest Between Gene Tunney and Jack Dempsey</td>\n",
" <td>1927</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52929</th>\n",
" <td>Something Strange: 23 Peculiar Perspectives of Metaphysical Phenomena in a Modern American Age</td>\n",
" <td>2012</td>\n",
" </tr>\n",
" <tr>\n",
" <th>187654</th>\n",
" <td>The Personal History, Adventures, Experience, &amp; Observation of David Copperfield the Younger</td>\n",
" <td>1935</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" title \\\n",
"127048 Night of the Day of the Dawn of the Son of the Bride of the Return of the Revenge of the Terror of the Attack of the Evil Mutant Hellbound Flesh Eating Crawling Alien Zombified Subhumanoid Living Dead, Part 5 \n",
"28483 Night of the Day of the Dawn of the Son of the Bride of the Return of the Revenge of the Terror of the Attack of the Evil, Mutant, Hellbound, Flesh-Eating Subhumanoid Zombified Living Dead, Part 3 \n",
"103597 Maverick and Ariel's First Ever Ever Movie Hollywood or Else... (Ang pinakamahabang title ng movie sa balat ng lupa) \n",
"8396 The Fable of the Kid Who Shifted His Ideals to Golf and Finally Became a Baseball Fan and Took the Only Known Cure \n",
"85693 Film d'amore e d'anarchia, ovvero 'stamattina alle 10 in via dei Fiori nella nota casa di tolleranza...' \n",
"108020 Those Magnificent Men in Their Flying Machines or How I Flew from London to Paris in 25 hours 11 minutes \n",
"206303 Ontologica! or a Brief Explanation of Absolutely Everything that is Known about Absolutely Everything \n",
"122757 The Official Motion Pictures of the Heavyweight Boxing Contest Between Gene Tunney and Jack Dempsey \n",
"52929 Something Strange: 23 Peculiar Perspectives of Metaphysical Phenomena in a Modern American Age \n",
"187654 The Personal History, Adventures, Experience, & Observation of David Copperfield the Younger \n",
"\n",
" year \n",
"127048 2011 \n",
"28483 2005 \n",
"103597 2010 \n",
"8396 1916 \n",
"85693 1973 \n",
"108020 1965 \n",
"206303 2012 \n",
"122757 1927 \n",
"52929 2012 \n",
"187654 1935 "
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.options.display.max_colwidth = 210\n",
"titles.loc[title_longest.index]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Value counts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A useful shortcut to calculate the number of occurences of certain values is `value_counts` (this is somewhat equivalent to `df.groupby(key).size())`)\n",
"\n",
"For example, what are the most occuring movie titles?"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Hamlet 19\n",
"Macbeth 14\n",
"Carmen 14\n",
"The Three Musketeers 12\n",
"She 11\n",
"Name: title, dtype: int64"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titles.title.value_counts().head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: Which years saw the most films released?\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"2015 13978\n",
"2014 8209\n",
"2013 7664\n",
"Name: year, dtype: int64"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t = titles\n",
"t.year.value_counts().head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: Plot the number of released films over time\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f710c4ddcf8>"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f710c51f668>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"titles.year.value_counts().sort_index().plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: Plot the number of \"Hamlet\" films made each decade.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f710c4aeb38>"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n+tbrvS70v0wAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f710c45c0b8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"t = titles\n",
"t = t[t.title == 'Hamlet']\n",
"(t.year // 10 * 10).value_counts().sort_index().plot(kind='bar')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: What are the 11 most common character names in movie history?\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Himself 18928\n",
"Dancer 11070\n",
"Extra 9141\n",
"Reporter 7646\n",
"Doctor 6846\n",
" ... \n",
"Student 6406\n",
"Bartender 6178\n",
"Nurse 6164\n",
"Party Guest 5917\n",
"Minor Role 5880\n",
"Name: character, dtype: int64"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cast.character.value_counts().head(11)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: Which actors or actresses appeared in the most movies in the year 2010?\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Lloyd Kaufman 23\n",
"Jagathi Sreekumar 20\n",
"Suraaj Venjarammoodu 20\n",
"Chris (II) Eddy 20\n",
"Danny Trejo 17\n",
"Matt Simpson Siegel 17\n",
"Brahmanandam 15\n",
"Joe Estevez 15\n",
"Ben (II) Bishop 15\n",
"Kyle Rea 15\n",
"Name: name, dtype: int64"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cast[cast.year == 2010].name.value_counts().head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: Plot how many roles Brad Pitt has played in each year of his career.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f710c490550>"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f710c3e8f60>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cast[cast.name == 'Brad Pitt'].year.value_counts().sort_index().plot()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: What are the 10 most film titles roles that start with the word \"The Life\"?\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"The Life of David Gale 137\n",
"The Life Aquatic with Steve Zissou 78\n",
"The Life Before Her Eyes 74\n",
"The Life of Riley 73\n",
"The Life and Death of Peter Sellers 65\n",
"The Life and Death of Colonel Blimp 58\n",
"The Life and Hard Times of Guy Terrifico 53\n",
"The Life and Times of Judge Roy Bean 50\n",
"The Life of Emile Zola 46\n",
"The Life of the Party 45\n",
"Name: title, dtype: int64"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = cast\n",
"c[c.title.str.startswith('The Life')].title.value_counts().head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>EXERCISE</b>: How many leading (n=1) roles were available to actors, and how many to actresses, in the 1950s? And in 2000s?\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"actor 6388\n",
"actress 2813\n",
"Name: type, dtype: int64"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = cast\n",
"c = c[c.year // 10 == 195]\n",
"c = c[c.n == 1]\n",
"c.type.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"clear_cell": true,
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"actor 17972\n",
"actress 7537\n",
"Name: type, dtype: int64"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = cast\n",
"c = c[c.year // 10 == 200]\n",
"c = c[c.n == 1]\n",
"c.type.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"celltoolbar": "Nbtutor - export exercises",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}