Learn Pandas / lessons / 11 - Lesson.ipynb

{
 "metadata": {
  "name": ""
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "# Lesson 11  \n",
      "\n",
      "Grab data from multiple excel files and merge them into a single dataframe."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from pandas import DataFrame, read_excel\n",
      "import pandas as pd\n",
      "import os\n",
      "%matplotlib inline"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print 'Pandas version: ' + pd.__version__"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Pandas version: 0.13.0\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "# Create 3 excel files"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Create DataFrame\n",
      "d = {'Channel':[1], 'Number':[255]}\n",
      "df = DataFrame(d)\n",
      "df"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "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>Channel</th>\n",
        "      <th>Number</th>\n",
        "    </tr>\n",
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
        "      <th>0</th>\n",
        "      <td> 1</td>\n",
        "      <td> 255</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
        "<p>1 rows \u00d7 2 columns</p>\n",
        "</div>"
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 3,
       "text": [
        "   Channel  Number\n",
        "0        1     255\n",
        "\n",
        "[1 rows x 2 columns]"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Export to Excel\n",
      "\n",
      "df.to_excel('test1.xlsx', sheet_name = 'test1', index = False)\n",
      "df.to_excel('test2.xlsx', sheet_name = 'test2', index = False)\n",
      "df.to_excel('test3.xlsx', sheet_name = 'test3', index = False)\n",
      "print 'Done'"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Done\n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "# Place all three Excel files into a DataFrame"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Get a list of file names but make sure there are no other excel files present in the folder."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# List to hold file names\n",
      "FileNames = []\n",
      "\n",
      "# Your path will be different, please modify the path below.\n",
      "os.chdir(\"C:\\Users\\david\")\n",
      "\n",
      "# Find any file that ends with \".xlsx\"\n",
      "for files in os.listdir(\".\"):\n",
      "    if files.endswith(\".xlsx\"):\n",
      "        FileNames.append(files)\n",
      "        \n",
      "FileNames"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 5,
       "text": [
        "['test1.xlsx', 'test2.xlsx', 'test3.xlsx']"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Create a function to process all of the excel files."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def GetFile(fnombre):\n",
      "\n",
      "    # Path to excel file\n",
      "    # Your path will be different, please modify the path below.\n",
      "    location = r'C:\\Users\\david\\\\' + fnombre\n",
      "    \n",
      "    # Parse the excel file\n",
      "    # 0 = first sheet\n",
      "    df = read_excel(location, 0)\n",
      "    \n",
      "    # Tag record to file name\n",
      "    df['File'] = fnombre\n",
      "    \n",
      "    # Make the \"File\" column the index of the df\n",
      "    return df.set_index(['File'])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 6
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Go through each file name, create a dataframe, and add it to a list.  \n",
      "\n",
      "i.e.  \n",
      "df_list = [df, df, df]"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Create a list of dataframes\n",
      "df_list = [GetFile(fname) for fname in FileNames]\n",
      "df_list"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 7,
       "text": [
        "[            Channel  Number\n",
        "File                       \n",
        "test1.xlsx        1     255\n",
        "\n",
        "[1 rows x 2 columns],\n",
        "             Channel  Number\n",
        "File                       \n",
        "test2.xlsx        1     255\n",
        "\n",
        "[1 rows x 2 columns],\n",
        "             Channel  Number\n",
        "File                       \n",
        "test3.xlsx        1     255\n",
        "\n",
        "[1 rows x 2 columns]]"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Combine all of the dataframes into one\n",
      "big_df = pd.concat(df_list)\n",
      "big_df"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "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>Channel</th>\n",
        "      <th>Number</th>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>File</th>\n",
        "      <th></th>\n",
        "      <th></th>\n",
        "    </tr>\n",
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
        "      <th>test1.xlsx</th>\n",
        "      <td> 1</td>\n",
        "      <td> 255</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>test2.xlsx</th>\n",
        "      <td> 1</td>\n",
        "      <td> 255</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>test3.xlsx</th>\n",
        "      <td> 1</td>\n",
        "      <td> 255</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
        "<p>3 rows \u00d7 2 columns</p>\n",
        "</div>"
       ],
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 8,
       "text": [
        "            Channel  Number\n",
        "File                       \n",
        "test1.xlsx        1     255\n",
        "test2.xlsx        1     255\n",
        "test3.xlsx        1     255\n",
        "\n",
        "[3 rows x 2 columns]"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "big_df.dtypes"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 9,
       "text": [
        "Channel    int64\n",
        "Number     int64\n",
        "dtype: object"
       ]
      }
     ],
     "prompt_number": 9
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Plot it!\n",
      "big_df['Channel'].plot(kind='bar');"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nAAAAAElFTkSuQmCC\n",
       "text": [
        "<matplotlib.figure.Figure at 0x9e27400>"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "**Author:** [David Rojas LLC](http://hdrojas.pythonanywhere.com/)  "
     ]
    }
   ],
   "metadata": {}
  }
 ]
}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.