Skip to content

Instantly share code, notes, and snippets.

@chelseatroy
Last active July 22, 2020 21:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save chelseatroy/07814a22588f6f5410a5763ee7a4e269 to your computer and use it in GitHub Desktop.
Save chelseatroy/07814a22588f6f5410a5763ee7a4e269 to your computer and use it in GitHub Desktop.
A first pass at data analysis on some ESG and Performance Data
Display the source blob
Display the rendered blob
Raw
{
"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 &amp; 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 &amp; 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 &amp; 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 &amp; 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": "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\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