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

246 lines
57 KiB
Plaintext
Raw Normal View History

{
"metadata": {
"name": "",
"signature": "sha256:08003effc72ed7242f0098f883755ff31312100e58bf63705b8a1b8c45afc8a4"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# matplotlib"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Setting Global Parameters\n",
"* Bar Plots, Histograms, subplot2grid\n",
"* Normalized Plots\n",
"* Scatter Plots, subplots\n",
"* Kernel Density Estimation Plots"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pandas as pd\n",
"import numpy as np\n",
"import pylab as plt"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Prepare data to plot:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"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 = 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 = 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[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)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Setting Global Parameters"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Set the global default size of matplotlib figures\n",
"plt.rc('figure', figsize=(10, 5))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Bar Plots, Histograms, subplot2grid"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# 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')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"text": [
"<matplotlib.text.Text at 0x10a5bfe10>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nurTvICXJfpVNv/+E3ynnhb2U
"text": [
"<matplotlib.figure.Figure at 0x1057ff910>"
]
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Get the unique values of Embarked and its maximum\n",
"family_sizes = 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')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"text": [
"<matplotlib.text.Text at 0x10a896c50>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n9957L5nJH/7wB2655RbWrVvH
"text": [
"<matplotlib.figure.Figure at 0x1057fcf90>"
]
}
],
"prompt_number": 5
}
],
"metadata": {}
}
]
}