data-science-ipython-notebooks/matplotlib/matplotlib-applied.ipynb

457 lines
188 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<small><i>This notebook was prepared by [Donne Martin](http://donnemartin.com). Source and license info is on [GitHub](https://github.com/donnemartin/data-science-ipython-notebooks).</i></small>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# matplotlib-applied\n",
"\n",
"* Applying Matplotlib Visualizations to Kaggle: Titanic\n",
"* Bar Plots, Histograms, subplot2grid\n",
"* Normalized Plots\n",
"* Scatter Plots, subplots\n",
"* Kernel Density Estimation Plots"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Applying Matplotlib Visualizations to Kaggle: Titanic"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Prepare the titanic data to plot:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import pandas as pd\n",
"import numpy as np\n",
"import pylab as plt\n",
"import seaborn\n",
"\n",
"# Set the global default size of matplotlib figures\n",
"plt.rc('figure', figsize=(10, 5))\n",
"\n",
"# Set seaborn aesthetic parameters to defaults\n",
"seaborn.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"df_train = pd.read_csv('../data/titanic/train.csv')\n",
"\n",
"def clean_data(df):\n",
" \n",
" # Get the unique values of Sex\n",
" sexes = np.sort(df['Sex'].unique())\n",
" \n",
" # Generate a mapping of Sex from a string to a number representation \n",
" genders_mapping = dict(zip(sexes, range(0, len(sexes) + 1)))\n",
"\n",
" # Transform Sex from a string to a number representation\n",
" df['Sex_Val'] = df['Sex'].map(genders_mapping).astype(int)\n",
" \n",
" # Get the unique values of Embarked\n",
" embarked_locs = np.sort(df['Embarked'].unique())\n",
"\n",
" # Generate a mapping of Embarked from a string to a number representation \n",
" embarked_locs_mapping = dict(zip(embarked_locs, \n",
" range(0, len(embarked_locs) + 1)))\n",
" \n",
" # Transform Embarked from a string to dummy variables\n",
" df = pd.concat([df, pd.get_dummies(df['Embarked'], prefix='Embarked_Val')], axis=1)\n",
" \n",
" # Fill in missing values of Embarked\n",
" # Since the vast majority of passengers embarked in 'S': 3, \n",
" # we assign the missing values in Embarked to 'S':\n",
" if len(df[df['Embarked'].isnull()] > 0):\n",
" df.replace({'Embarked_Val' : \n",
" { embarked_locs_mapping[np.nan] : embarked_locs_mapping['S'] \n",
" }\n",
" }, \n",
" inplace=True)\n",
" \n",
" # Fill in missing values of Fare with the average Fare\n",
" if len(df[df['Fare'].isnull()] > 0):\n",
" avg_fare = df['Fare'].mean()\n",
" df.replace({ None: avg_fare }, inplace=True)\n",
" \n",
" # To keep Age in tact, make a copy of it called AgeFill \n",
" # that we will use to fill in the missing ages:\n",
" df['AgeFill'] = df['Age']\n",
"\n",
" # Determine the Age typical for each passenger class by Sex_Val. \n",
" # We'll use the median instead of the mean because the Age \n",
" # histogram seems to be right skewed.\n",
" df['AgeFill'] = df['AgeFill'] \\\n",
" .groupby([df['Sex_Val'], df['Pclass']]) \\\n",
" .apply(lambda x: x.fillna(x.median()))\n",
" \n",
" # Define a new feature FamilySize that is the sum of \n",
" # Parch (number of parents or children on board) and \n",
" # SibSp (number of siblings or spouses):\n",
" df['FamilySize'] = df['SibSp'] + df['Parch']\n",
" \n",
" return df\n",
"\n",
"df_train = clean_data(df_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Bar Plots, Histograms, subplot2grid"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x11357ac50>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nRgoAiouL0a1bNwBAYGA
"text/plain": [
"<matplotlib.figure.Figure at 0x113145b10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Size of matplotlib figures that contain subplots\n",
"figsize_with_subplots = (10, 10)\n",
"\n",
"# Set up a grid of plots\n",
"fig = plt.figure(figsize=figsize_with_subplots) \n",
"fig_dims = (3, 2)\n",
"\n",
"# Plot death and survival counts\n",
"plt.subplot2grid(fig_dims, (0, 0))\n",
"df_train['Survived'].value_counts().plot(kind='bar', \n",
" title='Death and Survival Counts',\n",
" color='r',\n",
" align='center')\n",
"\n",
"# Plot Pclass counts\n",
"plt.subplot2grid(fig_dims, (0, 1))\n",
"df_train['Pclass'].value_counts().plot(kind='bar', \n",
" title='Passenger Class Counts')\n",
"\n",
"# Plot Sex counts\n",
"plt.subplot2grid(fig_dims, (1, 0))\n",
"df_train['Sex'].value_counts().plot(kind='bar', \n",
" title='Gender Counts')\n",
"plt.xticks(rotation=0)\n",
"\n",
"# Plot Embarked counts\n",
"plt.subplot2grid(fig_dims, (1, 1))\n",
"df_train['Embarked'].value_counts().plot(kind='bar', \n",
" title='Ports of Embarkation Counts')\n",
"\n",
"# Plot the Age histogram\n",
"plt.subplot2grid(fig_dims, (2, 0))\n",
"df_train['Age'].hist()\n",
"plt.title('Age Histogram')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x1138e6f10>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAegAAAFeCAYAAABOw4xkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtclHXe//H3jIAgh9QazdIlI1L3TvwthfeSZuTPjLY0\nDDHxmGabluXKqmGKaK2r2Sp2sNtT5UYHdQvN3LtuS23phhI76KPW0jRTLFMUtZmRmMGZ3x/+nCQV\nVBjm6/h6Ph4+HsM11+FzfcB5X6e5LovX6/UKAAAYxRroAgAAwKkIaAAADERAAwBgIAIaAAADEdAA\nABiIgAYAwEAhgS4AaGibNm3SnDlzdPjwYXm9Xl1++eV69NFHdc0119TL/JcuXaqffvpJf/zjH+tl\nfmeje/fumjt3rhISEs5r+uzsbBUXF6t58+bVhi9atEg2m63O9aWlpSk/P1/vvfee1qxZo/nz55/1\ntB988IHmz5+viooKHTt2TNdcc40mTpyoli1bat26dSouLtbkyZPrXCNgGgIaFxWXy6UHHnhAS5Ys\nUYcOHSRJq1at0v33369169bJYrHUeRn9+/ev8zzOR11uaWCxWDRs2DANGzasHiv6xcqVK89run37\n9ik7O1srVqxQq1atJEnz58/XmDFjtHTpUnXv3l3du3evz1IBYxDQuKhUVFTI4XDI6XT6hvXu3VvR\n0dGqqqrSZ599pr/85S96++23JUkbNmzw/fzss89q06ZNKisrU3x8vD799FM999xzuu666yRJY8eO\nVefOnXXgwAEdPnxY3bt318yZM33z+umnn9SjRw+tXbtWP/74ox5//HEdOXLEF45paWnasGGDpk+f\nriZNmujnn3/WK6+8oscee0y7d++W1WrVf/zHf+jxxx8/7YbE0qVLNW3aNLlcLg0bNkzp6emaPHmy\nLr30Uo0dO1bS8Y2RNWvW6Lnnnjtl+jMF/M6dO/X444+roqJC+/fvV/v27TV37lyFhYWpY8eOGjZs\nmNavXy+n06nx48fr3Xff1bZt29SiRQvNnz9fERERat++vT7++GPfPPfu3as77rhDhYWFioqKktfr\nVWpqqp555hm1a9fON96hQ4fkdrur/b6GDh3q27gqKCjQmjVr9Pzzz6tPnz6+vhw+fFjl5eUqKSmR\n2+3W9OnTtW3bNlVVVSk5OVkTJkxQo0aNzuIvBggczkHjonLJJZdo/PjxGjFihHr06KEJEybozTff\nVHJyskJDQ2udfu/evVq5cqVmz56t9PR0rVixQpJ05MgRFRcXq1evXrJYLLJYLOrSpYuOHj2qL7/8\nUpK0evVqpaSkqEmTJho1apSGDh2qVatWadGiRcrLy9OmTZskSdu3b1deXp5Wrlyp999/X0ePHtXK\nlSv1xhtvSJL27Nlz2toiIiJUUFCgF198UbNnz9b27ds1aNAgFRQUyOPxSJKWLVumzMzMU6b1er1a\nsmSJ0tLSfP9OLO8f//iH7r77bi1dulRr1qzRnj179K9//UuS5Ha71aJFC7399tvKzMzU5MmTNWnS\nJP33f/+37Ha71q1bd9paW7VqpeTkZK1atUqS9PHHH6tZs2bVwlmS2rdvr379+iktLU133HGHcnJy\ntH79enXt2rXaeFarVW+99ZZWrlypJUuWKCoqSjNnzlR4eLj++te/6rrrrlNBQYFWrFih8vJyvfTS\nS7X8poHAI6Bx0bn33nt95y1tNpsWLVqktLQ0ORyOWqft1KmTrNbj/23S09P1zjvvyO12a/Xq1ere\nvbtvb/DE3mjfvn19IV5QUKCMjAzt3LlTLpdLPXr0kCS1aNFCPXv21IcffiiLxaLLL7/cdzj3hhtu\n0Pbt2zV48GAtXLhQQ4cOVZs2bU5b2z333OObX9euXfXRRx+pffv2at26tdavX68dO3aorKxMXbp0\nOWXaE3vxK1eu9P3r27evJGn8+PFq2rSpFi9erNzcXO3fv7/aHm3Pnj0lSW3atNG1116rFi1ayGKx\nqHXr1jp8+PAZezlw4ED94x//kHTmDQdJevTRR1VUVKQxY8aocePGmjVrlgYNGuTb6DjZzz//rJEj\nR+quu+7SH/7wB0nHz2EvW7ZMaWlpSk9P15dffqlvvvnmjHUBpuAQNy4qn376qT7//HONGDFCKSkp\nSklJUVZWlnr16qXi4mI1bdq02qFet9tdbfomTZr4Xl9xxRX67W9/qw8++EArVqzQpEmTJKna4ee7\n775bffr0UUZGhux2u5KSkrRt27ZT6vJ4PKqqqpIkRUZG+oa3bt1aa9asUUlJiT7++GPde++9ysnJ\n0W233XbKPE5sOJyY34kjAgMHDtSbb76pq666yhfip3OmQ9xjx46Vx+PR7bffrpSUFP3444/V3g8L\nC/O9Dgk5+4+U5ORkVVRU6KOPPtInn3yiWbNmnTLO2rVrdfjwYaWnp6tnz57q2bOnsrKylJKSoi1b\ntlQb99ixY8rKylK7du10//33+4Z7PB49/fTTuvrqqyUdP9VQH9caAP7GHjQuKs2bN9f8+fO1ceNG\n37B9+/apoqJC1157rZo3b64ffvhB5eXl8nq9ev/992ucX79+/bRw4UJVVlbqd7/7naTqQdeyZUsl\nJCRoypQp6tevnySpbdu2Cg0N1Xvvvedb/po1a9SlS5dTQvK1117TxIkT1bVrV40bN0433XTTGff+\nCgoKJEk//PCDPvroIyUnJ0uSbrvtNn311Vd67733lJ6efi7tkiQVFRXpwQcf1O233y5J2rx5s44d\nO3bO8/k1i8WiAQMGaNKkSerVq1e1oD8hKipKeXl51TZqdu/ercaNGys2NrbauNOmTdOxY8c0ZcqU\nasO7du2qJUuWyOv1yuVy6aGHHtJrr71W5/oBf2MPGheVtm3bat68eXr66af1ww8/KCIiQtHR0Xri\niSd01VVXSTp+qDg9PV02m00pKSm+aU+cWz5Z9+7dNW3atGp7bL8er1+/fhozZozvq0WhoaGaN2+e\npk+frmeffVbHjh3T6NGj1blzZ23YsKHa/Pv06aONGzfqD3/4gyIiInTllVdq6NChp103t9utPn36\nqKqqSjk5Ob4ACw0N1W233aaDBw+qadOmZ+zNmfYqx44dq9GjR+uyyy5Tq1at1LNnT+3evfuUaU7X\nn1/P+9fvp6Wl6cknnzzjle//+Z//qZycHD322GM6cuSIQkJC1LJlSz3//POKjo72zW/Tpk1avny5\n2rdvr759+/o2dKZPn67Jkydr+vTp6t27t9xut7p06aIRI0acsQ+AKSw8bhIIbkePHtWgQYM0derU\n8/6etL/885//1FtvvaWFCxcGuhTAOLXuQS9YsEDr16+X2+3WoEGDlJiYqOzsbFmtVsXHxys3N1cW\ni0XLly/XsmXLFBISolGjRlXb8wAQGB9++KHGjRun9PR048J58ODBKi8v1zPPPBPoUgAj1bgHvWHD\nBr300kuaP3++jh49qsWLF+urr77S8OHDlZSUpNzcXN10003q1KmThg8froKCAlVWViozM1Nvvvnm\nac8pAQCA2tW4B11UVKR27drpwQcflMPh0IQJE/TGG28oKSlJktStWzcVFRXJarUqMTFRoaGhCg0N\nVWxsrLZu3aqOHTs2yEoAABBsagzo8vJy7d27VwsWLFBpaalGjhxZ7SrTyMhI2e12ORwORUdHVxt+\nNt8pBQAAp1djQDdr1kxxcXEKCQlR27Zt1bhxY+3fv9/3vsPhUExMjKKioqrduMDpdComJqbGBXu9\nXr6LCADAGdQY0Ndff71efvllDRs2TPv27dPPP/+s3//+9yopKVHnzp1VWFio5ORkJSQkKC8vTy6X\nS5WVldqxY4fi4+NrXLDFYlFZmb1eVwanstmi6bOf0WP/o8f+R48bhs0WXftI/1+NAZ2SkqKNGzeq\nb9++8ng8ys3N1ZVXXqmcnBy53W7FxcUpNTVVFotFQ4YM0YABA+TxeJSVlcUFYgAA1EFAvwfN1pr/\nsVXsf/TY/+ix/9HjhnE
"text/plain": [
"<matplotlib.figure.Figure at 0x1132fcd90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Get the unique values of Embarked and its maximum\n",
"family_sizes = np.sort(df_train['FamilySize'].unique())\n",
"family_size_max = max(family_sizes)\n",
"\n",
"df1 = df_train[df_train['Survived'] == 0]['FamilySize']\n",
"df2 = df_train[df_train['Survived'] == 1]['FamilySize']\n",
"plt.hist([df1, df2], \n",
" bins=family_size_max + 1, \n",
" range=(0, family_size_max), \n",
" stacked=True)\n",
"plt.legend(('Died', 'Survived'), loc='best')\n",
"plt.title('Survivors by Family Size')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Normalized Plots"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x113ccbc50>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nv/22Pv/8c9WoUaPQDSk
"text/plain": [
"<matplotlib.figure.Figure at 0x113b53b90>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nuo/e3t5q1aqVJKlu3bpq2rSpvvzyS7Vr107ffvutoqOjdfHiRdf6zz77rPr376/IyEglJCSoS5cu\nstlsGjRokL777jstXbpUP//8s44cOZKnzt/69WHzzMxMjR07Vl5eXmrdurUkqXbt2oqJidFnn32m\nEydOKDExUZmZmZJyj9gTExOVkpKiESNGuOZ5eXnp8OHDuvfee/NsNywsTJLUuHFj3X///dq7d6+6\ndOmi6dOn69ChQ0pOTlbdunV133335Vt3RESE/Pz85HQ65e3trdDQUHXt2lWSNHPmzHzr7datm8aP\nH699+/apffv2mjhxoiwWS4Hzt2zZon379rmOtOTk5CgrK8tVwy9/14oVK6p+/fq6dOmSfvjhB3Xo\n0EE1a9aUJA0cOFCxsbGSVGh7v3zmv+Xl5aWcnJx8l/1WrVq1bnv/J02axCH4Morwhkfl5OSoUqVK\nio+Pd81LSUlRpUqVlJiYKF9f31zre3vn7bJfffWVZsyYoRdeeEFBQUFq2LCh/vWvf+Vax+l0Frid\n39YTFRWl8ePHq1mzZmrWrJmGDBmit99+WytXrlTnzp1lsVhyhZ3D4XD97OPjIy+v/97E0b9/f8XH\nx+vChQvq1q2bypcvn2t7tWvX1kMPPaSvvvpKa9eu1cSJEyVJs2bN0r59+xQSEqJ27dopJyenSOeW\nf1mnfPnyevPNN9WzZ08tXbpUw4YN04EDBzRixAgNHTpUHTp0UJs2bTRlypQ8beTk5KhRo0ZatWqV\na15ycnKBF6X9en8Nw5C3t7e8vLwUFhamf/7zn0pJSXEFfH5+fc77125Wb6dOnbR+/Xp988032rFj\nhxYuXKi4uLgC5xuGoZdeeslVx/Xr13Xp0iXXtvz8/PJ8jt7e3nI6na55v77YsrD2KlSokO++tmzZ\nUh999JGcTmeuz+3777/Xxx9/rDfffNMt+1+3bt0CP3+YE7eKwaMaNGggX19fV9iePXtWffr00Q8/\n/FCk3zcMQ9988406d+6ssLAwPfzww9q0aZPrP91fwqyo27FarTpx4oRiY2NdoexwOJSUlOQKmICA\nAO3bt0/Sf0epBQkKCtL+/fu1evXqAq9WDw0N1TvvvKOsrCzXqH379u0aPHiwevfurYCAAH3zzTe5\ngqQoKlWqpPHjxys2NlbJycn67rvv1Lx5cw0ZMkStW7fO9TlZrVbX/rZs2VJJSUnatWuXJOnQoUPq\n0aNHgfu5du1aSTfCJikpyXWEoH///tq0aZN++OEH10i6OG5W77hx4/Q///M/6tmzp6KiomSz2XT2\n7Nl85587d04dOnTQqlWrlJ6eLkmKjY1VZGSka1u//WJksVjUoUMH7dixQ8nJyZKk1atXu5YXt71f\ntGzZUg0aNFB0dLTrvPSFCxc0bdq0XAFrGMYd3X+UPYy8USIKOnTn6+urRYsWafr06XrvvfeUnZ2t\n0aNHq1WrVtq5c2eR2g0LC1NERISeeeYZVapUSU8++aSWLl0qwzBc2/Xx8SlwO781f/58zZo1S927\nd1eFChXkdDrVtWtXvfL
"text/plain": [
"<matplotlib.figure.Figure at 0x113c19f10>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAe8AAAFxCAYAAABa5SD+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl0FGW+xvGnu5OwdViCIQ6yGBSDg14WQUFFZScsgUAI\nGSUsAjoXZJPMBYQbNjEBBEcIKi6gIBhghKhxGBAB8SIyKIKAIogYwhaWBCQL0EnX/YNDD5GEDphO\np8L3c47npKuq3/pV8R6ffmu1GIZhCAAAmIbV2wUAAIAbQ3gDAGAyhDcAACZDeAMAYDKENwAAJkN4\nAwBgMoQ3vOrIkSNq0KCB+vbte8288ePHq0GDBjp79ux12xg3bpwWLlx4Q+vNzMzUxIkT1a1bN3Xv\n3l3h4eFauXLlDbVxPWlpaYqKirrp77dp00Z79+69Zvq4ceP02GOPqUePHurRo4fCwsLUrl07vf32\n227bTE1N1YgRI264lgYNGujMmTM3/L0r2rRpo06dOqlHjx4KDw9X165dFRcXp7J8l+rFixf197//\nXeHh4erRo4e6deumt956yzU/Ojpaa9eu9WKFMDsfbxcAlCtXTr/++quOHTummjVrSpKys7P17bff\nymKxuP2+xWIp0nJXmz17tux2uz755BNJ0smTJ9WnTx/dcccdevjhh298I34nKChIiYmJf7id37NY\nLBo4cKAGDhzomnb8+HF17txZbdu2VXBwcKHfPXbsmA4dOnRT6/2jQTt79mw1bNhQkuRwOBQdHa1l\ny5bpqaee+kPtlkaGYWjo0KGqV6+eli9fLj8/P509e1bPPvuscnJyXD+gbrTPAldj5A2vs1qt6ty5\nsytIJWndunVq27atKzScTqdefPFFRUZGqkuXLurcubN27NjhWv7KcgcPHtSgQYPUs2dP9ejRQx9+\n+GGB6zx9+rQuXLggh8MhSapRo4YSEhJUp04dSZdHi3v27HEtf2UkfOTIET3++OMaNGiQOnbsqPHj\nx2vatGmu5TZv3qzIyEgdPXpUTZo0kWEYevzxx/O1NXr0aCUmJur06dMaOnSooqKi1LZtW0VHRys9\nPd3t/vp9kB4/flySVKlSJUnSG2+8od69eyssLEzt27fX+vXr5XQ6NXHiRB0+fFiDBw+WJO3YsUNP\nPfWUevbsqV69emnTpk2FrvPVV1917dMryw0cOFArVqxwLfP6668rLi7Obf2+vr5q2rSp64dEQfVK\nl/8to6Ki1LNnT/Xs2VPLli277vQrNVypc9iwYTp58qSkyyPdOXPmqG/fvmrTpo3+53/+x7UfV61a\npdDQUIWHhys+Pt71I8Nde8OHD1eXLl20dOnSfNu3fft2HTp0SC+88IL8/PwkSVWrVtXMmTPVvHnz\na/ZHcW4/biEG4EWpqalG48aNjT179hidO3d2TR8wYICxf/9+IyQkxMjIyDB27NhhjBw50jV/wYIF\nxrPPPmsYhmGMGzfOWLhwoZGbm2t07tzZ2Lt3r2EYhvHbb78ZoaGhxs6dO69Z7759+4wOHToYTZs2\nNQYNGmTMnz/fOHTokGt+69atjT179lzzOTU11QgJCTG++eYbwzAM4/Dhw0aLFi0Mh8NhGIZhjBw5\n0li5cqVruwzDMObOnWtMnTrVMAzDOHv2rPHggw8a58+fN9577z3jrbfecq1jyJAhxsKFCwtc/xVj\nx441WrVqZXTv3t1o166d8dBDDxlDhw41tm3bZhiGYRw5csTo37+/cfHiRcMwDCM5Odno2rWrYRiG\nsW3bNtffZ8+eNTp27GgcPXrUMAzDOHHihPH4448bx44du2adISEhrjr3799vPPjgg8aZM2eMzz77\nzIiIiDAMwzDy8vKMNm3a5NuHV++73bt3uz6fOHHCCA0NNdatW2ccPXrU6NevX4H1jh8/3liwYIFh\nGIZx6tQp4/nnnzecTmeh01evXm2MHj3ayM3NNQzDMBITE40hQ4YYhmEYffv2NUaNGmUYhmFkZmYa\nrVq1MrZt22YcOHDAePjhh40TJ04YhmEY8+bNMxo0aGAYhuG2vQkTJlyzrYZhGO+8845rXYXp27ev\nsXbt2mLZ/tGjRxtOp/O660PZw2FzlAoNGzaU1WrV3r17FRAQoKysLNWvX981v0mTJqpataqWLVum\n1NRU/fvf/5bdbs/XxqFDh5SamqoXXnjBNe3SpUv68ccf1ahRo3zLhoSEaO3atdq7d6+2b9+uLVu2\n6I033tCrr76q1q1bX7dWHx8fNWnSRJJUu3ZtNWjQQJ9//rlatGihr7/+WnFxcfnOEffs2VO9e/fW\nuHHjlJycrDZt2shut6tfv3765ptvtGjRIv366686cODANXX+3tWHzXNycjR69GhZrVY1a9ZMknTH\nHXcoPj5eH330kQ4fPqydO3cqJydHUv4R+86dO3Xq1CkNHTrUNc1qtWr//v3605/+dM16r5y/r1+/\nvu6++27t2rVLbdq00fTp07Vv3z6lpaWpdu3auvPOOwusOyYmRuXLl5fT6ZSPj48iIyPVvn17SdKM\nGTMKrLdDhw4aO3asdu/erZYtW2rChAmyWCyFTt+4caN2796tXr16SZLy8vJ08eJFVw1X/l0rVaqk\nunXr6uzZs/rhhx/06KOPKigoSJLUt29fJSQkSJLb9q7s89+zWq3Ky8srcN7v1axZ8w9v/8SJEzkE\nfwsivFFqhIWF6eOPP1ZAQIC6d++eb96mTZv00ksv6emnn1a7du1Ur149ffzxx/mWcTqdqly5spKS\nklzTTp06pcqVK+dbLi8vT7GxsRo7dqwaNmyohg0basCAAXr99de1fPlytW7dWhaLJV/YXTm8Ll0+\n7Gu1/ueMU+/evZWUlKTTp0+rQ4cOqlChQr713XHHHfrzn/+sTZs2afXq1ZowYYIkadasWdq9e7ci\nIiLUokUL5eXlFenc8pVlKlSooJkzZ6pz585atGiRBg0apL1792ro0KEaOHCgHn30UTVv3lyTJ0++\npo28vDzddddd+Q57p6WlqXr16gWu8+rtNQxDPj4+slqtioqK0j/+8Q+dOnXquhfoXX3O+2rXq/eJ\nJ57Q2rVr9dVXX2nr1q2aP3++EhMTC51uGIaeeeYZVx2XLl3Kd7Fj+fLlr9mPPj4+cjqdrmk2my3f\n/Ou1V7FixQK3tXHjxlq8eLGcTme+/fb999/r/fff18yZMz2y/bVr1y50/6Ps4Zw3So2wsDCtWbNG\n//znP9WtWzfXdMMw9NVXX6l169aKiorSfffd5zqPe2W+JAUHB8vPz88V6sePH1f37t31ww8/5FuP\nzWbT4cOHlZCQ4Aplh8OhlJQUV8AEBARo9+7dkv4zSi1Mu3bttGfPHq1cuVK9e/cucJnIyEi9+eab\nunjxomvUvmXLFvXv319hYWEKCAjQV199lS9IiqJy5coaO3asEhISlJaWpm+++Ub333+/BgwYoGbN\nmuXbTzabzbW9jRs3VkpKirZv3y5J2rdvnzp16lTodq5evVrS5bBJSUlxHSHo3bu31q9frx9++ME1\nkr4R16t3zJgx+uc//6nOnTsrNjZWdrtdx48fL3D6iRMn9Oijj2rFihXKzMyUJCUkJGjcuHGudf3+\nh5HFYtGjjz6qrVu3Ki0tTZLy3XFwo+1d0bhxYwUHBysuLk6XLl2SdPkai2nTpuULWMMwinX7cWth\n5A2vu3LILygoSHfffbf8/f1do+UrV5JHRUUpJiZGPXr0UOXKldW2bVstWrRIhmG4vu/r66vXXntN\n06dP19tvv63c3FyNHDnSFZZXmzt3rmbNmqWOHTuqYsWKcjqdat++vYYNGybp8mHeyZMna/ny5WrY\nsKHuu+++a+q9ws/PT126dNHWrVt1//33F7hcmzZtNGXKFA0ZMsQ1bdiwYZo5c6YWLFiggIAAdezY\nUSkpKUXeX1d069ZNK1as0MyZM/XCCy9o3bp16tq1q6pWrarOnTsrOTlZ2dnZuueee2Sz2RQZGakV\nK1a49sHFixfldDo1a9a
"text/plain": [
"<matplotlib.figure.Figure at 0x113cc3d90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pclass_xt = pd.crosstab(df_train['Pclass'], df_train['Survived'])\n",
"\n",
"# Normalize the cross tab to sum to 1:\n",
"pclass_xt_pct = pclass_xt.div(pclass_xt.sum(1).astype(float), axis=0)\n",
"\n",
"pclass_xt_pct.plot(kind='bar', \n",
" stacked=True, \n",
" title='Survival Rate by Passenger Classes')\n",
"plt.xlabel('Passenger Class')\n",
"plt.ylabel('Survival Rate')\n",
"\n",
"# Plot survival rate by Sex\n",
"females_df = df_train[df_train['Sex'] == 'female']\n",
"females_xt = pd.crosstab(females_df['Pclass'], df_train['Survived'])\n",
"females_xt_pct = females_xt.div(females_xt.sum(1).astype(float), axis=0)\n",
"females_xt_pct.plot(kind='bar', \n",
" stacked=True, \n",
" title='Female Survival Rate by Passenger Class')\n",
"plt.xlabel('Passenger Class')\n",
"plt.ylabel('Survival Rate')\n",
"\n",
"# Plot survival rate by Pclass\n",
"males_df = df_train[df_train['Sex'] == 'male']\n",
"males_xt = pd.crosstab(males_df['Pclass'], df_train['Survived'])\n",
"males_xt_pct = males_xt.div(males_xt.sum(1).astype(float), axis=0)\n",
"males_xt_pct.plot(kind='bar', \n",
" stacked=True, \n",
" title='Male Survival Rate by Passenger Class')\n",
"plt.xlabel('Passenger Class')\n",
"plt.ylabel('Survival Rate')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Scatter Plots, subplots"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x113f4d710>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAmgAAAJoCAYAAADS7x1JAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlclOX6x/HPsAkIShjapmYezTweLbc0l8yDuyiILC64\n5ZLl0dxNBcXllJp5TO1nVqZpCRVoZprr6VBqLpV5bNVOuaShpSIoyDLz+2OGQRhcAJ0Zm+/79ZqX\nzjXMw8UF+lzcz3Pft8FkMpkQEREREafh5ugERERERKQwNWgiIiIiTkYNmoiIiIiTUYMmIiIi4mTU\noImIiIg4GTVoIiIiIk5GDZqI3LADBw7Qr18/unXrRkhICEOGDOHIkSM37fgJCQksW7bsph3vRrRt\n25aDBw+W6Rg//PADderUuSW5T5o0idatWxMaGkpYWBghISE8/fTTnD17FjDn/80331zzGAcPHmTa\ntGk3PTcRuXU8HJ2AiNwesrOzGTZsGCtWrOChhx4CYP369QwZMoQdO3ZgMBjK/Dmio6PLfIzSKOty\nkGvWrCEkJIR33nmHJ598End395uUGRgMBgYOHMjAgQOtsTlz5jB9+nRefvnlGzrGkSNHSE1NvWk5\nicitpxE0EbkhmZmZZGRkcPHiRWusW7duxMXFkZuby549ewgJCbG+duXzRYsW8eSTT9KtWzfGjh1L\nmzZtOHTokPVjR48ezZo1a1i0aBEzZ85k586dhY514cIFmjZtSnp6OocPHyYmJoZu3brRvXt31q1b\nZ/183bp1Izo6mtDQUDIyMhg5ciShoaH06NGD2NjYqzZiCQkJ9OjRg65du5KUlATA1KlTWbBggfVj\n1q9fz4gRI2zem5GRwYcffshTTz2Fv78/H3/8caGaTZgwgQ4dOhAREcGkSZN47rnnAEhNTWXEiBH0\n6NGDbt268eqrr97w96JZs2b8/PPPNvHExERCQkLo3r07Tz75JL/88gunTp3i5ZdfZv/+/UyePPmG\nP4eIOJYaNBG5IRUrVmT8+PEMHjyY4OBgJkyYQFJSEs2bN8fT0/O67z916hTr1q1j/vz5hIeHs3bt\nWgDS0tLYtWsXISEhGAwGDAYDLVq04NKlS9YmbsOGDbRp0wZfX1+GDx9O//79Wb9+Pa+99hoLFizg\nwIEDgHmkaMGCBaxbt45t27Zx6dIl1q1bx/vvvw/AiRMnis3Nx8eH5ORkli9fzvz58zly5Ah9+/Yl\nOTkZo9EImJufXr162bx3/fr11KhRg5o1axIaGsrKlSutr73yyisYjUY2b97Mm2++yXfffWd9bfz4\n8YSHh5OcnMx7773Hzp072bRpU7H5XdlYZmVlsW7dOh599NFCH7N7927eeOMN3nrrLT744AO6du3K\nM888w913382oUaNo3Lgx//znP6/9TRIRp6EGTURu2IABA9i1axdTp04lKCiI1157zTpadT0NGjTA\nzc38X054eDibNm0iJyeHDRs20LZtW/z8/DCZTNZmpGfPntYmLjk5mYiICH7++Weys7MJDg4GoHLl\nyrRv355PP/0Ug8HAXXfdxd133w1A48aNOXLkCDExMSxbtoz+/ftTtWrVYnOLioqyHq9ly5bs3r2b\nOnXqcN999/Hvf/+bn376iTNnztCiRQub965Zs4bQ0FAAQkJC+Oabb6wNY0pKCj179gTAz8+PsLAw\nwDyytm/fPhYuXEhoaChRUVGkpqby/fff2xzfZDKxYsUKQkNDCQ0NJSIigsDAQMaOHVvoYz799FM6\nd+7MHXfcAUBYWBipqamcOHGizJdwRcT+dA+aiNyQL774gq+++orBgwfTpk0b2rRpw5gxYwgJCWHX\nrl0EBAQUagRycnIKvd/X19f693vuuYe6devyySefsHbtWqZMmQJQ6D62Hj16EBYWRkREBOnp6TRp\n0oQff/zRJi+j0Uhubi4A5cuXt8bvu+8+tmzZwt69e/n8888ZMGAAsbGxdOjQweYY+Y1j/vHyRwT7\n9OlDUlIS999/v7WJu9L+/fs5cuQIr7/+OsuXLwfA09OTFStW8K9//Qt3d/dCNcn/+vLy8gDzqFy5\ncuUAOHv2LN7e3jafo7h70IpzZXN7ZSz/c4nI7UUjaCJyQwIDA1m6dCn79u2zxlJTU8nMzKR27doE\nBgZy8uRJzp49i8lkYtu2bdc8XmRkJMuWLePy5cs88sgjQOFLeVWqVKF+/frExcURGRkJQI0aNfD0\n9GTr1q3Wz79lyxZatGhh05y88847PPfcc7Rs2ZJx48bRqlUrDh8+XGwuycnJAJw8eZLdu3fTvHlz\nADp06MB3333H1q1bCQ8Pt3lf/ujZJ598wo4dO9ixYwdLly5l69atnDp1ijZt2pCUlITJZCIzM5MN\nGzZgMBjw8/OjQYMG1qYuPT2dPn36sGPHjmLzu94ImMFgoFWrVmzatMk6uzMpKYk77riD6tWr4+7u\nbtMwi4hz0wiaiNyQGjVqsGTJEhYuXMjJkyfx8fHB39+fmTNncv/99wPmS4Xh4eEEBQXRpk0b63vz\n7y27Utu2bYmPj2fIkCFX/bjIyEhGjRrF0qVLAfPo1JIlS5g9ezaLFi0iLy+PESNG0LRpU/bs2VPo\n+GFhYezbt4/OnTvj4+PDvffeS//+/Yv92nJycggLCyM3N5fY2FiqV69u/XwdOnTgjz/+ICAgoNB7\nzp49y9atW63NXb5mzZrx8MMPs3r1akaOHMmMGTMICQnBz8+PSpUq4ePjA8D8+fOZOXMmISEh5OTk\n0LVrV7p27VpsfjcyQ/axxx6jf//+9O/fH5PJRGBgoHXiQcOGDVm4cCH/+Mc/WLRo0XWPJSKOZzDp\n5gQRkWJdunSJvn37Mn36dOrXr1/i92/cuJHy5cvz+OOPYzQaGTlyJC1btnTYciIicvvQJU4RkWJ8\n+umnPPHEEzRr1qxUzRlArVq1WLp0KaGhoYSEhFClShUiIiJucqYi8mekETQRERERJ6MRNBEREREn\nowZNRERExMnclrM4c3PzOHfukqPTuG3dcYev6lcGql/pqXZlo/qVjepXeqpd2QQF+Zf4PbflCJqH\nx83biNgVqX5lo/qVnmpXNqpf2ah+pafa2d9t2aCJiIiI/JmpQRMRERFxMmrQRERERJyMGjQRERER\nJ6MGTURERMTJqEETERERcTJq0EREREScjBo0ERERESejBk1ERETEyahBExEREXEyatBEREREnIwa\nNBEREREnowZNRERExMmoQRMRERFxMmrQRERERJyMGjQRERERJ6MGTURERMTJqEETERERcTJq0ERE\nREScjIe9P6HRaGTKlCn88ssvuLm5MXPmTNzd3Zk0aRJubm7UqlWLadOmYTAY7J2aiIiIiFOwe4P2\n2WefkZmZyZo1a9i1axcLFiwgNzeXMWPG0KRJE6ZNm8b27dsJDg62d2oiIiJyhaysLBISUvD396ZL\nl6Z4e3s7OiWXYfdLnN7e3qSnp2MymUhPT8fT05NvvvmGJk2aANC6dWt27dpl77RERETkCllZWURF\nrWXChG4MH96eqKi1ZGVlOTotl2H3Bq1hw4ZkZ2fTsWNH4uLiiImJwWQyWV/39fUlPT3d3mmJiIjI\nFRISUti9eyDgCXiye/cAEhJSHJ2Wy7D7Jc7XX3+dhg0bMnr0aH777Tf69etHbm6u9fWLFy9SoUKF\n6x4nKMj/Vqb5p6f6lY3qV3qqXdmofmWj+t04f3/by5n+/t6qoZ3YvUHLzMykfPnyAFSoUIHc3Fzq\n1q3L3r17adq0KSkpKTRv3vy6xzlzRqNspRUU5K/6lYHqV3qqXdmofmWj+pVMly5Nad78TXbvHgBA\n8+Yr6NIlTDUshdI0tQbTldcX7eDChQs899xznDt3jtzcXPr3789f//pXYmNjycnJoWbNmsyaNeu6\nszj1A1J6+k+qbFS/0lPtykb1KxvVr+Q0SeDmuC0atJtF/8hKT/9JlY3qV3qqXdmofmWj+pWealc2\npWnQtFCtiIiIiJNRgyY
"text/plain": [
"<matplotlib.figure.Figure at 0x113b53250>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Set up a grid of plots\n",
"fig, axes = plt.subplots(2, 1, figsize=figsize_with_subplots)\n",
"\n",
"# Histogram of AgeFill segmented by Survived\n",
"df1 = df_train[df_train['Survived'] == 0]['Age']\n",
"df2 = df_train[df_train['Survived'] == 1]['Age']\n",
"max_age = max(df_train['AgeFill'])\n",
"\n",
"axes[1].hist([df1, df2], \n",
" bins=max_age / 10, \n",
" range=(1, max_age), \n",
" stacked=True)\n",
"axes[1].legend(('Died', 'Survived'), loc='best')\n",
"axes[1].set_title('Survivors by Age Groups Histogram')\n",
"axes[1].set_xlabel('Age')\n",
"axes[1].set_ylabel('Count')\n",
"\n",
"# Scatter plot Survived and AgeFill\n",
"axes[0].scatter(df_train['Survived'], df_train['AgeFill'])\n",
"axes[0].set_title('Survivors by Age Plot')\n",
"axes[0].set_xlabel('Survived')\n",
"axes[0].set_ylabel('Age')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Kernel Density Estimation Plots"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x113175ed0>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\na9fO++fFl/LOFB4eztK
"text/plain": [
"<matplotlib.figure.Figure at 0x113175d50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Get the unique values of Pclass:\n",
"passenger_classes = np.sort(df_train['Pclass'].unique())\n",
"\n",
"for pclass in passenger_classes:\n",
" df_train.AgeFill[df_train.Pclass == pclass].plot(kind='kde')\n",
"plt.title('Age Density Plot by Passenger Class')\n",
"plt.xlabel('Age')\n",
"plt.legend(('1st Class', '2nd Class', '3rd Class'), loc='best')"
]
}
],
"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.10"
}
},
"nbformat": 4,
"nbformat_minor": 0
}