{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "*This notebook contains material for CBE 20258 Numerical and Statistical Analysis taught at the University of Notre Dame. (c) Professors Alexander Dowling, Ryan McClarren, and Yamil Colón. This collection of notebooks [cbe-xx258](https://ndcbe.github.io/cbe-xx258) is available [on Github](https://github.com/ndcbe/cbe-xx258).*\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [1.7 Visualization with matplotlib](https://ndcbe.github.io/cbe-xx258/01.07-Matplotlib.html) | [Contents](toc.html) | [1.9 Functions as Arguments](https://ndcbe.github.io/cbe-xx258/01.09-Functions-as-Arguments.html) >

\"Open

\"Download\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# IMPORT DATA FILES USED BY THIS NOTEBOOK\n", "import os, requests\n", "\n", "file_links = [(\"data/Stock_Data.csv\", \"https://ndcbe.github.io/cbe-xx258/data/Stock_Data.csv\"),\n", " (\"data/table1-1.csv\", \"https://ndcbe.github.io/cbe-xx258/data/table1-1.csv\"),\n", " (\"data/table1-2.csv\", \"https://ndcbe.github.io/cbe-xx258/data/table1-2.csv\")]\n", "\n", "# This cell has been added by nbpages. Run this cell to download data files required for this notebook.\n", "\n", "for filepath, fileurl in file_links:\n", " stem, filename = os.path.split(filepath)\n", " if stem:\n", " if not os.path.exists(stem):\n", " os.mkdir(stem)\n", " if not os.path.isfile(filepath):\n", " with open(filepath, 'wb') as f:\n", " response = requests.get(fileurl)\n", " f.write(response.content)\n" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "MElKNIbuqnWJ", "nbpages": { "level": 1, "link": "[1.8 Manipulating Data with Pandas](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8-Manipulating-Data-with-Pandas)", "section": "1.8 Manipulating Data with Pandas" } }, "source": [ "# 1.8 Manipulating Data with Pandas" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "OS9TuD7EhSZQ", "nbpages": { "level": 2, "link": "[1.8.1 Learning Objectives](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.1-Learning-Objectives)", "section": "1.8.1 Learning Objectives" } }, "source": [ "## 1.8.1 Learning Objectives\n", "After studying this notebook, completing the activities, and asking questions in class, you should be able to:\n", "\n", "* Import and analyze data using Pandas\n", " * Read data from a text file\n", " * Loop over columns in Pandas array\n", " * Compute descriptive statistics with Pandas\n", " * Plot data stored in a Pandas dataframe" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[1.8.2 Working with Data Using Pandas](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2-Working-with-Data-Using-Pandas)", "section": "1.8.2 Working with Data Using Pandas" } }, "source": [ "## 1.8.2 Working with Data Using Pandas" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[1.8.2 Working with Data Using Pandas](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2-Working-with-Data-Using-Pandas)", "section": "1.8.2 Working with Data Using Pandas" } }, "source": [ "On Sakai, you'll find `Datasets-All-Examples-Navidi.zip`. This file, which I downloaded from [the publisher](http://highered.mheducation.com/sites/0073401331/student_view0/data_sets.html), contains all of the data for the examples and tables in our textbook. We'll use many of these datasets to illustrate key concepts in class.\n", "\n", "Let's start with Tables 1.1 and 1.2 (pg. 21), which give **particulate matter (PM) emissions in g/gal** for 138 and 62 vehicles at low and high altitudes, respectively. Please take a moment to get out your textbook and glance at the tables.\n", "\n", "Now let's load the data into Python. In this class, we will use `Pandas`, which is a super popular and easy to use package/library/module for organizing and manipulating data. Here is a highly recommended [10 minutes to pandas](https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html) getting started tutorial." ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "collapsed": true, "nbpages": { "level": 2, "link": "[1.8.2 Working with Data Using Pandas](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2-Working-with-Data-Using-Pandas)", "section": "1.8.2 Working with Data Using Pandas" } }, "outputs": [], "source": [ "# load the Pandas library, give nickname 'pd'\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.1 Loading and Inspecting Data](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.1-Loading-and-Inspecting-Data)", "section": "1.8.2.1 Loading and Inspecting Data" } }, "source": [ "### 1.8.2.1 Loading and Inspecting Data" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.1 Loading and Inspecting Data](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.1-Loading-and-Inspecting-Data)", "section": "1.8.2.1 Loading and Inspecting Data" } }, "source": [ "The code below reads in the first text file." ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "collapsed": true, "nbpages": { "level": 3, "link": "[1.8.2.1 Loading and Inspecting Data](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.1-Loading-and-Inspecting-Data)", "section": "1.8.2.1 Loading and Inspecting Data" } }, "outputs": [], "source": [ "low = pd.read_csv('table1-1.csv')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "nbpages": { "level": 3, "link": "[1.8.2.1 Loading and Inspecting Data](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.1-Loading-and-Inspecting-Data)", "section": "1.8.2.1 Loading and Inspecting Data" } }, "source": [ "This creates a Pandas **dataframe**, which is stored in the variable `low`. We can easily print its contents to the screen." ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.1 Loading and Inspecting Data](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.1-Loading-and-Inspecting-Data)", "section": "1.8.2.1 Loading and Inspecting Data" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " PM\n", "0 1.50\n", "1 0.87\n", "2 1.12\n", "3 1.25\n", "4 3.46\n", "5 1.11\n", "6 1.12\n", "7 0.88\n", "8 1.29\n", "9 0.94\n", "10 0.64\n", "11 1.31\n", "12 2.49\n", "13 1.48\n", "14 1.06\n", "15 1.11\n", "16 2.15\n", "17 0.86\n", "18 1.81\n", "19 1.47\n", "20 1.24\n", "21 1.63\n", "22 2.14\n", "23 6.64\n", "24 4.04\n", "25 2.48\n", "26 2.98\n", "27 7.39\n", "28 2.66\n", "29 11.00\n", ".. ...\n", "108 4.93\n", "109 6.05\n", "110 5.82\n", "111 10.19\n", "112 3.62\n", "113 2.67\n", "114 2.75\n", "115 8.92\n", "116 9.93\n", "117 6.96\n", "118 5.78\n", "119 9.14\n", "120 10.63\n", "121 8.23\n", "122 6.83\n", "123 5.60\n", "124 5.41\n", "125 6.70\n", "126 5.93\n", "127 4.51\n", "128 9.04\n", "129 7.71\n", "130 7.21\n", "131 4.67\n", "132 4.49\n", "133 4.63\n", "134 2.80\n", "135 2.16\n", "136 2.97\n", "137 3.90\n", "\n", "[138 rows x 1 columns]\n" ] } ], "source": [ "print(low)" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.1 Loading and Inspecting Data](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.1-Loading-and-Inspecting-Data)", "section": "1.8.2.1 Loading and Inspecting Data" } }, "outputs": [ { "data": { "text/plain": [ "138" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(low)" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.1 Loading and Inspecting Data](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.1-Loading-and-Inspecting-Data)", "section": "1.8.2.1 Loading and Inspecting Data" } }, "source": [ "The first row (vehicle) is numbered 0, which is perhaps not a surprise. We see there are 138 rows in the dataset, which matches what we expect: data for 138 vehicles at low altitude.\n", "\n", "The output above is ugly. We can use the `.head()` and `.tail()` commands to look at only the first and last five entries." ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.1 Loading and Inspecting Data](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.1-Loading-and-Inspecting-Data)", "section": "1.8.2.1 Loading and Inspecting Data" } }, "outputs": [ { "data": { "text/html": [ "

\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PM
01.50
10.87
21.12
31.25
43.46
\n", "
" ], "text/plain": [ " PM\n", "0 1.50\n", "1 0.87\n", "2 1.12\n", "3 1.25\n", "4 3.46" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "low.head()" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.1 Loading and Inspecting Data](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.1-Loading-and-Inspecting-Data)", "section": "1.8.2.1 Loading and Inspecting Data" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PM
1334.63
1342.80
1352.16
1362.97
1373.90
\n", "
" ], "text/plain": [ " PM\n", "133 4.63\n", "134 2.80\n", "135 2.16\n", "136 2.97\n", "137 3.90" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "low.tail()" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.1 Loading and Inspecting Data](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.1-Loading-and-Inspecting-Data)", "section": "1.8.2.1 Loading and Inspecting Data" } }, "source": [ "
\n", " Home Activity: Load the high altitude data, which is stored in table1-2.csv into the Pandas dataframe high. Verify there are 62 rows. Use the head command to see the first few rows.\n", "
" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.1 Loading and Inspecting Data](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.1-Loading-and-Inspecting-Data)", "section": "1.8.2.1 Loading and Inspecting Data" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of rows = 62\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PM
07.59
16.28
26.07
35.23
45.54
\n", "
" ], "text/plain": [ " PM\n", "0 7.59\n", "1 6.28\n", "2 6.07\n", "3 5.23\n", "4 5.54" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# YOUR SOLUTION HERE" ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "collapsed": true, "nbgrader": { "grade": true, "grade_id": " 3c-i", "locked": true, "points": "0.1", "solution": false }, "nbpages": { "level": 3, "link": "[1.8.2.1 Loading and Inspecting Data](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.1-Loading-and-Inspecting-Data)", "section": "1.8.2.1 Loading and Inspecting Data" } }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.2 Computing Summary Statistics](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.2-Computing-Summary-Statistics)", "section": "1.8.2.2 Computing Summary Statistics" } }, "source": [ "### 1.8.2.2 Computing Summary Statistics" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.2 Computing Summary Statistics](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.2-Computing-Summary-Statistics)", "section": "1.8.2.2 Computing Summary Statistics" } }, "source": [ "Our example so far has only one column of data, named `PM`. We can access this column two ways:" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.2 Computing Summary Statistics](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.2-Computing-Summary-Statistics)", "section": "1.8.2.2 Computing Summary Statistics" } }, "outputs": [ { "data": { "text/plain": [ "0 1.50\n", "1 0.87\n", "2 1.12\n", "3 1.25\n", "4 3.46\n", "5 1.11\n", "6 1.12\n", "7 0.88\n", "8 1.29\n", "9 0.94\n", "10 0.64\n", "11 1.31\n", "12 2.49\n", "13 1.48\n", "14 1.06\n", "15 1.11\n", "16 2.15\n", "17 0.86\n", "18 1.81\n", "19 1.47\n", "20 1.24\n", "21 1.63\n", "22 2.14\n", "23 6.64\n", "24 4.04\n", "25 2.48\n", "26 2.98\n", "27 7.39\n", "28 2.66\n", "29 11.00\n", " ... \n", "108 4.93\n", "109 6.05\n", "110 5.82\n", "111 10.19\n", "112 3.62\n", "113 2.67\n", "114 2.75\n", "115 8.92\n", "116 9.93\n", "117 6.96\n", "118 5.78\n", "119 9.14\n", "120 10.63\n", "121 8.23\n", "122 6.83\n", "123 5.60\n", "124 5.41\n", "125 6.70\n", "126 5.93\n", "127 4.51\n", "128 9.04\n", "129 7.71\n", "130 7.21\n", "131 4.67\n", "132 4.49\n", "133 4.63\n", "134 2.80\n", "135 2.16\n", "136 2.97\n", "137 3.90\n", "Name: PM, Length: 138, dtype: float64" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "low['PM']" ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.2 Computing Summary Statistics](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.2-Computing-Summary-Statistics)", "section": "1.8.2.2 Computing Summary Statistics" } }, "outputs": [ { "data": { "text/plain": [ "0 1.50\n", "1 0.87\n", "2 1.12\n", "3 1.25\n", "4 3.46\n", "5 1.11\n", "6 1.12\n", "7 0.88\n", "8 1.29\n", "9 0.94\n", "10 0.64\n", "11 1.31\n", "12 2.49\n", "13 1.48\n", "14 1.06\n", "15 1.11\n", "16 2.15\n", "17 0.86\n", "18 1.81\n", "19 1.47\n", "20 1.24\n", "21 1.63\n", "22 2.14\n", "23 6.64\n", "24 4.04\n", "25 2.48\n", "26 2.98\n", "27 7.39\n", "28 2.66\n", "29 11.00\n", " ... \n", "108 4.93\n", "109 6.05\n", "110 5.82\n", "111 10.19\n", "112 3.62\n", "113 2.67\n", "114 2.75\n", "115 8.92\n", "116 9.93\n", "117 6.96\n", "118 5.78\n", "119 9.14\n", "120 10.63\n", "121 8.23\n", "122 6.83\n", "123 5.60\n", "124 5.41\n", "125 6.70\n", "126 5.93\n", "127 4.51\n", "128 9.04\n", "129 7.71\n", "130 7.21\n", "131 4.67\n", "132 4.49\n", "133 4.63\n", "134 2.80\n", "135 2.16\n", "136 2.97\n", "137 3.90\n", "Name: PM, Length: 138, dtype: float64" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "low.PM" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.2 Computing Summary Statistics](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.2-Computing-Summary-Statistics)", "section": "1.8.2.2 Computing Summary Statistics" } }, "source": [ "Pandas also makes it extremely easy to compute summary statistics and perform exploratory data analysis." ] }, { "cell_type": "code", "execution_count": 74, "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.2 Computing Summary Statistics](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.2-Computing-Summary-Statistics)", "section": "1.8.2.2 Computing Summary Statistics" } }, "outputs": [ { "data": { "text/plain": [ "count 138.000000\n", "mean 3.714565\n", "std 2.558040\n", "min 0.250000\n", "25% 1.472500\n", "50% 3.180000\n", "75% 5.265000\n", "max 11.230000\n", "Name: PM, dtype: float64" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "low.PM.describe()" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.2 Computing Summary Statistics](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.2-Computing-Summary-Statistics)", "section": "1.8.2.2 Computing Summary Statistics" } }, "source": [ "We will mathematically define the mean (a.k.a. average), standard deviation (std), minimum (min), maximum (max), and 25%-, 50%-, and 75%-ile (percentile) later this semester. The 50%-ile is also know as the median. Half of the observations are above the median and half are below." ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.2 Computing Summary Statistics](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.2-Computing-Summary-Statistics)", "section": "1.8.2.2 Computing Summary Statistics" } }, "source": [ "
\n", " Home Activity: Compute the mean (average) and median (50%-ile) for high altitude data. Store the results in Python variables high_average and high_median.\n", "
" ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.2 Computing Summary Statistics](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.2-Computing-Summary-Statistics)", "section": "1.8.2.2 Computing Summary Statistics" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "count 62.000000\n", "mean 6.596452\n", "std 4.518998\n", "min 1.110000\n", "25% 3.487500\n", "50% 5.750000\n", "75% 7.755000\n", "max 23.380000\n", "Name: PM, dtype: float64\n" ] } ], "source": [ "# YOUR SOLUTION HERE" ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "collapsed": true, "nbgrader": { "grade": true, "grade_id": "3c-ii", "locked": true, "points": "0.1", "solution": false }, "nbpages": { "level": 3, "link": "[1.8.2.2 Computing Summary Statistics](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.2-Computing-Summary-Statistics)", "section": "1.8.2.2 Computing Summary Statistics" } }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.3 Combining Pandas and Matplotlib](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.3-Combining-Pandas-and-Matplotlib)", "section": "1.8.2.3 Combining Pandas and Matplotlib" } }, "source": [ "### 1.8.2.3 Combining Pandas and Matplotlib" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.3 Combining Pandas and Matplotlib](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.3-Combining-Pandas-and-Matplotlib)", "section": "1.8.2.3 Combining Pandas and Matplotlib" } }, "source": [ "Together, Pandas and Matplotlib make it easy to quickly visualize a dataset. The code below creates a histogram." ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.3 Combining Pandas and Matplotlib](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.3-Combining-Pandas-and-Matplotlib)", "section": "1.8.2.3 Combining Pandas and Matplotlib" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist(low.PM)\n", "plt.xlabel(\"Particulate Matter (PM) Emissions in g/gal \")\n", "plt.ylabel(\"Count\")\n", "plt.title(\"Emissions at Low Altitude\")\n", "plt.grid(True)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.3 Combining Pandas and Matplotlib](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.3-Combining-Pandas-and-Matplotlib)", "section": "1.8.2.3 Combining Pandas and Matplotlib" } }, "source": [ "Each bin of the histogram shows the count (number) of vehicle with emissions between the left and right bound of the bin. For example, the third bin from the left shows that there are approximate 30 vehicles in the dataset with emissions between 2.2 and 3.8 g/gal." ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.3 Combining Pandas and Matplotlib](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.3-Combining-Pandas-and-Matplotlib)", "section": "1.8.2.3 Combining Pandas and Matplotlib" } }, "source": [ "
\n", " Home Activity: Create a histogram for the high altitude data. Then determine the approximate number of vehicles with emissions between 0 and 3 g/gal. Store your answer in high_count. The upper limit of 3 g/gal is approximate. We want you to make a plot and interpret it.\n", "
" ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "nbpages": { "level": 3, "link": "[1.8.2.3 Combining Pandas and Matplotlib](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.3-Combining-Pandas-and-Matplotlib)", "section": "1.8.2.3 Combining Pandas and Matplotlib" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# YOUR SOLUTION HERE" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "collapsed": true, "nbgrader": { "grade": true, "grade_id": "3c-iii", "locked": true, "points": "0.1", "solution": false }, "nbpages": { "level": 3, "link": "[1.8.2.3 Combining Pandas and Matplotlib](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.2.3-Combining-Pandas-and-Matplotlib)", "section": "1.8.2.3 Combining Pandas and Matplotlib" } }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[1.8.3 Investment Strategies](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3-Investment-Strategies)", "section": "1.8.3 Investment Strategies" } }, "source": [ "## 1.8.3 Investment Strategies" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "nbpages": { "level": 2, "link": "[1.8.3 Investment Strategies](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3-Investment-Strategies)", "section": "1.8.3 Investment Strategies" } }, "source": [ "We will spend one-third to one-half of Class 3 working on an example to leverage our new Python skills.\n", "\n", "The CSV (Comma Seperated Value) file `Stock_Data.csv` is the historical daily adjusted closing prices for five index funds:\n", "\n", "| Symbol | Name |\n", "|-|-|\n", "| GSPC | S&P 500 | \n", "| DJI | Dow Jones Industrial Average | \n", "| IXIC | NASDAQ Composite | \n", "| RUT | Russell 2000 |\n", "| VIX | CBOE Volatility Index |" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.1 Getting Started](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.1-Getting-Started)", "section": "1.8.3.1 Getting Started" } }, "source": [ "### 1.8.3.1 Getting Started" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.1 Getting Started](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.1-Getting-Started)", "section": "1.8.3.1 Getting Started" } }, "source": [ "
\n", " Home Activity: Load the data into a Pandas dataframe named stocks. Then inspect the first 5 rows.\n", "
" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.1 Getting Started](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.1-Getting-Started)", "section": "1.8.3.1 Getting Started" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DJIGSPCIXICRUTVIX
014447.750001551.6899413235.300049945.84997613.74
114559.650391563.7700203252.479980949.82000712.77
214526.160161562.8499763256.520020950.23999013.15
314578.540041569.1899413267.520020951.53997812.70
414572.849611562.1700443239.169922938.78997813.58
\n", "
" ], "text/plain": [ " DJI GSPC IXIC RUT VIX\n", "0 14447.75000 1551.689941 3235.300049 945.849976 13.74\n", "1 14559.65039 1563.770020 3252.479980 949.820007 12.77\n", "2 14526.16016 1562.849976 3256.520020 950.239990 13.15\n", "3 14578.54004 1569.189941 3267.520020 951.539978 12.70\n", "4 14572.84961 1562.170044 3239.169922 938.789978 13.58" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# YOUR SOLUTION HERE" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "collapsed": true, "nbgrader": { "grade": true, "grade_id": "3d-i", "locked": true, "points": "0.1", "solution": false }, "nbpages": { "level": 3, "link": "[1.8.3.1 Getting Started](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.1-Getting-Started)", "section": "1.8.3.1 Getting Started" } }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.1 Getting Started](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.1-Getting-Started)", "section": "1.8.3.1 Getting Started" } }, "source": [ "We can loop over the column names of the dataframe:" ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.1 Getting Started](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.1-Getting-Started)", "section": "1.8.3.1 Getting Started" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The mean price of DJI is 18308.909006274822 dollars.\n", "The mean price of GSPC is 2090.507513849881 dollars.\n", "The mean price of IXIC is 4998.311674694996 dollars.\n", "The mean price of RUT is 1220.7430421429708 dollars.\n", "The mean price of VIX is 14.550937264495634 dollars.\n" ] } ], "source": [ "for c in stocks.columns:\n", " print(\"The mean price of\",c,\"is\",stocks[c].mean(),\"dollars.\")" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.1 Getting Started](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.1-Getting-Started)", "section": "1.8.3.1 Getting Started" } }, "source": [ "This is extremely powerful. Let's use a for loop to plot the price of each index fund relative to the first day on a single plot." ] }, { "cell_type": "code", "execution_count": 83, "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.1 Getting Started](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.1-Getting-Started)", "section": "1.8.3.1 Getting Started" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for c in stocks.columns:\n", " plt.plot(stocks[c] / stocks[c][0],label=c)\n", "\n", "plt.xlabel(\"Day\")\n", "plt.ylabel(\"Price Relative to Day-0\")\n", "plt.grid(True)\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.2 Portfolio Calculator](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.2-Portfolio-Calculator)", "section": "1.8.3.2 Portfolio Calculator" } }, "source": [ "### 1.8.3.2 Portfolio Calculator" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.2 Portfolio Calculator](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.2-Portfolio-Calculator)", "section": "1.8.3.2 Portfolio Calculator" } }, "source": [ "We want to create a compute program (function) that does the following:\n", "* Takes these historical prices, an initial investment amount, and daily investment amount as inputs.\n", "* On the first day in the dataset, splits the initial investment amount evenly among each of the index funds. Computes and records the number of shares purchased. Also records the value of the portfolio.\n", "* On the remain days, splits the daily investment amount evenly among each of the index funds. Computes and records the number of shares at the end of the day. Also records the value of the portfolio using the new prices.\n", "* After considering each day, plots the value of the portolio versus time.\n", "* Returns the portolio history which includes the number of shares and value for each day." ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.2 Portfolio Calculator](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.2-Portfolio-Calculator)", "section": "1.8.3.2 Portfolio Calculator" } }, "source": [ "
\n", "Class Activity: With a partner, write pseudocode for this computer program.\n", "
" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.2 Portfolio Calculator](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.2-Portfolio-Calculator)", "section": "1.8.3.2 Portfolio Calculator" } }, "source": [ "
\n", "Class Activity: With a partner, use your pseudocode to complete the function below.\n", "
" ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "collapsed": true, "nbpages": { "level": 3, "link": "[1.8.3.2 Portfolio Calculator](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.2-Portfolio-Calculator)", "section": "1.8.3.2 Portfolio Calculator" } }, "outputs": [], "source": [ "def portfolio(stock_data,initial_investment,daily_investment):\n", " ''' Compute and plot portfolio value\n", " \n", " Assumptions:\n", " We invest evenly across all available index funds\n", " \n", " Arguments:\n", " stock_data: Pandas dataframe containing historical stock prices\n", " initial_investment: dollars invested at the start of our portfolio (float)\n", " daily_investment: dollars invested at the end of each day (float)\n", " \n", " Returns:\n", " portfolio: Pandas dataframe containing the number of shares of each fund \n", " and the value of the portfolio\n", " \n", " Also:\n", " Creates a (well labeled) plot of portfolio value versus time\n", " \n", " '''\n", " \n", " # determine the numbers of stocks\n", " n = len(stock_data.columns)\n", " \n", " ### Create a dataframe to store the results\n", " \n", " # Extract the names of the columns of 'stock_data', convert to list\n", " c = stock_data.columns.values.tolist()\n", " \n", " # Add 'Value' to the list\n", " c.append(\"Value\")\n", " \n", " # Create new dataframe with the name number of rows as 'stock_data',\n", " # the same columns as 'stock_data' plus 'Value', and filled with 0.0\n", " portfolio = pd.DataFrame(0.0, index=range(len(stock_data)), columns=c)\n", " \n", " # YOUR SOLUTION HERE\n", " \n", " return portfolio" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.2 Portfolio Calculator](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.2-Portfolio-Calculator)", "section": "1.8.3.2 Portfolio Calculator" } }, "source": [ "
\n", "Class Activity: Which is better? a) Invest \\$2000 on the first day and \\$0 each subsequent day or b) Invest \\$500 on the first day and \\$1.5 each subsequent day?\n", "
" ] }, { "cell_type": "code", "execution_count": 85, "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.2 Portfolio Calculator](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.2-Portfolio-Calculator)", "section": "1.8.3.2 Portfolio Calculator" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# YOUR SOLUTION HERE" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[1.8.3.2 Portfolio Calculator](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.2-Portfolio-Calculator)", "section": "1.8.3.2 Portfolio Calculator" } }, "source": [ "**Discuss in a few sentences**:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "nbpages": { "level": 3, "link": "[1.8.3.2 Portfolio Calculator](https://ndcbe.github.io/cbe-xx258/01.08-Pandas.html#1.8.3.2-Portfolio-Calculator)", "section": "1.8.3.2 Portfolio Calculator" } }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [1.7 Visualization with matplotlib](https://ndcbe.github.io/cbe-xx258/01.07-Matplotlib.html) | [Contents](toc.html) | [1.9 Functions as Arguments](https://ndcbe.github.io/cbe-xx258/01.09-Functions-as-Arguments.html) >

\"Open

\"Download\"" ] } ], "metadata": { "colab": { "collapsed_sections": [ "xCRFBLk3qnWw", "0b7S8aRkqnXL", "hVTWyRgyqnXT", "9CTmfuN6qnXe", "kHsSx8OcqnXt", "hIS0pUx9qnX3", "Ck5L2vnuqnX-" ], "name": "L4-NumPy-Matplotlib.ipynb", "provenance": [], "version": "0.3.2" }, "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.7.3" } }, "nbformat": 4, "nbformat_minor": 1 }