Skip to content

Instantly share code, notes, and snippets.

@vitillo
Created September 30, 2015 17:26
Show Gist options
  • Save vitillo/80381287362901d7d2ec to your computer and use it in GitHub Desktop.
Save vitillo/80381287362901d7d2ec to your computer and use it in GitHub Desktop.
Telemetry tutorial
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{"nbformat_minor": 0, "cells": [{"source": "# Pandas Tutorial\n\nCredits: The following are notes taken while working through [Python for Data Analysis](http://www.amazon.com/Python-Data-Analysis-Wrangling-IPython/dp/1449319793) by Wes McKinney\n\n* Series\n* DataFrame\n* Dropping Entries\n* Indexing, Selecting, Filtering\n* Summarizing and Computing Descriptive Statistics\n* Split-apply-combine", "cell_type": "markdown", "metadata": {}}, {"execution_count": 60, "cell_type": "code", "source": "from pandas import Series, DataFrame\nimport pandas as pd\nimport numpy as np\n%pylab inline", "outputs": [{"output_type": "stream", "name": "stdout", "text": "Populating the interactive namespace from numpy and matplotlib\n"}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "## Series\n\nA Series is a one-dimensional array-like object containing an array of data and an associated array of data labels. The data can be any NumPy data type and the labels are the Series' index.", "cell_type": "markdown", "metadata": {}}, {"source": "Create a Series:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 4, "cell_type": "code", "source": "ser_1 = Series([1, 1, 2, -3, -5, 8, 13])\nser_1", "outputs": [{"execution_count": 4, "output_type": "execute_result", "data": {"text/plain": "0 1\n1 1\n2 2\n3 -3\n4 -5\n5 8\n6 13\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Get the array (numpy) representation of a Series:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 5, "cell_type": "code", "source": "ser_1.values", "outputs": [{"execution_count": 5, "output_type": "execute_result", "data": {"text/plain": "array([ 1, 1, 2, -3, -5, 8, 13])"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Index objects are immutable and hold the axis labels and metadata such as names and axis names.\n\nGet the index of the Series:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 6, "cell_type": "code", "source": "ser_1.index", "outputs": [{"execution_count": 6, "output_type": "execute_result", "data": {"text/plain": "Int64Index([0, 1, 2, 3, 4, 5, 6], dtype='int64')"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Create a Series with a custom index:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 21, "cell_type": "code", "source": "ser_2 = Series([1, 1, 2, -3, -5], index=['a', 'b', 'c', 'd', 'e'])\nser_2", "outputs": [{"execution_count": 21, "output_type": "execute_result", "data": {"text/plain": "a 1\nb 1\nc 2\nd -3\ne -5\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Get a value from a Series:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 8, "cell_type": "code", "source": "ser_2[4] == ser_2['e']", "outputs": [{"execution_count": 8, "output_type": "execute_result", "data": {"text/plain": "True"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Get a set of values from a Series by passing in a list:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 9, "cell_type": "code", "source": "ser_2[['c', 'a', 'b']]", "outputs": [{"execution_count": 9, "output_type": "execute_result", "data": {"text/plain": "c 2\na 1\nb 1\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Get values great than 0:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 10, "cell_type": "code", "source": "ser_2[ser_2 > 0]", "outputs": [{"execution_count": 10, "output_type": "execute_result", "data": {"text/plain": "a 1\nb 1\nc 2\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Get values between 0 and 1", "cell_type": "markdown", "metadata": {}}, {"execution_count": 22, "cell_type": "code", "source": "ser_2[(ser_2 > 0) & (ser_2 <= 1)]", "outputs": [{"execution_count": 22, "output_type": "execute_result", "data": {"text/plain": "a 1\nb 1\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Scalar multiply:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 11, "cell_type": "code", "source": "ser_2 * 2", "outputs": [{"execution_count": 11, "output_type": "execute_result", "data": {"text/plain": "a 2\nb 2\nc 4\nd -6\ne -10\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Apply a numpy math function:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 17, "cell_type": "code", "source": "np.exp(ser_2)", "outputs": [{"execution_count": 17, "output_type": "execute_result", "data": {"text/plain": "a 2.718282\nb 2.718282\nc 7.389056\nd 0.049787\ne 0.006738\ndtype: float64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "A Series is like a fixed-length, ordered dict. \n\nCreate a series by passing in a dict:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 13, "cell_type": "code", "source": "dict_1 = {'foo' : 100, 'bar' : 200, 'baz' : 300}\nser_3 = Series(dict_1)\nser_3", "outputs": [{"execution_count": 13, "output_type": "execute_result", "data": {"text/plain": "bar 200\nbaz 300\nfoo 100\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Series automatically aligns differently indexed data in arithmetic operations:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 15, "cell_type": "code", "source": "ser_3 + ser_4", "outputs": [{"execution_count": 15, "output_type": "execute_result", "data": {"text/plain": "bar 400\nbaz 600\nfoo 200\nqux NaN\ndtype: float64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Name a Series:", "cell_type": "markdown", "metadata": {}}, {"source": "Rename a Series' index in place:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 16, "cell_type": "code", "source": "ser_4.index = ['fo', 'br', 'bz', 'qx']\nser_4", "outputs": [{"execution_count": 16, "output_type": "execute_result", "data": {"text/plain": "fo 100\nbr 200\nbz 300\nqx NaN\ndtype: float64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "## DataFrame\n\nA DataFrame is a tabular data structure containing an ordered collection of columns. Each column can have a different type. DataFrames have both row and column indices and is analogous to a dict of Series. Row and column operations are treated roughly symmetrically. Columns returned when indexing a DataFrame are views of the underlying data, not a copy. To obtain a copy, use the Series' copy method.\n\nCreate a DataFrame:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 25, "cell_type": "code", "source": "data_1 = {'state' : ['VA', 'VA', 'VA', 'MD', 'MD'],\n 'year' : [2012, 2013, 2014, 2014, 2015],\n 'pop' : [5.0, 5.1, 5.2, 4.0, 4.1]}\ndf_1 = DataFrame(data_1)\ndf_1", "outputs": [{"execution_count": 25, "output_type": "execute_result", "data": {"text/plain": " pop state year\n0 5.0 VA 2012\n1 5.1 VA 2013\n2 5.2 VA 2014\n3 4.0 MD 2014\n4 4.1 MD 2015", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>pop</th>\n <th>state</th>\n <th>year</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 5.0</td>\n <td> VA</td>\n <td> 2012</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 5.1</td>\n <td> VA</td>\n <td> 2013</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 5.2</td>\n <td> VA</td>\n <td> 2014</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 4.0</td>\n <td> MD</td>\n <td> 2014</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 4.1</td>\n <td> MD</td>\n <td> 2015</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Create a DataFrame specifying a sequence of columns:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 26, "cell_type": "code", "source": "df_2 = DataFrame(data_1, columns=['year', 'state', 'pop'])\ndf_2", "outputs": [{"execution_count": 26, "output_type": "execute_result", "data": {"text/plain": " year state pop\n0 2012 VA 5.0\n1 2013 VA 5.1\n2 2014 VA 5.2\n3 2014 MD 4.0\n4 2015 MD 4.1", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 2012</td>\n <td> VA</td>\n <td> 5.0</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 2014</td>\n <td> MD</td>\n <td> 4.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 2015</td>\n <td> MD</td>\n <td> 4.1</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Like Series, columns that are not present in the data are NaN:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 27, "cell_type": "code", "source": "df_3 = DataFrame(data_1, columns=['year', 'state', 'pop', 'unempl'])\ndf_3", "outputs": [{"execution_count": 27, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n0 2012 VA 5.0 NaN\n1 2013 VA 5.1 NaN\n2 2014 VA 5.2 NaN\n3 2014 MD 4.0 NaN\n4 2015 MD 4.1 NaN", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 2012</td>\n <td> VA</td>\n <td> 5.0</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 2014</td>\n <td> MD</td>\n <td> 4.0</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 2015</td>\n <td> MD</td>\n <td> 4.1</td>\n <td> NaN</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Retrieve a column by key, returning a Series:\n", "cell_type": "markdown", "metadata": {}}, {"execution_count": 28, "cell_type": "code", "source": "df_3['state']", "outputs": [{"execution_count": 28, "output_type": "execute_result", "data": {"text/plain": "0 VA\n1 VA\n2 VA\n3 MD\n4 MD\nName: state, dtype: object"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Retrive a column by attribute, returning a Series:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 29, "cell_type": "code", "source": "df_3.year", "outputs": [{"execution_count": 29, "output_type": "execute_result", "data": {"text/plain": "0 2012\n1 2013\n2 2014\n3 2014\n4 2015\nName: year, dtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Retrieve a row by position:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 30, "cell_type": "code", "source": "df_3.ix[0]", "outputs": [{"execution_count": 30, "output_type": "execute_result", "data": {"text/plain": "year 2012\nstate VA\npop 5\nunempl NaN\nName: 0, dtype: object"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Update a column by assignment:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 31, "cell_type": "code", "source": "df_3['unempl'] = np.arange(5)\ndf_3", "outputs": [{"execution_count": 31, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n0 2012 VA 5.0 0\n1 2013 VA 5.1 1\n2 2014 VA 5.2 2\n3 2014 MD 4.0 3\n4 2015 MD 4.1 4", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 2012</td>\n <td> VA</td>\n <td> 5.0</td>\n <td> 0</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n <td> 1</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> 2</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 2014</td>\n <td> MD</td>\n <td> 4.0</td>\n <td> 3</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 2015</td>\n <td> MD</td>\n <td> 4.1</td>\n <td> 4</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Assign a Series to a column (note if assigning a list or array, the length must match the DataFrame, unlike a Series):", "cell_type": "markdown", "metadata": {}}, {"execution_count": 32, "cell_type": "code", "source": "unempl = Series([6.0, 6.0, 6.1], index=[2, 3, 4])\ndf_3['unempl'] = unempl\ndf_3", "outputs": [{"execution_count": 32, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n0 2012 VA 5.0 NaN\n1 2013 VA 5.1 NaN\n2 2014 VA 5.2 6.0\n3 2014 MD 4.0 6.0\n4 2015 MD 4.1 6.1", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 2012</td>\n <td> VA</td>\n <td> 5.0</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 2014</td>\n <td> MD</td>\n <td> 4.0</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 2015</td>\n <td> MD</td>\n <td> 4.1</td>\n <td> 6.1</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Assign a new column that doesn't exist to create a new column:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 33, "cell_type": "code", "source": "df_3['state_dup'] = df_3['state']\ndf_3", "outputs": [{"execution_count": 33, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl state_dup\n0 2012 VA 5.0 NaN VA\n1 2013 VA 5.1 NaN VA\n2 2014 VA 5.2 6.0 VA\n3 2014 MD 4.0 6.0 MD\n4 2015 MD 4.1 6.1 MD", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n <th>state_dup</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 2012</td>\n <td> VA</td>\n <td> 5.0</td>\n <td> NaN</td>\n <td> VA</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n <td> NaN</td>\n <td> VA</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> 6.0</td>\n <td> VA</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 2014</td>\n <td> MD</td>\n <td> 4.0</td>\n <td> 6.0</td>\n <td> MD</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 2015</td>\n <td> MD</td>\n <td> 4.1</td>\n <td> 6.1</td>\n <td> MD</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Delete a column:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 34, "cell_type": "code", "source": "del df_3['state_dup']\ndf_3", "outputs": [{"execution_count": 34, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n0 2012 VA 5.0 NaN\n1 2013 VA 5.1 NaN\n2 2014 VA 5.2 6.0\n3 2014 MD 4.0 6.0\n4 2015 MD 4.1 6.1", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 2012</td>\n <td> VA</td>\n <td> 5.0</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 2014</td>\n <td> MD</td>\n <td> 4.0</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 2015</td>\n <td> MD</td>\n <td> 4.1</td>\n <td> 6.1</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "## Indexing, Selecting, Filtering", "cell_type": "markdown", "metadata": {}}, {"source": "Series indexing is similar to NumPy array indexing with the added bonus of being able to use the Series' index values.", "cell_type": "markdown", "metadata": {}}, {"execution_count": 35, "cell_type": "code", "source": "ser_2", "outputs": [{"execution_count": 35, "output_type": "execute_result", "data": {"text/plain": "a 1\nb 1\nc 2\nd -3\ne -5\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Select a value from a Series:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 36, "cell_type": "code", "source": "ser_2[0] == ser_2['a']", "outputs": [{"execution_count": 36, "output_type": "execute_result", "data": {"text/plain": "True"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Select a slice from a Series:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 37, "cell_type": "code", "source": "ser_2[1:4]", "outputs": [{"execution_count": 37, "output_type": "execute_result", "data": {"text/plain": "b 1\nc 2\nd -3\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Select specific values from a Series:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 32, "cell_type": "code", "source": "ser_2[['b', 'c', 'd']]", "outputs": [{"execution_count": 32, "output_type": "execute_result", "data": {"text/plain": "b 1\nc 2\nd -3\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Select from a Series based on a filter:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 33, "cell_type": "code", "source": "ser_2[ser_2 > 0]", "outputs": [{"execution_count": 33, "output_type": "execute_result", "data": {"text/plain": "a 1\nb 1\nc 2\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Select a slice from a Series with labels (note the end point is inclusive):", "cell_type": "markdown", "metadata": {}}, {"execution_count": 34, "cell_type": "code", "source": "ser_2['a':'b']", "outputs": [{"execution_count": 34, "output_type": "execute_result", "data": {"text/plain": "a 1\nb 1\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Assign to a Series slice (note the end point is inclusive):", "cell_type": "markdown", "metadata": {}}, {"execution_count": 35, "cell_type": "code", "source": "ser_2['a':'b'] = 0\nser_2", "outputs": [{"execution_count": 35, "output_type": "execute_result", "data": {"text/plain": "a 0\nb 0\nc 2\nd -3\ne -5\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Pandas supports indexing into a DataFrame.", "cell_type": "markdown", "metadata": {}}, {"execution_count": 39, "cell_type": "code", "source": "df_3", "outputs": [{"execution_count": 39, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n0 2012 VA 5.0 NaN\n1 2013 VA 5.1 NaN\n2 2014 VA 5.2 6.0\n3 2014 MD 4.0 6.0\n4 2015 MD 4.1 6.1", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 2012</td>\n <td> VA</td>\n <td> 5.0</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 2014</td>\n <td> MD</td>\n <td> 4.0</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 2015</td>\n <td> MD</td>\n <td> 4.1</td>\n <td> 6.1</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Select specified columns from a DataFrame:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 40, "cell_type": "code", "source": "df_3[['pop', 'unempl']]", "outputs": [{"execution_count": 40, "output_type": "execute_result", "data": {"text/plain": " pop unempl\n0 5.0 NaN\n1 5.1 NaN\n2 5.2 6.0\n3 4.0 6.0\n4 4.1 6.1", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 5.0</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 5.1</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 5.2</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 4.0</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 4.1</td>\n <td> 6.1</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Select a slice from a DataFrame:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 41, "cell_type": "code", "source": "df_3[:2]", "outputs": [{"execution_count": 41, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n0 2012 VA 5.0 NaN\n1 2013 VA 5.1 NaN", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 2012</td>\n <td> VA</td>\n <td> 5.0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Select from a DataFrame based on a filter:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 38, "cell_type": "code", "source": "df_3[df_3['pop'] > 5]", "outputs": [{"execution_count": 38, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n1 2013 VA 5.1 NaN\n2 2014 VA 5.2 6", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>1</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> 6</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Perform a scalar comparison on a DataFrame:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 39, "cell_type": "code", "source": "df_3 > 5", "outputs": [{"execution_count": 39, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n0 True True False False\n1 True True True False\n2 True True True True\n3 True True False True\n4 True True False True", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> True</td>\n <td> True</td>\n <td> False</td>\n <td> False</td>\n </tr>\n <tr>\n <th>1</th>\n <td> True</td>\n <td> True</td>\n <td> True</td>\n <td> False</td>\n </tr>\n <tr>\n <th>2</th>\n <td> True</td>\n <td> True</td>\n <td> True</td>\n <td> True</td>\n </tr>\n <tr>\n <th>3</th>\n <td> True</td>\n <td> True</td>\n <td> False</td>\n <td> True</td>\n </tr>\n <tr>\n <th>4</th>\n <td> True</td>\n <td> True</td>\n <td> False</td>\n <td> True</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Perform a scalar comparison on a DataFrame, retain the values that pass the filter:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 43, "cell_type": "code", "source": "df_3[df_3 > 5]", "outputs": [{"execution_count": 43, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n0 2012 VA NaN NaN\n1 2013 VA 5.1 NaN\n2 2014 VA 5.2 6.0\n3 2014 MD NaN 6.0\n4 2015 MD NaN 6.1", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 2012</td>\n <td> VA</td>\n <td> NaN</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 2014</td>\n <td> MD</td>\n <td> NaN</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 2015</td>\n <td> MD</td>\n <td> NaN</td>\n <td> 6.1</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Select a slice of rows from a DataFrame (note the end point is inclusive):", "cell_type": "markdown", "metadata": {}}, {"execution_count": 44, "cell_type": "code", "source": "df_3.ix[2:3]", "outputs": [{"execution_count": 44, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n2 2014 VA 5.2 6\n3 2014 MD 4.0 6", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> 6</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 2014</td>\n <td> MD</td>\n <td> 4.0</td>\n <td> 6</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Select a slice of rows from a specific column of a DataFrame:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 45, "cell_type": "code", "source": "df_3.ix[0:2, 'pop']\ndf_3", "outputs": [{"execution_count": 45, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n0 2012 VA 5.0 NaN\n1 2013 VA 5.1 NaN\n2 2014 VA 5.2 6.0\n3 2014 MD 4.0 6.0\n4 2015 MD 4.1 6.1", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 2012</td>\n <td> VA</td>\n <td> 5.0</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 2014</td>\n <td> MD</td>\n <td> 4.0</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 2015</td>\n <td> MD</td>\n <td> 4.1</td>\n <td> 6.1</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Select rows based on an arithmetic operation on a specific row:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 46, "cell_type": "code", "source": "df_3.ix[df_3.unempl > 5.0]", "outputs": [{"execution_count": 46, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n2 2014 VA 5.2 6.0\n3 2014 MD 4.0 6.0\n4 2015 MD 4.1 6.1", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 2014</td>\n <td> MD</td>\n <td> 4.0</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 2015</td>\n <td> MD</td>\n <td> 4.1</td>\n <td> 6.1</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "## Summarizing and Computing Descriptive Statistics", "cell_type": "markdown", "metadata": {}}, {"source": "Unlike NumPy arrays, Pandas descriptive statistics automatically exclude missing data. NaN values are excluded unless the entire row or column is NA.", "cell_type": "markdown", "metadata": {}}, {"execution_count": 47, "cell_type": "code", "source": "df_3", "outputs": [{"execution_count": 47, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n0 2012 VA 5.0 NaN\n1 2013 VA 5.1 NaN\n2 2014 VA 5.2 6.0\n3 2014 MD 4.0 6.0\n4 2015 MD 4.1 6.1", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 2012</td>\n <td> VA</td>\n <td> 5.0</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 2014</td>\n <td> MD</td>\n <td> 4.0</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 2015</td>\n <td> MD</td>\n <td> 4.1</td>\n <td> 6.1</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"execution_count": 48, "cell_type": "code", "source": "df_3.sum()", "outputs": [{"execution_count": 48, "output_type": "execute_result", "data": {"text/plain": "year 10068\nstate VAVAVAMDMD\npop 23.4\nunempl 18.1\ndtype: object"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "Sum over the rows:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 49, "cell_type": "code", "source": "df_3.sum(axis=1)", "outputs": [{"execution_count": 49, "output_type": "execute_result", "data": {"text/plain": "0 2017.0\n1 2018.1\n2 2025.2\n3 2024.0\n4 2025.2\ndtype: float64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "## Split-apply-combine", "cell_type": "markdown", "metadata": {}}, {"source": "Many data analysis problems involve the application of a split-apply-combine strategy,\nwhere you break up a big problem into manageable pieces, operate on each piece independently and then put all the pieces back together.", "cell_type": "markdown", "metadata": {}}, {"execution_count": 50, "cell_type": "code", "source": "df_3", "outputs": [{"execution_count": 50, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\n0 2012 VA 5.0 NaN\n1 2013 VA 5.1 NaN\n2 2014 VA 5.2 6.0\n3 2014 MD 4.0 6.0\n4 2015 MD 4.1 6.1", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td> 2012</td>\n <td> VA</td>\n <td> 5.0</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>1</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>2</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td> 2014</td>\n <td> MD</td>\n <td> 4.0</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td> 2015</td>\n <td> MD</td>\n <td> 4.1</td>\n <td> 6.1</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "The groupby operation creates a new dataframe for each group:", "cell_type": "markdown", "metadata": {}}, {"execution_count": 52, "cell_type": "code", "source": "df_3.groupby(\"state\").apply(lambda x: type(x))", "outputs": [{"execution_count": 52, "output_type": "execute_result", "data": {"text/plain": "state\nMD <class 'pandas.core.frame.DataFrame'>\nVA <class 'pandas.core.frame.DataFrame'>\ndtype: object"}, "metadata": {}}], "metadata": {"scrolled": true, "collapsed": false, "trusted": false}}, {"execution_count": 53, "cell_type": "code", "source": "df_3.groupby(\"state\").apply(lambda x: x.sum())", "outputs": [{"execution_count": 53, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\nstate \nMD 4029 MDMD 8.1 12.1\nVA 6039 VAVAVA 15.3 6.0", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n <tr>\n <th>state</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>MD</th>\n <td> 4029</td>\n <td> MDMD</td>\n <td> 8.1</td>\n <td> 12.1</td>\n </tr>\n <tr>\n <th>VA</th>\n <td> 6039</td>\n <td> VAVAVA</td>\n <td> 15.3</td>\n <td> 6.0</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "A pivot table is a spreadsheet feature that allows data tables to be rearranged in many ways for different views of the same data.", "cell_type": "markdown", "metadata": {}}, {"execution_count": 56, "cell_type": "code", "source": "df_3.groupby([\"state\", \"year\"]).apply(lambda x: x.sum())", "outputs": [{"execution_count": 56, "output_type": "execute_result", "data": {"text/plain": " year state pop unempl\nstate year \nMD 2014 2014 MD 4.0 6.0\n 2015 2015 MD 4.1 6.1\nVA 2012 2012 VA 5.0 NaN\n 2013 2013 VA 5.1 NaN\n 2014 2014 VA 5.2 6.0", "text/html": "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th></th>\n <th>year</th>\n <th>state</th>\n <th>pop</th>\n <th>unempl</th>\n </tr>\n <tr>\n <th>state</th>\n <th>year</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th rowspan=\"2\" valign=\"top\">MD</th>\n <th>2014</th>\n <td> 2014</td>\n <td> MD</td>\n <td> 4.0</td>\n <td> 6.0</td>\n </tr>\n <tr>\n <th>2015</th>\n <td> 2015</td>\n <td> MD</td>\n <td> 4.1</td>\n <td> 6.1</td>\n </tr>\n <tr>\n <th rowspan=\"3\" valign=\"top\">VA</th>\n <th>2012</th>\n <td> 2012</td>\n <td> VA</td>\n <td> 5.0</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>2013</th>\n <td> 2013</td>\n <td> VA</td>\n <td> 5.1</td>\n <td> NaN</td>\n </tr>\n <tr>\n <th>2014</th>\n <td> 2014</td>\n <td> VA</td>\n <td> 5.2</td>\n <td> 6.0</td>\n </tr>\n </tbody>\n</table>\n</div>"}, "metadata": {}}], "metadata": {"scrolled": true, "collapsed": false, "trusted": false}}, {"source": "## Plotting", "cell_type": "markdown", "metadata": {}}, {"execution_count": 58, "cell_type": "code", "source": "ser_2", "outputs": [{"execution_count": 58, "output_type": "execute_result", "data": {"text/plain": "a 1\nb 1\nc 2\nd -3\ne -5\ndtype: int64"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"execution_count": 86, "cell_type": "code", "source": "ser_2.plot()", "outputs": [{"execution_count": 86, "output_type": "execute_result", "data": {"text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x7fee3b489490>"}, "metadata": {}}, {"output_type": "display_data", "data": {"image/png": "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\n", "text/plain": "<matplotlib.figure.Figure at 0x7fee3b401b90>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"execution_count": 62, "cell_type": "code", "source": "help(ser_2.plot)", "outputs": [{"output_type": "stream", "name": "stdout", "text": "Help on method plot_series in module pandas.tools.plotting:\n\nplot_series(data, kind='line', ax=None, figsize=None, use_index=True, title=None, grid=None, legend=False, style=None, logx=False, logy=False, loglog=False, xticks=None, yticks=None, xlim=None, ylim=None, rot=None, fontsize=None, colormap=None, table=False, yerr=None, xerr=None, label=None, secondary_y=False, **kwds) method of pandas.core.series.Series instance\n Make plots of Series using matplotlib / pylab.\n \n Parameters\n ----------\n data : Series\n \n kind : str\n - 'line' : line plot (default)\n - 'bar' : vertical bar plot\n - 'barh' : horizontal bar plot\n - 'hist' : histogram\n - 'box' : boxplot\n - 'kde' : Kernel Density Estimation plot\n - 'density' : same as 'kde'\n - 'area' : area plot\n - 'pie' : pie plot\n \n ax : matplotlib axes object\n If not passed, uses gca()\n figsize : a tuple (width, height) in inches\n use_index : boolean, default True\n Use index as ticks for x axis\n title : string\n Title to use for the plot\n grid : boolean, default None (matlab style default)\n Axis grid lines\n legend : False/True/'reverse'\n Place legend on axis subplots\n style : list or dict\n matplotlib line style per column\n logx : boolean, default False\n Use log scaling on x axis\n logy : boolean, default False\n Use log scaling on y axis\n loglog : boolean, default False\n Use log scaling on both x and y axes\n xticks : sequence\n Values to use for the xticks\n yticks : sequence\n Values to use for the yticks\n xlim : 2-tuple/list\n ylim : 2-tuple/list\n rot : int, default None\n Rotation for ticks (xticks for vertical, yticks for horizontal plots)\n fontsize : int, default None\n Font size for xticks and yticks\n colormap : str or matplotlib colormap object, default None\n Colormap to select colors from. If string, load colormap with that name\n from matplotlib.\n colorbar : boolean, optional\n If True, plot colorbar (only relevant for 'scatter' and 'hexbin' plots)\n position : float\n Specify relative alignments for bar plot layout.\n From 0 (left/bottom-end) to 1 (right/top-end). Default is 0.5 (center)\n layout : tuple (optional)\n (rows, columns) for the layout of the plot\n table : boolean, Series or DataFrame, default False\n If True, draw a table using the data in the DataFrame and the data will\n be transposed to meet matplotlib's default layout.\n If a Series or DataFrame is passed, use passed data to draw a table.\n yerr : DataFrame, Series, array-like, dict and str\n See :ref:`Plotting with Error Bars <visualization.errorbars>` for detail.\n xerr : same types as yerr.\n label : label argument to provide to plot\n secondary_y : boolean or sequence of ints, default False\n If True then y-axis will be on the right\n mark_right : boolean, default True\n When using a secondary_y axis, automatically mark the column\n labels with \"(right)\" in the legend\n kwds : keywords\n Options to pass to matplotlib plotting method\n \n Returns\n -------\n axes : matplotlib.AxesSubplot or np.array of them\n \n Notes\n -----\n \n - See matplotlib documentation online for more on this subject\n - If `kind` = 'bar' or 'barh', you can specify relative alignments\n for bar plot layout by `position` keyword.\n From 0 (left/bottom-end) to 1 (right/top-end). Default is 0.5 (center)\n\n"}], "metadata": {"collapsed": false, "trusted": false}}, {"execution_count": 84, "cell_type": "code", "source": "df_3.groupby(\"state\").mean()[[\"pop\", \"unempl\"]].plot(kind=\"bar\")", "outputs": [{"execution_count": 84, "output_type": "execute_result", "data": {"text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x7fee3b5e99d0>"}, "metadata": {}}, {"output_type": "display_data", "data": {"image/png": "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\nY/4fAeqPmhgA/rUAAAAASUVORK5CYII=\n", "text/plain": "<matplotlib.figure.Figure at 0x7fee3b73ddd0>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": false}}, {"source": "#####Exercises", "cell_type": "markdown", "metadata": {"collapsed": true}}, {"source": "1. 1. Create a Series with 100 random numbers from 0 to 10, then multiply by 2 the even numbers that are above or equal 3.", "cell_type": "markdown", "metadata": {}}, {"execution_count": null, "cell_type": "code", "source": "", "outputs": [], "metadata": {"collapsed": true, "trusted": false}}], "nbformat": 4, "metadata": {"kernelspec": {"display_name": "Python 2", "name": "python2", "language": "python"}, "language_info": {"mimetype": "text/x-python", "nbconvert_exporter": "python", "version": "2.7.9", "name": "python", "file_extension": ".py", "pygments_lexer": "ipython2", "codemirror_mode": {"version": 2, "name": "ipython"}}}}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment