{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "<img src=\"http://www.nserc-crsng.gc.ca/_gui/wmms.gif\" alt=\"Canada logo\" align=\"right\">\n", "\n", "<br>\n", "\n", "<img src=\"http://www.triumf.ca/sites/default/files/styles/gallery_large/public/images/nserc_crsng.gif?itok=H7AhTN_F\" alt=\"NSERC logo\" align=\"right\" width = 90>\n", "\n", "\n", "\n", "# Exploring NSERC Awards Data\n", "\n", "\n", "Canada's [Open Government Portal](http://open.canada.ca/en) includes [NSERC Awards Data](http://open.canada.ca/data/en/dataset/c1b0f627-8c29-427c-ab73-33968ad9176e) from 1995 through 2016.\n", "\n", "The awards data (in .csv format) were copied to an [Amazon Web Services S3 bucket](http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html). This open Jupyter notebook shows the large trends over the data and compares entire selections with each other.\n", "\n", "> **Acknowledgement:** I thank [Ian Allison](https://github.com/ianabc) and [James Colliander](http://colliand.com) of the [Pacific Institute for the Mathematical Sciences](http://www.pims.math.ca/) for building the [JupyterHub service](http://syzygy.ca) and for help with this notebook. -- I. Heisz" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1995\n", "1996\n", "1997\n", "1998\n", "1999\n", "2000\n", "2001\n", "2002\n", "2003\n", "2004\n", "2005\n", "2006\n", "2007\n", "2008\n", "2009\n", "2010\n", "2011\n", "2012\n", "2013\n", "2014\n", "2015\n", "2016\n" ] }, { "data": { "text/plain": [ "Index(['Name', 'Department', 'OrganizationID', 'Institution', 'ProvinceEN',\n", " 'CountryEN', 'FiscalYear', 'AwardAmount', 'ProgramID', 'Committee'],\n", " dtype='object')" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "import sys\n", "\n", "## Bring in a selection of the NSERC awards data starting with 1995 and ending with 2016.\n", "## Throw away as much as you can to keep the DataFrame small enough to manipulate using a laptop.\n", "\n", "df = pd.DataFrame()\n", "\n", "startYear = 1995\n", "endYear = 2017 # The last year is not included, so if it was 2017 it means we include the 2016 collection but not 2017.\n", "\n", "for year in range(startYear, endYear):\n", " file = 'https://s3.ca-central-1.amazonaws.com/open-data-ro/NSERC/NSERC_GRT_FYR' + str(year) + '_AWARD.csv.gz'\n", " df = df.append(pd.read_csv(file, \n", " compression='gzip', \n", " usecols = [1, 2, 3, 4, 5, 7, 9, 11, 12, 17], \n", " encoding='latin-1'\n", " )\n", " )\n", " print(year)\n", " \n", "## Rename columns for better readability.\n", "df.columns = ['Name', 'Department', 'OrganizationID',\n", " 'Institution', 'ProvinceEN', 'CountryEN',\n", " 'FiscalYear', 'AwardAmount', 'ProgramID',\n", " 'Committee'] \n", "\n", "## Strip out any leading or trailing whitespace\n", "df.columns.str.strip()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DataFrame: 207.20 Mb\n" ] } ], "source": [ "## Quantify data stored in memory.\n", "print(\"DataFrame: {:4.2f} Mb\".format(sys.getsizeof(df) / (1024. * 1024)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Check the data" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Name 457894\n", "Department 457677\n", "OrganizationID 457896\n", "Institution 457896\n", "ProvinceEN 454115\n", "CountryEN 457896\n", "FiscalYear 457896\n", "AwardAmount 457896\n", "ProgramID 457896\n", "Committee 457896\n", "dtype: int64\n" ] }, { "data": { "text/html": [ "<div>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Name</th>\n", " <th>Department</th>\n", " <th>OrganizationID</th>\n", " <th>Institution</th>\n", " <th>ProvinceEN</th>\n", " <th>CountryEN</th>\n", " <th>FiscalYear</th>\n", " <th>AwardAmount</th>\n", " <th>ProgramID</th>\n", " <th>Committee</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>16700</th>\n", " <td>NaN</td>\n", " <td>Head Office</td>\n", " <td>11846</td>\n", " <td>Pacific Institute for the Mathematical Sciences</td>\n", " <td>British Columbia</td>\n", " <td>CANADA</td>\n", " <td>1999</td>\n", " <td>40373</td>\n", " <td>MISPJ</td>\n", " <td>103</td>\n", " </tr>\n", " <tr>\n", " <th>16701</th>\n", " <td>NaN</td>\n", " <td>Head Office</td>\n", " <td>14687</td>\n", " <td>National Engineering Week</td>\n", " <td>Ontario</td>\n", " <td>CANADA</td>\n", " <td>1999</td>\n", " <td>7500</td>\n", " <td>MISPJ</td>\n", " <td>103</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " Name Department OrganizationID \\\n", "16700 NaN Head Office 11846 \n", "16701 NaN Head Office 14687 \n", "\n", " Institution ProvinceEN \\\n", "16700 Pacific Institute for the Mathematical Sciences British Columbia \n", "16701 National Engineering Week Ontario \n", "\n", " CountryEN FiscalYear AwardAmount ProgramID Committee \n", "16700 CANADA 1999 40373 MISPJ 103 \n", "16701 CANADA 1999 7500 MISPJ 103 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# missing column info check\n", "columnAmounts = df.count()\n", "print(str(columnAmounts))\n", "\n", "#\n", "missingData = pd.DataFrame()\n", "missingData.append(df.loc[(df['Name'].isnull())])\n", "#missingData.append(df.loc[(df['Department'].isnull())])\n", "#missingData.append(df.loc[(df['ProvinceEN'].isnull()) & (df['CountryEN'] == 'CANADA')])\n", "\n", "# \n", "# df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Information about the Distribution of Wealth Among Researcher's Funding" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# If you do more than one year at a time you risk crashing the kernel, \n", "# the distribution is very similar year to year.\n", "year = 2016 # Year you want to select for\n", "selectedYearData = df.loc[(df['FiscalYear'] == year)] # Gets the data for the selected year\n", "\n", "# The sum of all awards that each individual has received (during the selected year)\n", "individualAwardSum = selectedYearData.groupby(['Name'])['AwardAmount'].transform('sum')\n", "\n", "# Make a new column to show each researchers total awards received\n", "selectedYearData = selectedYearData.assign(TotalAward = individualAwardSum)\n", "\n", "# Drop the duplicate names, now that we have the award amount info from them.\n", "deduplicatedData = selectedYearData.drop_duplicates(subset = 'Name')\n", "\n", "# Sort by total award for the given year\n", "byAwardAmount = deduplicatedData.sort_values(by=['TotalAward'], ascending=[True])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The mean of AwardAmount is 38118.8182775\n", "The median of AwardAmount is 21000.0\n", "The standard deviation of AwardAmount is 141524.555172\n" ] } ], "source": [ "## Statistical information about a specific column in the data\n", "\n", "# Change this value to get information about the column you are interested in\n", "columnYouWantInformationOn = 'AwardAmount'\n", "\n", "mean = df[columnYouWantInformationOn].mean()\n", "print('The mean of ' + str(columnYouWantInformationOn) + ' is ' + str(mean))\n", "\n", "median = df[columnYouWantInformationOn].median()\n", "print('The median of ' + str(columnYouWantInformationOn) + ' is ' + str(median))\n", "\n", "standardDeviation = df[columnYouWantInformationOn].std()\n", "print('The standard deviation of ' + str(columnYouWantInformationOn) + ' is ' + str(standardDeviation))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Wealth Distribution Plot" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\r\n", "Usage: \r\n", " pip install [options] <requirement specifier> [package-index-options] ...\r\n", " pip install [options] -r <requirements file> [package-index-options] ...\r\n", " pip install [options] [-e] <vcs project url> ...\r\n", " pip install [options] [-e] <local project path> ...\r\n", " pip install [options] <archive url/path> ...\r\n", "\r\n", "no such option: --user:\r\n" ] } ], "source": [ "## Imports For Plotting\n", "import matplotlib.pyplot as plt\n", "import matplotlib.ticker as mtick\n", "!pip3 install plotly --user: #Plotly for interactive graphing\n", "import plotly.plotly as py\n", "import plotly.graph_objs as go" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x7fb3c35ed320>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "## Note: this is a static plot with hardcoded variables which are not meant to be changed.\n", "## It is also processing a lot of data so it may take a minute.\n", "\n", "axes = plt.gca() # creates the axes\n", "\n", "## y axis\n", "yAxis = 'AwardAmount'\n", "y = byAwardAmount[yAxis]\n", "y = y/10**6 # scales y\n", "plt.ylabel(yAxis+' In Millions', fontsize=18) # y axis label\n", "\n", "## x axis\n", "x = range(byAwardAmount.shape[0])\n", "plt.xlabel('IndividualResearchers', fontsize=16) # x axis label\n", "axes.set_xticklabels([]) # make it so the x axis is not numbered\n", "\n", "plt.title(str(year) + ' NSERC Funding Distribution') # plot title\n", "plot = plt.scatter(x, y, s=1, alpha=0.3) # make the plot\n", "plt.show() # draw the plot" ] } ], "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.4" } }, "nbformat": 4, "nbformat_minor": 2 }