{
"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) >
"
]
},
{
"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",
" 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",
"
\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",
"
"
]
},
"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",
"
"
],
"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",
"
\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",
"