Last active
July 22, 2020 21:41
-
-
Save chelseatroy/07814a22588f6f5410a5763ee7a4e269 to your computer and use it in GitHub Desktop.
A first pass at data analysis on some ESG and Performance Data
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Millenials and Investment: an Ongoing Exploration\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import pandas as pd" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Correlating KLD ESG Ratings to Stock Performance, 1991-1999\n", | |
"\n", | |
"Let's determine whether we notice any correlation between companies' environmental, social, and governmental ratings and their stock performance during the 1990s. \n", | |
"\n", | |
"### First, we pull in the ESG data. \n", | |
"\n", | |
"These come from KLD and are now distributed by MSGI. I pulled them from an academic database. Don't rerun this notebook because I didn't push the actual data to Github. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"esg_data = pd.read_excel('../stockproject/12231046.1990-1999.stats/1999 HistoricalSpreadsheet_STATS.xls')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([0, 1])" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"sp500 = esg_data[esg_data['SP500'] == True]\n", | |
"sp500[\"DIV-str-A\"].unique()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Second, we pull in stock performance data.\n", | |
"\n", | |
"This data contains stock returns by quarter for S&P500 companies dating back to 1979. We'll pull the columns for the '90s for now." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"price_data = pd.read_excel('../stockproject/Cleaned_Researcher_Dataset.xlsx')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Ticker</th>\n", | |
" <th>Company Name</th>\n", | |
" <th>1989-12-31 00:00:00</th>\n", | |
" <th>1990-03-31 00:00:00</th>\n", | |
" <th>1990-06-30 00:00:00</th>\n", | |
" <th>1990-09-30 00:00:00</th>\n", | |
" <th>1990-12-31 00:00:00</th>\n", | |
" <th>1991-03-31 00:00:00</th>\n", | |
" <th>1991-06-30 00:00:00</th>\n", | |
" <th>1991-09-30 00:00:00</th>\n", | |
" <th>...</th>\n", | |
" <th>1999-03-31 00:00:00</th>\n", | |
" <th>1999-06-30 00:00:00</th>\n", | |
" <th>1999-09-30 00:00:00</th>\n", | |
" <th>1999-12-31 00:00:00</th>\n", | |
" <th>2000-03-31 00:00:00</th>\n", | |
" <th>2000-06-30 00:00:00</th>\n", | |
" <th>2000-09-30 00:00:00</th>\n", | |
" <th>2000-12-31 00:00:00</th>\n", | |
" <th>2001-03-31 00:00:00</th>\n", | |
" <th>2001-06-30 00:00:00</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>A</td>\n", | |
" <td>Agilent Technologies Inc.</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>...</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>73.75</td>\n", | |
" <td>48.94</td>\n", | |
" <td>54.75</td>\n", | |
" <td>30.73</td>\n", | |
" <td>32.5</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>AA</td>\n", | |
" <td>Alcoa Inc</td>\n", | |
" <td>75</td>\n", | |
" <td>64.75</td>\n", | |
" <td>63.75</td>\n", | |
" <td>62.63</td>\n", | |
" <td>57.63</td>\n", | |
" <td>65.5</td>\n", | |
" <td>67.5</td>\n", | |
" <td>63.88</td>\n", | |
" <td>...</td>\n", | |
" <td>41.19</td>\n", | |
" <td>61.88</td>\n", | |
" <td>62.06</td>\n", | |
" <td>83</td>\n", | |
" <td>70.25</td>\n", | |
" <td>29</td>\n", | |
" <td>25.31</td>\n", | |
" <td>33.5</td>\n", | |
" <td>35.95</td>\n", | |
" <td>39.4</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>AAL</td>\n", | |
" <td>American Airlines Group</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>...</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>AAL (Alex)</td>\n", | |
" <td>Alexander & Alexander</td>\n", | |
" <td>30.63</td>\n", | |
" <td>26.75</td>\n", | |
" <td>24.38</td>\n", | |
" <td>17.88</td>\n", | |
" <td>23.13</td>\n", | |
" <td>26.25</td>\n", | |
" <td>22.5</td>\n", | |
" <td>20.88</td>\n", | |
" <td>...</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>5</th>\n", | |
" <td>AAP</td>\n", | |
" <td>Advance Auto Parts Inc</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>...</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"<p>5 rows × 49 columns</p>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Ticker Company Name 1989-12-31 00:00:00 \\\n", | |
"1 A Agilent Technologies Inc. NaN \n", | |
"2 AA Alcoa Inc 75 \n", | |
"3 AAL American Airlines Group NaN \n", | |
"4 AAL (Alex) Alexander & Alexander 30.63 \n", | |
"5 AAP Advance Auto Parts Inc NaN \n", | |
"\n", | |
" 1990-03-31 00:00:00 1990-06-30 00:00:00 1990-09-30 00:00:00 \\\n", | |
"1 NaN NaN NaN \n", | |
"2 64.75 63.75 62.63 \n", | |
"3 NaN NaN NaN \n", | |
"4 26.75 24.38 17.88 \n", | |
"5 NaN NaN NaN \n", | |
"\n", | |
" 1990-12-31 00:00:00 1991-03-31 00:00:00 1991-06-30 00:00:00 \\\n", | |
"1 NaN NaN NaN \n", | |
"2 57.63 65.5 67.5 \n", | |
"3 NaN NaN NaN \n", | |
"4 23.13 26.25 22.5 \n", | |
"5 NaN NaN NaN \n", | |
"\n", | |
" 1991-09-30 00:00:00 ... 1999-03-31 00:00:00 \\\n", | |
"1 NaN ... NaN \n", | |
"2 63.88 ... 41.19 \n", | |
"3 NaN ... NaN \n", | |
"4 20.88 ... NaN \n", | |
"5 NaN ... NaN \n", | |
"\n", | |
" 1999-06-30 00:00:00 1999-09-30 00:00:00 1999-12-31 00:00:00 \\\n", | |
"1 NaN NaN NaN \n", | |
"2 61.88 62.06 83 \n", | |
"3 NaN NaN NaN \n", | |
"4 NaN NaN NaN \n", | |
"5 NaN NaN NaN \n", | |
"\n", | |
" 2000-03-31 00:00:00 2000-06-30 00:00:00 2000-09-30 00:00:00 \\\n", | |
"1 NaN 73.75 48.94 \n", | |
"2 70.25 29 25.31 \n", | |
"3 NaN NaN NaN \n", | |
"4 NaN NaN NaN \n", | |
"5 NaN NaN NaN \n", | |
"\n", | |
" 2000-12-31 00:00:00 2001-03-31 00:00:00 2001-06-30 00:00:00 \n", | |
"1 54.75 30.73 32.5 \n", | |
"2 33.5 35.95 39.4 \n", | |
"3 NaN NaN NaN \n", | |
"4 NaN NaN NaN \n", | |
"5 NaN NaN NaN \n", | |
"\n", | |
"[5 rows x 49 columns]" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"new_header = price_data.iloc[0] #grab the first row for the header\n", | |
"content = price_data[1:] #take the data less the header row\n", | |
"content.columns = new_header #set the header row as the df header\n", | |
"content.head()\n", | |
"\n", | |
"tickers = content.iloc[:,0:2]\n", | |
"tickers.columns = list(new_header)[0:2]\n", | |
"\n", | |
"dates = content.iloc[:,45:92]\n", | |
"dates.columns = list(new_header)[45:92]\n", | |
"\n", | |
"result = pd.concat([tickers, dates], axis=1)\n", | |
"result.head()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Third, we combine the data into one dataframe.\n", | |
"\n", | |
"We find all the companies for which we have both stock price data and ESG data, and we put the information together." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(441, 49)" | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"tickers = list(sp500[\"Ticker\"]) #get all the company tickers for which we have esg data\n", | |
"prices_for_esg_companies = result[result[\"Ticker\"].isin(tickers)] #get the stock data from companies in that list\n", | |
"prices_for_esg_companies.shape" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Hm, we have 399 of them. 100 are missing. Why?" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"relevant_esgs = sp500[sp500[\"Ticker\"].isin(list(prices_for_esg_companies[\"Ticker\"]))]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([ 0., nan, 1.])" | |
] | |
}, | |
"execution_count": 8, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"all_data = pd.concat([relevant_esgs, prices_for_esg_companies], axis = 1) #put the esg and stock data in one dataframe\n", | |
"all_data[\"DIV-str-A\"].unique()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Ticker</th>\n", | |
" <th>CompanyName</th>\n", | |
" <th>COM-str-A</th>\n", | |
" <th>COM-str-B</th>\n", | |
" <th>COM-str-C</th>\n", | |
" <th>COM-str-D</th>\n", | |
" <th>COM-str-F</th>\n", | |
" <th>COM-str-G</th>\n", | |
" <th>COM-str-X</th>\n", | |
" <th>COM-con-A</th>\n", | |
" <th>...</th>\n", | |
" <th>1999-03-31 00:00:00</th>\n", | |
" <th>1999-06-30 00:00:00</th>\n", | |
" <th>1999-09-30 00:00:00</th>\n", | |
" <th>1999-12-31 00:00:00</th>\n", | |
" <th>2000-03-31 00:00:00</th>\n", | |
" <th>2000-06-30 00:00:00</th>\n", | |
" <th>2000-09-30 00:00:00</th>\n", | |
" <th>2000-12-31 00:00:00</th>\n", | |
" <th>2001-03-31 00:00:00</th>\n", | |
" <th>2001-06-30 00:00:00</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>COMS</td>\n", | |
" <td>3Com Corporation</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NR</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>...</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>ABT</td>\n", | |
" <td>Abbott Laboratories</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NR</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>...</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>...</td>\n", | |
" <td>41.19</td>\n", | |
" <td>61.88</td>\n", | |
" <td>62.06</td>\n", | |
" <td>83</td>\n", | |
" <td>70.25</td>\n", | |
" <td>29</td>\n", | |
" <td>25.31</td>\n", | |
" <td>33.5</td>\n", | |
" <td>35.95</td>\n", | |
" <td>39.4</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>5</th>\n", | |
" <td>ADCT</td>\n", | |
" <td>ADC Telecommunications, Inc.</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NR</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>...</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>6</th>\n", | |
" <td>ADBE</td>\n", | |
" <td>Adobe Systems Incorporated</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NR</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>...</td>\n", | |
" <td>35.94</td>\n", | |
" <td>46.31</td>\n", | |
" <td>63.31</td>\n", | |
" <td>102.81</td>\n", | |
" <td>135.81</td>\n", | |
" <td>52.38</td>\n", | |
" <td>25.75</td>\n", | |
" <td>14.88</td>\n", | |
" <td>22.07</td>\n", | |
" <td>23.25</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"<p>5 rows × 163 columns</p>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Ticker CompanyName COM-str-A COM-str-B COM-str-C \\\n", | |
"0 COMS 3Com Corporation 0.0 0.0 0.0 \n", | |
"1 ABT Abbott Laboratories 0.0 0.0 0.0 \n", | |
"2 NaN NaN NaN NaN NaN \n", | |
"5 ADCT ADC Telecommunications, Inc. 0.0 0.0 0.0 \n", | |
"6 ADBE Adobe Systems Incorporated 0.0 0.0 0.0 \n", | |
"\n", | |
" COM-str-D COM-str-F COM-str-G COM-str-X COM-con-A ... \\\n", | |
"0 1.0 0.0 NR 0.0 0.0 ... \n", | |
"1 0.0 0.0 NR 0.0 0.0 ... \n", | |
"2 NaN NaN NaN NaN NaN ... \n", | |
"5 0.0 0.0 NR 0.0 0.0 ... \n", | |
"6 0.0 0.0 NR 0.0 0.0 ... \n", | |
"\n", | |
" 1999-03-31 00:00:00 1999-06-30 00:00:00 1999-09-30 00:00:00 \\\n", | |
"0 NaN NaN NaN \n", | |
"1 NaN NaN NaN \n", | |
"2 41.19 61.88 62.06 \n", | |
"5 NaN NaN NaN \n", | |
"6 35.94 46.31 63.31 \n", | |
"\n", | |
" 1999-12-31 00:00:00 2000-03-31 00:00:00 2000-06-30 00:00:00 \\\n", | |
"0 NaN NaN NaN \n", | |
"1 NaN NaN NaN \n", | |
"2 83 70.25 29 \n", | |
"5 NaN NaN NaN \n", | |
"6 102.81 135.81 52.38 \n", | |
"\n", | |
" 2000-09-30 00:00:00 2000-12-31 00:00:00 2001-03-31 00:00:00 \\\n", | |
"0 NaN NaN NaN \n", | |
"1 NaN NaN NaN \n", | |
"2 25.31 33.5 35.95 \n", | |
"5 NaN NaN NaN \n", | |
"6 25.75 14.88 22.07 \n", | |
"\n", | |
" 2001-06-30 00:00:00 \n", | |
"0 NaN \n", | |
"1 NaN \n", | |
"2 39.4 \n", | |
"5 NaN \n", | |
"6 23.25 \n", | |
"\n", | |
"[5 rows x 163 columns]" | |
] | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"#let's do some cleanup so we only have the columns we need.\n", | |
"clean_data = all_data.drop(['CUSIP', 'SP500', 'DS400', 'Russell1000', 'LCS', 'Russell2000', 'BMS'], axis = 1)\n", | |
"clean_data.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array(['Ticker', 'CompanyName', 'COM-str-A', 'COM-str-B', 'COM-str-C',\n", | |
" 'COM-str-D', 'COM-str-F', 'COM-str-G', 'COM-str-X', 'COM-con-A',\n", | |
" 'COM-con-B', 'COM-con-D', 'COM-con-X', 'CGOV-str-A', 'CGOV-str-C',\n", | |
" 'CGOV-str-D', 'CGOV-str-E', 'CGOV-str-X', 'CGOV-con-B',\n", | |
" 'CGOV-con-F', 'CGOV-con-G', 'CGOV-con-H', 'CGOV-con-I',\n", | |
" 'CGOV-con-X', 'DIV-str-A', 'DIV-str-B', 'DIV-str-C', 'DIV-str-D',\n", | |
" 'DIV-str-E', 'DIV-str-F', 'DIV-str-G', 'DIV-str-X', 'DIV-con-A',\n", | |
" 'DIV-con-B', 'DIV-con-X', 'EMP-str-A', 'EMP-str-B', 'EMP-str-C',\n", | |
" 'EMP-str-D', 'EMP-str-F', 'EMP-str-G', 'EMP-str-X', 'EMP-con-A',\n", | |
" 'EMP-con-B', 'EMP-con-C', 'EMP-con-D', 'EMP-con-X', 'ENV-str-A',\n", | |
" 'ENV-str-B', 'ENV-str-C', 'ENV-str-D', 'ENV-str-F', 'ENV-str-X',\n", | |
" 'ENV-con-A', 'ENV-con-B', 'ENV-con-C', 'ENV-con-D', 'ENV-con-E',\n", | |
" 'ENV-con-F', 'ENV-con-X', 'HUM-str-A', 'HUM-str-D', 'HUM-str-G',\n", | |
" 'HUM-str-X', 'HUM-con-A', 'HUM-con-B', 'HUM-con-C', 'HUM-con-D',\n", | |
" 'HUM-con-F', 'HUM-con-G', 'HUM-con-X', 'PRO-str-A', 'PRO-str-B',\n", | |
" 'PRO-str-C', 'PRO-str-X', 'PRO-con-A', 'PRO-con-D', 'PRO-con-E',\n", | |
" 'PRO-con-X', 'ALC-con-A', 'ALC-con-X', 'GAM-con-A', 'GAM-con-X',\n", | |
" 'TOB-con-A', 'TOB-con-X', 'FIR-con-A', 'MIL-con-A', 'MIL-con-B',\n", | |
" 'MIL-con-C', 'MIL-con-X', 'NUC-con-A', 'NUC-con-C', 'NUC-con-D',\n", | |
" 'NUC-con-X', 'COM-str-#', 'COM-con-#', 'CGOV-str-#', 'CGOV-con-#',\n", | |
" 'DIV-str-#', 'DIV-con-#', 'EMP-str-#', 'EMP-con-#', 'ENV-str-#',\n", | |
" 'ENV-con-#', 'HUM-str-#', 'HUM-con-#', 'PRO-str-#', 'PRO-con-#',\n", | |
" 'ALC-con-#', 'GAM-con-#', 'TOB-con-#', 'FIR-con-#', 'MIL-con-#',\n", | |
" 'NUC-con-#', 'Ticker', 'Company Name',\n", | |
" Timestamp('1989-12-31 00:00:00'), Timestamp('1990-03-31 00:00:00'),\n", | |
" Timestamp('1990-06-30 00:00:00'), Timestamp('1990-09-30 00:00:00'),\n", | |
" Timestamp('1990-12-31 00:00:00'), Timestamp('1991-03-31 00:00:00'),\n", | |
" Timestamp('1991-06-30 00:00:00'), Timestamp('1991-09-30 00:00:00'),\n", | |
" Timestamp('1991-12-31 00:00:00'), Timestamp('1992-03-31 00:00:00'),\n", | |
" Timestamp('1992-06-30 00:00:00'), Timestamp('1992-09-30 00:00:00'),\n", | |
" Timestamp('1992-12-31 00:00:00'), Timestamp('1993-03-31 00:00:00'),\n", | |
" Timestamp('1993-06-30 00:00:00'), Timestamp('1993-09-30 00:00:00'),\n", | |
" Timestamp('1993-12-31 00:00:00'), Timestamp('1994-03-31 00:00:00'),\n", | |
" Timestamp('1994-06-30 00:00:00'), Timestamp('1994-09-30 00:00:00'),\n", | |
" Timestamp('1994-12-31 00:00:00'), Timestamp('1995-03-31 00:00:00'),\n", | |
" Timestamp('1995-06-30 00:00:00'), Timestamp('1995-09-30 00:00:00'),\n", | |
" Timestamp('1995-12-31 00:00:00'), Timestamp('1996-03-31 00:00:00'),\n", | |
" Timestamp('1996-06-30 00:00:00'), Timestamp('1996-09-30 00:00:00'),\n", | |
" Timestamp('1996-12-31 00:00:00'), Timestamp('1997-03-31 00:00:00'),\n", | |
" Timestamp('1997-06-30 00:00:00'), Timestamp('1997-09-30 00:00:00'),\n", | |
" Timestamp('1997-12-31 00:00:00'), Timestamp('1998-03-31 00:00:00'),\n", | |
" Timestamp('1998-06-30 00:00:00'), Timestamp('1998-09-30 00:00:00'),\n", | |
" Timestamp('1998-12-31 00:00:00'), Timestamp('1999-03-31 00:00:00'),\n", | |
" Timestamp('1999-06-30 00:00:00'), Timestamp('1999-09-30 00:00:00'),\n", | |
" Timestamp('1999-12-31 00:00:00'), Timestamp('2000-03-31 00:00:00'),\n", | |
" Timestamp('2000-06-30 00:00:00'), Timestamp('2000-09-30 00:00:00'),\n", | |
" Timestamp('2000-12-31 00:00:00'), Timestamp('2001-03-31 00:00:00'),\n", | |
" Timestamp('2001-06-30 00:00:00')], dtype=object)" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"#Now let's strip this down so we can calculate returns over the course of the ten year period.\n", | |
"clean_data.columns.values" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array(['Ticker', 'CompanyName', 'COM-str-A', 'COM-str-B', 'COM-str-C',\n", | |
" 'COM-str-D', 'COM-str-F', 'COM-str-G', 'COM-str-X', 'COM-con-A',\n", | |
" 'COM-con-B', 'COM-con-D', 'COM-con-X', 'CGOV-str-A', 'CGOV-str-C',\n", | |
" 'CGOV-str-D', 'CGOV-str-E', 'CGOV-str-X', 'CGOV-con-B',\n", | |
" 'CGOV-con-F', 'CGOV-con-G', 'CGOV-con-H', 'CGOV-con-I',\n", | |
" 'CGOV-con-X', 'DIV-str-A', 'DIV-str-B', 'DIV-str-C', 'DIV-str-D',\n", | |
" 'DIV-str-E', 'DIV-str-F', 'DIV-str-G', 'DIV-str-X', 'DIV-con-A',\n", | |
" 'DIV-con-B', 'DIV-con-X', 'EMP-str-A', 'EMP-str-B', 'EMP-str-C',\n", | |
" 'EMP-str-D', 'EMP-str-F', 'EMP-str-G', 'EMP-str-X', 'EMP-con-A',\n", | |
" 'EMP-con-B', 'EMP-con-C', 'EMP-con-D', 'EMP-con-X', 'ENV-str-A',\n", | |
" 'ENV-str-B', 'ENV-str-C', 'ENV-str-D', 'ENV-str-F', 'ENV-str-X',\n", | |
" 'ENV-con-A', 'ENV-con-B', 'ENV-con-C', 'ENV-con-D', 'ENV-con-E',\n", | |
" 'ENV-con-F', 'ENV-con-X', 'HUM-str-A', 'HUM-str-D', 'HUM-str-G',\n", | |
" 'HUM-str-X', 'HUM-con-A', 'HUM-con-B', 'HUM-con-C', 'HUM-con-D',\n", | |
" 'HUM-con-F', 'HUM-con-G', 'HUM-con-X', 'PRO-str-A', 'PRO-str-B',\n", | |
" 'PRO-str-C', 'PRO-str-X', 'PRO-con-A', 'PRO-con-D', 'PRO-con-E',\n", | |
" 'PRO-con-X', 'ALC-con-A', 'ALC-con-X', 'GAM-con-A', 'GAM-con-X',\n", | |
" 'TOB-con-A', 'TOB-con-X', 'FIR-con-A', 'MIL-con-A', 'MIL-con-B',\n", | |
" 'MIL-con-C', 'MIL-con-X', 'NUC-con-A', 'NUC-con-C', 'NUC-con-D',\n", | |
" 'NUC-con-X', 'COM-str-#', 'COM-con-#', 'CGOV-str-#', 'CGOV-con-#',\n", | |
" 'DIV-str-#', 'DIV-con-#', 'EMP-str-#', 'EMP-con-#', 'ENV-str-#',\n", | |
" 'ENV-con-#', 'HUM-str-#', 'HUM-con-#', 'PRO-str-#', 'PRO-con-#',\n", | |
" 'ALC-con-#', 'GAM-con-#', 'TOB-con-#', 'FIR-con-#', 'MIL-con-#',\n", | |
" 'NUC-con-#'], dtype=object)" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"esg_columns = clean_data.iloc[:,0:114]\n", | |
"esg_columns.columns.values" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array(['start_stock_prices'], dtype=object)" | |
] | |
}, | |
"execution_count": 12, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"start_stock_columns = clean_data.iloc[:,116:117]\n", | |
"\n", | |
"string_header = ['start_stock_prices'] #grab the first row for the header\n", | |
"start_stock_columns = start_stock_columns[1:] #take the data less the header row\n", | |
"start_stock_columns.columns = string_header #set the header row as the df header\n", | |
"\n", | |
"start_stock_columns.columns.values" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array(['end_stock_prices'], dtype=object)" | |
] | |
}, | |
"execution_count": 13, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"end_stock_columns = clean_data.iloc[:,156:157]\n", | |
"\n", | |
"string_header = ['end_stock_prices'] #grab the first row for the header\n", | |
"end_stock_columns = end_stock_columns[1:] #take the data less the header row\n", | |
"end_stock_columns.columns = string_header #set the header row as the df header\n", | |
"\n", | |
"end_stock_columns.columns.values" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Ticker</th>\n", | |
" <th>CompanyName</th>\n", | |
" <th>COM-str-A</th>\n", | |
" <th>COM-str-B</th>\n", | |
" <th>COM-str-C</th>\n", | |
" <th>COM-str-D</th>\n", | |
" <th>COM-str-F</th>\n", | |
" <th>COM-str-G</th>\n", | |
" <th>COM-str-X</th>\n", | |
" <th>COM-con-A</th>\n", | |
" <th>...</th>\n", | |
" <th>PRO-str-#</th>\n", | |
" <th>PRO-con-#</th>\n", | |
" <th>ALC-con-#</th>\n", | |
" <th>GAM-con-#</th>\n", | |
" <th>TOB-con-#</th>\n", | |
" <th>FIR-con-#</th>\n", | |
" <th>MIL-con-#</th>\n", | |
" <th>NUC-con-#</th>\n", | |
" <th>start_stock_prices</th>\n", | |
" <th>end_stock_prices</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>COMS</td>\n", | |
" <td>3Com Corporation</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NR</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>...</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>ABT</td>\n", | |
" <td>Abbott Laboratories</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NR</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>...</td>\n", | |
" <td>0.0</td>\n", | |
" <td>3.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>...</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>75</td>\n", | |
" <td>83</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>5</th>\n", | |
" <td>ADCT</td>\n", | |
" <td>ADC Telecommunications, Inc.</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NR</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>...</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>6</th>\n", | |
" <td>ADBE</td>\n", | |
" <td>Adobe Systems Incorporated</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NR</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>...</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>35.25</td>\n", | |
" <td>102.81</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"<p>5 rows × 116 columns</p>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Ticker CompanyName COM-str-A COM-str-B COM-str-C \\\n", | |
"0 COMS 3Com Corporation 0.0 0.0 0.0 \n", | |
"1 ABT Abbott Laboratories 0.0 0.0 0.0 \n", | |
"2 NaN NaN NaN NaN NaN \n", | |
"5 ADCT ADC Telecommunications, Inc. 0.0 0.0 0.0 \n", | |
"6 ADBE Adobe Systems Incorporated 0.0 0.0 0.0 \n", | |
"\n", | |
" COM-str-D COM-str-F COM-str-G COM-str-X COM-con-A ... \\\n", | |
"0 1.0 0.0 NR 0.0 0.0 ... \n", | |
"1 0.0 0.0 NR 0.0 0.0 ... \n", | |
"2 NaN NaN NaN NaN NaN ... \n", | |
"5 0.0 0.0 NR 0.0 0.0 ... \n", | |
"6 0.0 0.0 NR 0.0 0.0 ... \n", | |
"\n", | |
" PRO-str-# PRO-con-# ALC-con-# GAM-con-# TOB-con-# FIR-con-# MIL-con-# \\\n", | |
"0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", | |
"1 0.0 3.0 0.0 0.0 0.0 0.0 0.0 \n", | |
"2 NaN NaN NaN NaN NaN NaN NaN \n", | |
"5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", | |
"6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", | |
"\n", | |
" NUC-con-# start_stock_prices end_stock_prices \n", | |
"0 0.0 NaN NaN \n", | |
"1 0.0 NaN NaN \n", | |
"2 NaN 75 83 \n", | |
"5 0.0 NaN NaN \n", | |
"6 0.0 35.25 102.81 \n", | |
"\n", | |
"[5 rows x 116 columns]" | |
] | |
}, | |
"execution_count": 14, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"minimum_data = pd.concat([esg_columns, start_stock_columns, end_stock_columns], axis=1)\n", | |
"minimum_data.shape\n", | |
"minimum_data.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Ticker</th>\n", | |
" <th>CompanyName</th>\n", | |
" <th>COM-str-A</th>\n", | |
" <th>COM-str-B</th>\n", | |
" <th>COM-str-C</th>\n", | |
" <th>COM-str-D</th>\n", | |
" <th>COM-str-F</th>\n", | |
" <th>COM-str-G</th>\n", | |
" <th>COM-str-X</th>\n", | |
" <th>COM-con-A</th>\n", | |
" <th>...</th>\n", | |
" <th>PRO-str-#</th>\n", | |
" <th>PRO-con-#</th>\n", | |
" <th>ALC-con-#</th>\n", | |
" <th>GAM-con-#</th>\n", | |
" <th>TOB-con-#</th>\n", | |
" <th>FIR-con-#</th>\n", | |
" <th>MIL-con-#</th>\n", | |
" <th>NUC-con-#</th>\n", | |
" <th>start_stock_prices</th>\n", | |
" <th>end_stock_prices</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>...</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>75</td>\n", | |
" <td>83</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>6</th>\n", | |
" <td>ADBE</td>\n", | |
" <td>Adobe Systems Incorporated</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NR</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>...</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>35.25</td>\n", | |
" <td>102.81</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>12</th>\n", | |
" <td>APD</td>\n", | |
" <td>Air Products & Chemicals, Inc.</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>1.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NR</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>...</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>55.5</td>\n", | |
" <td>32.25</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>13</th>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>...</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>68</td>\n", | |
" <td>36.31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>17</th>\n", | |
" <td>AL</td>\n", | |
" <td>Alcan Aluminium Limited</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>NR</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>...</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>37.25</td>\n", | |
" <td>33.38</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"<p>5 rows × 116 columns</p>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Ticker CompanyName COM-str-A COM-str-B COM-str-C \\\n", | |
"2 NaN NaN NaN NaN NaN \n", | |
"6 ADBE Adobe Systems Incorporated 0.0 0.0 0.0 \n", | |
"12 APD Air Products & Chemicals, Inc. 0.0 0.0 1.0 \n", | |
"13 NaN NaN NaN NaN NaN \n", | |
"17 AL Alcan Aluminium Limited 0.0 0.0 0.0 \n", | |
"\n", | |
" COM-str-D COM-str-F COM-str-G COM-str-X COM-con-A ... \\\n", | |
"2 NaN NaN NaN NaN NaN ... \n", | |
"6 0.0 0.0 NR 0.0 0.0 ... \n", | |
"12 0.0 0.0 NR 0.0 0.0 ... \n", | |
"13 NaN NaN NaN NaN NaN ... \n", | |
"17 0.0 0.0 NR 0.0 0.0 ... \n", | |
"\n", | |
" PRO-str-# PRO-con-# ALC-con-# GAM-con-# TOB-con-# FIR-con-# \\\n", | |
"2 NaN NaN NaN NaN NaN NaN \n", | |
"6 0.0 0.0 0.0 0.0 0.0 0.0 \n", | |
"12 0.0 0.0 0.0 0.0 0.0 0.0 \n", | |
"13 NaN NaN NaN NaN NaN NaN \n", | |
"17 0.0 0.0 0.0 0.0 0.0 0.0 \n", | |
"\n", | |
" MIL-con-# NUC-con-# start_stock_prices end_stock_prices \n", | |
"2 NaN NaN 75 83 \n", | |
"6 0.0 0.0 35.25 102.81 \n", | |
"12 0.0 0.0 55.5 32.25 \n", | |
"13 NaN NaN 68 36.31 \n", | |
"17 0.0 0.0 37.25 33.38 \n", | |
"\n", | |
"[5 rows x 116 columns]" | |
] | |
}, | |
"execution_count": 15, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"#Let's filter this down to only those companies for which we have\n", | |
"# a starting and ending stock price over this period. \n", | |
"yes_start_date = minimum_data[minimum_data['start_stock_prices'].notnull()]\n", | |
"yes_end_date = yes_start_date[yes_start_date['end_stock_prices'].notnull()]\n", | |
"yes_end_date.head()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's pick a category to start with. Why CEO (DIV-str-A)? \n", | |
"\n", | |
"According to the KLD documentation, this category indicates if The company's chief executive officer is a woman or a member of a minority group." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Ticker</th>\n", | |
" <th>CompanyName</th>\n", | |
" <th>DIV-str-A</th>\n", | |
" <th>start_stock_prices</th>\n", | |
" <th>end_stock_prices</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>75</td>\n", | |
" <td>83</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>6</th>\n", | |
" <td>ADBE</td>\n", | |
" <td>Adobe Systems Incorporated</td>\n", | |
" <td>0.0</td>\n", | |
" <td>35.25</td>\n", | |
" <td>102.81</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>12</th>\n", | |
" <td>APD</td>\n", | |
" <td>Air Products & Chemicals, Inc.</td>\n", | |
" <td>0.0</td>\n", | |
" <td>55.5</td>\n", | |
" <td>32.25</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>13</th>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>68</td>\n", | |
" <td>36.31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>17</th>\n", | |
" <td>AL</td>\n", | |
" <td>Alcan Aluminium Limited</td>\n", | |
" <td>0.0</td>\n", | |
" <td>37.25</td>\n", | |
" <td>33.38</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Ticker CompanyName DIV-str-A start_stock_prices \\\n", | |
"2 NaN NaN NaN 75 \n", | |
"6 ADBE Adobe Systems Incorporated 0.0 35.25 \n", | |
"12 APD Air Products & Chemicals, Inc. 0.0 55.5 \n", | |
"13 NaN NaN NaN 68 \n", | |
"17 AL Alcan Aluminium Limited 0.0 37.25 \n", | |
"\n", | |
" end_stock_prices \n", | |
"2 83 \n", | |
"6 102.81 \n", | |
"12 32.25 \n", | |
"13 36.31 \n", | |
"17 33.38 " | |
] | |
}, | |
"execution_count": 16, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"div_str_a = yes_end_date[['Ticker', 'CompanyName', 'DIV-str-A', 'start_stock_prices', 'end_stock_prices']]\n", | |
"div_str_a.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"//anaconda/lib/python3.6/site-packages/ipykernel/__main__.py:1: SettingWithCopyWarning: \n", | |
"A value is trying to be set on a copy of a slice from a DataFrame.\n", | |
"Try using .loc[row_indexer,col_indexer] = value instead\n", | |
"\n", | |
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", | |
" if __name__ == '__main__':\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Ticker</th>\n", | |
" <th>CompanyName</th>\n", | |
" <th>DIV-str-A</th>\n", | |
" <th>start_stock_prices</th>\n", | |
" <th>end_stock_prices</th>\n", | |
" <th>returns</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>75</td>\n", | |
" <td>83</td>\n", | |
" <td>1.10667</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>6</th>\n", | |
" <td>ADBE</td>\n", | |
" <td>Adobe Systems Incorporated</td>\n", | |
" <td>0.0</td>\n", | |
" <td>35.25</td>\n", | |
" <td>102.81</td>\n", | |
" <td>2.9166</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>12</th>\n", | |
" <td>APD</td>\n", | |
" <td>Air Products & Chemicals, Inc.</td>\n", | |
" <td>0.0</td>\n", | |
" <td>55.5</td>\n", | |
" <td>32.25</td>\n", | |
" <td>0.581081</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>13</th>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>NaN</td>\n", | |
" <td>68</td>\n", | |
" <td>36.31</td>\n", | |
" <td>0.533971</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>17</th>\n", | |
" <td>AL</td>\n", | |
" <td>Alcan Aluminium Limited</td>\n", | |
" <td>0.0</td>\n", | |
" <td>37.25</td>\n", | |
" <td>33.38</td>\n", | |
" <td>0.896107</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Ticker CompanyName DIV-str-A start_stock_prices \\\n", | |
"2 NaN NaN NaN 75 \n", | |
"6 ADBE Adobe Systems Incorporated 0.0 35.25 \n", | |
"12 APD Air Products & Chemicals, Inc. 0.0 55.5 \n", | |
"13 NaN NaN NaN 68 \n", | |
"17 AL Alcan Aluminium Limited 0.0 37.25 \n", | |
"\n", | |
" end_stock_prices returns \n", | |
"2 83 1.10667 \n", | |
"6 102.81 2.9166 \n", | |
"12 32.25 0.581081 \n", | |
"13 36.31 0.533971 \n", | |
"17 33.38 0.896107 " | |
] | |
}, | |
"execution_count": 17, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"div_str_a['returns'] = div_str_a['end_stock_prices'] / div_str_a['start_stock_prices']\n", | |
"div_str_a.head()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"I'll comment briefly on a trend in this data. In 1991, when recordings begin, there is only one S&P500 company (out of 500)with a not-white-dude CEO. By 1999, we're up to a still-abysmal-but-better number at 20. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Ticker</th>\n", | |
" <th>CompanyName</th>\n", | |
" <th>start_stock_prices</th>\n", | |
" <th>end_stock_prices</th>\n", | |
" <th>returns</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>DIV-str-A</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0.0</th>\n", | |
" <td>85</td>\n", | |
" <td>85</td>\n", | |
" <td>85</td>\n", | |
" <td>85</td>\n", | |
" <td>85</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1.0</th>\n", | |
" <td>6</td>\n", | |
" <td>6</td>\n", | |
" <td>6</td>\n", | |
" <td>6</td>\n", | |
" <td>6</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Ticker CompanyName start_stock_prices end_stock_prices returns\n", | |
"DIV-str-A \n", | |
"0.0 85 85 85 85 85\n", | |
"1.0 6 6 6 6 6" | |
] | |
}, | |
"execution_count": 19, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"div_str_a.groupby(['DIV-str-A']).count()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAD8CAYAAABXe05zAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGOtJREFUeJzt3W+MXFd5x/Hf4/UmGUObBbyleE1wkJABhZCFFUrrCEGg\ndSAQLFo5oFblBZVfFCkkQo7sVqIECWFwhQEVIbkJBVoaYohxQ2hxUQJqE4nAGqd20uBC+dN4HcgG\n2ASagaztpy9mZj07mTtz78y9c8+58/1I1npn58+5c+Y+c+5znnuuubsAAPFYU3YDAADZELgBIDIE\nbgCIDIEbACJD4AaAyBC4ASAyBG4AiAyBGwAiQ+AGgMisLeJJ169f75s2bSriqQGgko4cOfKYu0+n\nuW8hgXvTpk2an58v4qkBoJLM7Mdp70uqBAAiQ+AGgMgQuAEgMgRuAIgMgRsAIkPgBoDIFFIOCCBe\nh44uaO/hEzq1VNeGqZp2bt2sbbMzZTcLbQjcAFYcOrqg3QePq758RpK0sFTX7oPHJYngHRBSJQBW\n7D18YiVot9SXz2jv4RMltQjdELgBrDi1VM90O8pB4AawYsNULdPtKAeBG8CKnVs3qzY5seq22uSE\ndm7dXFKL0A2TkwBWtCYgqSoJG4EbwCrbZmcI1IEjVQIAkSFwA0BkCNwAEBkCNwBEhsANAJEhcANA\nZAjcABAZAjcARIbADQCRIXADQGQI3AAQGQI3AESGwA0AkUm1OqCZ/UjSLyWdkXTa3eeKbBQAIFmW\nZV1f6+6PFdYSAEAqpEoAIDJpA7dL+jczO2JmO7rdwcx2mNm8mc0vLi7m10IAwCppA/cWd3+FpDdI\nepeZvbrzDu6+393n3H1ueno610YCAM5JFbjd/VTz56OSviTpVUU2CgCQrG/gNrNnmNlvtf4v6Q8l\nPVB0wwAA3aWpKnmupC+ZWev+/+TuXy20VQCARH0Dt7v/QNLLR9AWAEAKWeq4AZTk0NEF7T18QqeW\n6towVdPOrZu1bXam7GahJARuIHCHji5o98Hjqi+fkSQtLNW1++BxSSJ4jylOwAECt/fwiZWg3VJf\nPqO9h0+U1CKUjcANBO7UUj3T7ag+AjcQuA1TtUy3o/oI3EDgdm7drNrkxKrbapMT2rl1c0ktQtmY\nnAQC15qApKoELQRuIALbZmcI1FhBqgQAIkPgBoDIELgBIDIEbgCIDIEbACJD4AaAyBC4ASAyBG4A\niAyBGwAiQ+AGgMgQuAEgMgRuAIgMgRsAIkPgBoDIELgBIDIEbgCIDIEbACJD4AaAyBC4ASAyqQO3\nmU2Y2VEzu7PIBgEAessy4n63pIeKaggAIJ1UgdvMNkq6WtLNxTYHANBP2hH3RyXdKOlsgW0BAKTQ\nN3Cb2ZskPeruR/rcb4eZzZvZ/OLiYm4NBACslmbEvUXSNWb2I0mfl3Slmf1j553cfb+7z7n73PT0\ndM7NBAC09A3c7r7b3Te6+yZJb5N0t7v/aeEtAwB0RR03AERmbZY7u/s3JH2jkJYAAFJhxA0AkSFw\nA0BkCNwAEBkCNwBEJtPkJNDPoaML2nv4hE4t1bVhqqadWzdr2+xM2c0CKoXAjdwcOrqg3QePq758\nRpK0sFTX7oPHJYngDeSIVAlys/fwiZWg3VJfPqO9h0+U1CKgmgjcyM2ppXqm2wEMhsCN3GyYqmW6\nHcBgCNzIzc6tm1WbnFh1W21yQju3bi6pRUA1MTmJ3LQmIKkqAYpF4Eauts3OEKiBgpEqAYDIELgB\nIDIEbgCIDIEbACJD4AaAyBC4ASAyBG4AiAyBGwAiQ+AGgMgQuAEgMgRuAIgMgRsAIkPgBoDIELgB\nIDIEbgCITN/AbWYXmNm3zOw/zexBM7tpFA0DAHSX5kIKv5F0pbv/yswmJd1jZv/q7t8suG0ASnbo\n6AJXNApQ38Dt7i7pV81fJ5v/vMhGASjfoaML2n3wuOrLZyRJC0t17T54XJII3iVLleM2swkzu1/S\no5K+5u73FdssAGXbe/jEStBuqS+f0d7DJ0pqEVpSXXPS3c9IuszMpiR9ycwucfcH2u9jZjsk7ZCk\niy66KPeGAhitU0v1TLcXiZTNapmqStx9SdI3JF3V5W/73X3O3eemp6dzah6AsmyYqmW6vSitlM3C\nUl2ucymbQ0cXRtqOkKSpKplujrRlZjVJr5f03aIbBqBcO7duVm1yYtVttckJ7dy6eaTtIGXzdGlS\nJc+T9Bkzm1Aj0B9w9zuLbRaAsrVSEWWnKEJK2YQiTVXJMUmzI2gLgMBsm50pPZe8YaqmhS5BetQp\nm5Bw5iSAoIWSsglJqqoSAChLKCmbkBC4AQQvhJRNSEiVAEBkGHEDHTjZA6EjcANtWJ8DMSBVArTh\nZA/EgMANtOFkD8SAwA20CWV9DqAXAjfQhpM9EAMmJ4E2nOyBGBC4gQ6c7IHQkSoBgMgw4sZQOFkF\nGD0C9whUNbhxskpvVe13lI9UScGqfNklTlZJVuV+R/kI3AWrcnDjZJVkVe53lI/AXbAqBzdOVklW\n5X5H+QjcBatycONklWRV7neUj8BdsCoHt22zM/rgW1+mmamaTNLMVE0ffOvLmIBTtfsd5aOqpGBV\nPxOPk1W6q3q/o1zm7rk/6dzcnM/Pz+f+vABQVWZ2xN3n0tyXVAkARIbADQCRIXADQGQI3AAQGQI3\nAESGckCgBxaKQoj6Bm4ze76kz0r6XUlnJe13948V3TCgbKx+WE1V+DJOkyo5Lek97v4SSZdLepeZ\nvbTYZgHlY6Go6qnKqo19A7e7P+Lu32n+/5eSHpIU19cTMAAWiqqeqnwZZ5qcNLNNkmYl3dflbzvM\nbN7M5hcXF/NpHVAiFoqqnqp8GacO3Gb2TEm3S7re3Z/o/Lu773f3OXefm56ezrONQClYKKp6qvJl\nnCpwm9mkGkH7c+5+sNgmxevQ0QVt2XO3Lt71FW3Zc3d0ebMoHDsg7btEet9U4+exA4W9FKsfVk9V\nvozTVJWYpFskPeTuHym+SXGiAmEEjh2QvnydtNw8rH384cbvknTp9kJesmqrH4ZeUVF0+6qyamPf\n1QHN7ApJ/yHpuBrlgJL0l+7+L0mPGcfVAbfsuVsLXfJkM1M13bvryhJaVEH7LmkE6w4nz67Xtev+\nLsodcJQ6BxdSY7QZylFE6O0rWq6rA7r7Pe5u7n6pu1/W/JcYtMdVVSY9gvb4ya43b7CfRVvWNUqh\nV1SE3r6QcMp7Tqoy6RG0Czd2vfmUP0cSO3k/oQ8uQm9fSAjcOanKpEfQXvdeaXL1F+GTfp4+fPpc\nfpudPFnog4vQ2xcSAndOqEAYgUu369svu0k/0bTOuunk2fXatfznuuPsFSt3YSdPFvrgIvT2hYRF\npnJUtQqE0Bw6uqDd336B6svdl8phJ+8t9IqK0NsXEq45iWgkVe5I0lRtUmbS0pPL7PAYuTzKGLNU\nlTDiRjR65a9/c/osNfQBGiaghV5z3lLGORzkuBGNpPz1hBllZAEaZiW+mFbxK6OMkcCN4LWWElhY\nqss6/labnNCZhHQfFSblGiagxVTTXUYZI4EbQWsfeUmSSyvBu1W5M0MZWZCGCWgx1XSXUcZI4K6g\nKi121W3k5Tq3lMC22RnKyAI1TECLqaa7jM8fgbtiYsoNppFm5EUNfZiGCWgxfRmX8fmjqqRieuUG\nYwxkG6ZqXUsAO0de1NCHZ5i67Nhqukf9+SNwV0xMucE0dm7d3HXFuBBHXni6YQIaX8bJSJVUTEy5\nwTRIgwBPN5Yj7lgK+wdRxREqIy9gtbEbcVdt8q5T5wj1Wesmdf7aNbrhtvujrzAB0DB2gTumwv5B\nbZud0b27rtS+ay/Tr5fPaqm+XMkvqUFUqVQS4yvaVMmg6Y6qTd71UrUKk2FxXVBURZSBe5gdMG15\nWWy6fZGN05dUGnyRhaPK80yjEGWqZJh0R0yF/Wkl5e0vrE12vX/nl9S4pA/4IgtD1eeZRiHKEfcw\nO2Bshf29tEYt3Y4g6stndMHkGtUmJ3pWmIxT+qCqR1uxifnIJ5QjhSgDd+cOeM2ae3Tj2gPasOZn\n0r6NjWsTXro98fFVKC/rDLjdLD25rH3XXtbzgxbzTpRVr1LJqq0bHWKbWmI98glpkBNl4G7fAa9Z\nc4/2TN6sdfZU44+PPyx9+brG/3sE76ySdoSydpBuAbfThqla3y+pWHeiQSQdbUkaeIcMaWcOuU3t\nYj3yCWmQE2Xgbt8Bb3zywLmg3bJcl+56f26BO2lHmP/xz3X7kYVSdpB+gTVt3j7WnWhQ3b7Ituy5\ne+AdMqSdOeQ2tRv2JLGyBkshDXKinJyUztUqb1zzs+53ePxkbq+VtCPcet/DpdWE9wqsWU4Lr+Jk\nbVZVWzc6xDa1G2YZg0EnNoeZgG89NunqvGUMcqIcca9y4cZGeqTb7TlJ+sCXeeWVpFFL1nU8qjRZ\nO6hhjjpCPGIJsU2dBp1nGuRoYpjUUb+5pLIGOdGOuFe87r3SZMcHcrLWuD0nva51mOX+ecpz8aXW\n0csP91y9cnGCcVK1daNDbFNeBjmayPsSai1lLnjWd8RtZp+S9CZJj7r7JcU3KaNWHvuu9zfSIxf2\nryrJKml0+0evnFmV427dPsgOMkjerujqmFHkEkOofqjautEhtikvgxxNFJEKM0n37rqy7+OLkiZV\n8mlJfyvps8U2ZQiXbs81UHfqtSPMveDZQ+8gIVYBjKJNIW131daNDrFNeRhkYrNqqTBJMk/I0666\nk9kmSXemHXHPzc35/Pz8cC0bI60rmHdqXVexDKNoU4jbPa5COPJJK2tbu+Wp084HDfPYrMzsiLvP\npblv/JOTFRBiFcAo2hTido+jkI580sh6NFG1VJiUY+A2sx2SdkjSRRddlNfTjoUQD8dG0aYQt3sc\nhV73nYeqpcJyqypx9/3uPufuc9PT03k97UiUtsjSsQPSvkt0z6/fqnvPv07XrLln5U+FVAE0X0/v\nm2r8PHYg8a6jqEyocvVDp6I+Y3k8L0c+gylzcbaxT5UUdZjYNw937EDj1PzleqOczx7Th867RfaU\nNP/bf5D/4Vjb60nquzRAr0PEvPKhoR6G5q3Iz1gez1vFI59hP6P9Hl92eqnv5KSZ3SrpNZLWS/qp\npL9291t6PaaoyckiJlCKmCBLNaGx75KEE4eeL93wQM/nHug9GPD1ur3+qCZrQtP+3r/jmd/SjZO3\naV39J31LUPP+jPVaFXKQ561anw67PWkeX0TcyHVy0t3fPlArctbrG04afNQ2yGFiv+CZKmeYdEp+\nj1P1h/qWH+D1uoktH5rXl337e3/Nmnt04/LNWnc63cJmeaYi0qwKmfV5q3bkM+xnNM3jy04vBZ8q\n6bfm9E1fflC/Xj478CFL1sPENMEzVacOcKr+UB/InJYGKPsDm0Weh7Pt7/2Na7MtbJZnKiLtqpBZ\nhTgBN6hhP6NpHl92einoU97bF5RJ8osnl7sGs+tTXtU86wRZmtNnkzpv1e0DnKo/1Acyp6UBUm1b\nIPK8MPSqndYe636nhKOXPCdh81oVssqG/YymeXzZE+tBB+40o4te0qwclnXNjzTBM1WnXrpdevPH\nGzlmWePnmz8uXbo9cbZ6qA9kj9fLouwPbBZ5Hh20v8enfH33OyUcvQy6rky3z0Feq0JWWZbPaLf3\nOM3j81wraBCpzpzMKq/JyYt3fSVxKUWp8Waev3aNlurLPZ+njLP9Bs2t9poYkRTEJFIsa5jkOYHU\nmeNedfEOqXH0MsAXYZrXa+m1Pk6vz0Ceef5Y8uBp2tpvXxv1tmaZnAw6cCfteFJj5+t29ZJuTNIP\n91w9dHuk4mfg+wWbql1iq5u83uO8+2rQqpJez5PUD1v23K1XPvG1xiX57DGd8vX68OntOtIsFU3b\nj6G+lyEIbcmFypzynmXN6V7lUVnyr/12qqJn4Psd3g86iVR23WkWw1YFtPfhhbVJXTC5RktPLg/d\nV6vf+6sl3ZT5OdJWR725Y1S/0R7TnsmbtfsJadts+qV386oCiq2aKI2YJto7BR240wbJ1g6VNCrI\nckmkNMGtyBn4omarY9rxhtmhOvtwqb6s2uSE9l17WRDbmdQP77vjQf3m9LnqqG6VK+vsKe0+7wuS\nPpj69fIKTjEHuSRlV4YMI+jALWULksOOhkMIbsNejy9JTDveMDtUlj4sI3WU9H53ztMkVa48VwkV\nLQl6vZdZtj/mIJekqH1tFIKuKhnEttnBr+YSQnArarY6pjK+YSpX0vbhoNcuHFba9zupcsUy1t0n\nvZevffF0pu2PqZoorbIrQ4YR/Ih7lEIZVRSRiolpdDHMkVPaPizr6CqpHy6YXKNfPHlu1P3h09u7\nV65krLtPei+zbn+353nti6e19/AJ3XDb/UFPdvcS64lHBO42MQW3rGI7rXnQHSptHxZ1dDXo5La0\nujrqjrNX6Dxfo/evuz115UrSa3d7L2+47f7M29/+PDFNdlcRgbtNbMEtq1hHF1mk7cMijq7ymNxu\nb/cVW/9C62Y/kOtrtwy7/SHMB42zYOq4Y6kxxmBC698i6pLLrAvO+trDbn/SyXF5njORVWifsayi\nq+PuNlq44bb7df1t96+caBNTB2C1EPu3iKOrMie3s772sNsfynxQy7ilboII3N0Ou1rf5lXvgHEQ\nav/mnToqM5gN8trDbH9o80HjlroJohyw34hk0BXdEIZx6d8yS+ZG/dqhldKFUMo7SkGMuJNGC+2q\n2gHjYFz6t8zJ7TJeO68jljxy06GlbooWRODudtjVqaodMA7GqX/LrNyJsWoor9x0aKmbogURuNtH\nCwtLjYvnts9YV7kDxgH9C6n7yDqv3HTVS3k7BVMO2C72sp4qyrNP6N/xk1R+mHQUVmZZYVmiKwfs\nFOMhX5XlXWpF/46fpJH1hJnOdBk8ViV1VpQgqkpClXQJsXGT57UbMZ6SJp/PuFdu8apRIHAnKGv1\nuBCNW6kV8pc0gm6VEYZSVhiLIFMlIRi3gv5exq3UCvnrVfVB6iw7RtwJGGWeU8W1mDFaoZ2wEztG\n3AkYZZ4zbqVWKAYj6/wQuBOMW0F/P+x0QDgI3AkYZQIIVarAbWZXSfqYpAlJN7v7nkJbFQhGmQBC\n1Hdy0swmJH1C0hskvVTS283spUU3DADQXZqqkldJ+r67/8Ddn5L0eUlvKbZZAIAkaQL3jKSH234/\n2bxtFTPbYWbzZja/uLiYV/sAAB3SBG7rctvTFhdw9/3uPufuc9PT08O3DADQVZrAfVLS89t+3yjp\nVDHNAQD0kyZwf1vSi8zsYjM7T9LbJN1RbLMAAElSrcdtZm+U9FE1ygE/5e4f6HP/RUk/HrBN6yU9\nNuBjYzWO2yyN53aP4zZL47ndWbf5Be6eKs9cyIUUhmFm82kXE6+KcdxmaTy3exy3WRrP7S5ym1lk\nCgAiQ+AGgMiEGLj3l92AEozjNkvjud3juM3SeG53YdscXI4bANBbiCNuAEAPwQRuM7vKzE6Y2ffN\nbFfZ7SmKmT3fzL5uZg+Z2YNm9u7m7c82s6+Z2feaP59VdlvzZmYTZnbUzO5s/n6xmd3X3ObbmucJ\nVIqZTZnZF83su80+/72q97WZ3dD8bD9gZrea2QVV7Gsz+5SZPWpmD7Td1rVvreHjzfh2zMxeMcxr\nBxG4x2wFwtOS3uPuL5F0uaR3Nbd1l6S73P1Fku5q/l4175b0UNvvH5K0r7nNv5D0zlJaVayPSfqq\nu79Y0svV2P7K9rWZzUi6TtKcu1+ixrkfb1M1+/rTkq7quC2pb98g6UXNfzskfXKYFw4icGuMViB0\n90fc/TvN//9SjR15Ro3t/Uzzbp+RtK2cFhbDzDZKulrSzc3fTdKVkr7YvEsVt/m3Jb1a0i2S5O5P\nufuSKt7XaqzzXzOztZLWSXpEFexrd/93ST/vuDmpb98i6bPe8E1JU2b2vEFfO5TAnWoFwqoxs02S\nZiXdJ+m57v6I1Ajukn6nvJYV4qOSbpR0tvn7cyQtufvp5u9V7PMXSlqU9PfNFNHNZvYMVbiv3X1B\n0t9I+l81Avbjko6o+n3dktS3uca4UAJ3qhUIq8TMninpdknXu/sTZbenSGb2JkmPuvuR9pu73LVq\nfb5W0iskfdLdZyX9nyqUFummmdN9i6SLJW2Q9Aw10gSdqtbX/eT6eQ8lcI/VCoRmNqlG0P6cux9s\n3vzT1qFT8+ejZbWvAFskXWNmP1IjDXalGiPwqebhtFTNPj8p6aS739f8/YtqBPIq9/XrJf3Q3Rfd\nfVnSQUm/r+r3dUtS3+Ya40IJ3GOzAmEzt3uLpIfc/SNtf7pD0jua/3+HpH8edduK4u673X2ju29S\no2/vdvc/kfR1SX/cvFultlmS3P0nkh42s83Nm14n6b9U4b5WI0VyuZmta37WW9tc6b5uk9S3d0j6\ns2Z1yeWSHm+lVAbi7kH8k/RGSf8t6X8k/VXZ7SlwO69Q4xDpmKT7m//eqEbO9y5J32v+fHbZbS1o\n+18j6c7m/18o6VuSvi/pC5LOL7t9BWzvZZLmm/19SNKzqt7Xkm6S9F1JD0j6B0nnV7GvJd2qRh5/\nWY0R9TuT+laNVMknmvHtuBpVNwO/NmdOAkBkQkmVAABSInADQGQI3AAQGQI3AESGwA0AkSFwA0Bk\nCNwAEBkCNwBE5v8BOR60GHJtxXEAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x110c81c18>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"import random\n", | |
"%matplotlib inline \n", | |
"\n", | |
"for title, group in div_str_a.groupby('DIV-str-A'):\n", | |
" my_randoms = random.sample(range(100), len(group))\n", | |
" returns = list(group['returns'])\n", | |
" plt.scatter(x=my_randoms, y=returns)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"In orange, we have companies with minority CEOs in 1999. In blue, companies with non-minority CEOs in 1999. The height of each dot represents returns on stock prices throughout the '90s. This isn't enough information to draw any conclusions from this data; we used DIV-str-A as an example to get some of our analytical tools in place. Next, We'll add up company's ratings on an ESG metric *throughout* the '90s and plot that score relative to returns." | |
] | |
} | |
], | |
"metadata": { | |
"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.6.1" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment