Created
October 19, 2020 21:04
-
-
Save mwy912/765316cc3c179930f68daa30e1abd54e to your computer and use it in GitHub Desktop.
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": "<center>\n <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/Logos/organization_logo/organization_logo.png\" width=\"300\" alt=\"cognitiveclass.ai logo\" />\n</center>\n\n# Scraping and Analyzing Basketball Statistics with Python\n\n## Objectives\n\nAfter completing this lab you will be able to:\n\n- Comfortable do web scrapping to collate data from websites\n- Analyze the data, visualize it and make inferences\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "## Description\n\nWeb scraping involves extracting data from websites. In this assignment, you will web scrape basketball statistics from Wikipedia of some of the greatest basketball players. You will perform some analysis on the data using Pandas, plot, data answer some basic questions then store the data on IBM cloud.\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "The players we will use are shown in the following figure from left to right we have <a href='https://en.wikipedia.org/wiki/Michael_Jordan'>Michael Jordan </a>,\n<a href='https://en.wikipedia.org/wiki/Kobe_Bryant'>Kobe Bryant</a>,\n<a href='https://en.wikipedia.org/wiki/LeBron_James'>Lebron James</a> and <a href='https://en.wikipedia.org/wiki/Stephen_Curry'>Stephen Curry</a>.\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/projects/EdX/Images/Michael_Jordan.jpg\" alt=\"Trulli\" width=\"100\" height=\"200\">\n<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/projects/EdX/Images/Kobe_Bryant.jpg\" alt=\"Trulli\" width=\"100\" height=\"75\">\n<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/projects/EdX/Images/Lebron.jpg\" alt=\"Trulli\" width=\"100\" height=\"200\">\n<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/projects/EdX/Images/Stephen_Curry_Shooting.jpg\" alt=\"Trulli\" width=\"100\" height=\"75\">\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "<center>Figure: following figure from left to right we have <a href='https://en.wikipedia.org/wiki/Michael_Jordan'>Michael Jordan </a>,\n<a href='https://en.wikipedia.org/wiki/Kobe_Bryant'>Kobe Bryant</a>,\n<a href='https://en.wikipedia.org/wiki/LeBron_James'>Lebron James</a> and <a href='https://en.wikipedia.org/wiki/Stephen_Curry'>Stephen Curry</a></center> <i>(image source Wikipedia)</i>\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "<b>Wikipedia.org</b> has the statistics of each Basketball Player in different tables; we will use the table <bb>regular season</b>. The Table for <a href='https://en.wikipedia.org/wiki/Michael_Jordan'>Michael Jordan </a> is shown here:\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "<table class=\"wikitable sortable\" style=\"font-size:95%; text-align:right;\">\n<tbody><tr>\n<th>Year\n</th>\n<th>Team\n</th>\n<th><abbr title=\"Games played\">GP</abbr>\n</th>\n<th><abbr title=\"Games started\">GS</abbr>\n</th>\n<th><abbr title=\"Minutes per game\">MPG</abbr>\n</th>\n<th><abbr title=\"Field goal percentage\">FG%</abbr>\n</th>\n<th><abbr title=\"3-point field-goal percentage\">3P%</abbr>\n</th>\n<th><abbr title=\"Free-throw percentage\">FT%</abbr>\n</th>\n<th><abbr title=\"Rebounds per game\">RPG</abbr>\n</th>\n<th><abbr title=\"Assists per game\">APG</abbr>\n</th>\n<th><abbr title=\"Steals per game\">SPG</abbr>\n</th>\n<th><abbr title=\"Blocks per game\">BPG</abbr>\n</th>\n<th><abbr title=\"Points per game\">PPG</abbr>\n</th></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1984%E2%80%9385_NBA_season\" title=\"1984\u201385 NBA season\">1984\u201385</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1984%E2%80%9385_Chicago_Bulls_season\" title=\"1984\u201385 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>38.3</td>\n<td>.515</td>\n<td>.173</td>\n<td>.845</td>\n<td>6.5</td>\n<td>5.9</td>\n<td>2.4</td>\n<td>.8</td>\n<td>28.2\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1985%E2%80%9386_NBA_season\" title=\"1985\u201386 NBA season\">1985\u201386</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1985%E2%80%9386_Chicago_Bulls_season\" title=\"1985\u201386 Chicago Bulls season\">Chicago</a>\n</td>\n<td>18</td>\n<td>7</td>\n<td>25.1</td>\n<td>.457</td>\n<td>.167</td>\n<td>.840</td>\n<td>3.6</td>\n<td>2.9</td>\n<td>2.1</td>\n<td>1.2</td>\n<td>22.7\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1986%E2%80%9387_NBA_season\" title=\"1986\u201387 NBA season\">1986\u201387</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1986%E2%80%9387_Chicago_Bulls_season\" title=\"1986\u201387 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>40.0</td>\n<td>.482</td>\n<td>.182</td>\n<td><b>.857</b></td>\n<td>5.2</td>\n<td>4.6</td>\n<td>2.9</td>\n<td>1.5</td>\n<td style=\"background:#cfecec;\"><b>37.1</b>*\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1987%E2%80%9388_NBA_season\" title=\"1987\u201388 NBA season\">1987\u201388</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1987%E2%80%9388_Chicago_Bulls_season\" title=\"1987\u201388 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td bgcolor=\"CFECEC\"><b>40.4</b>*</td>\n<td>.535</td>\n<td>.132</td>\n<td>.841</td>\n<td>5.5</td>\n<td>5.9</td>\n<td bgcolor=\"CFECEC\"><b>3.2</b>*</td>\n<td><b>1.6</b></td>\n<td style=\"background:#cfecec;\">35.0*\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1988%E2%80%9389_NBA_season\" title=\"1988\u201389 NBA season\">1988\u201389</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1988%E2%80%9389_Chicago_Bulls_season\" title=\"1988\u201389 Chicago Bulls season\">Chicago</a>\n</td>\n<td>81</td>\n<td>81</td>\n<td bgcolor=\"CFECEC\">40.2*</td>\n<td>.538</td>\n<td>.276</td>\n<td>.850</td>\n<td><b>8.0</b></td>\n<td><b>8.0</b></td>\n<td>2.9</td>\n<td>.8</td>\n<td style=\"background:#cfecec;\">32.5*\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1989%E2%80%9390_NBA_season\" title=\"1989\u201390 NBA season\">1989\u201390</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1989%E2%80%9390_Chicago_Bulls_season\" title=\"1989\u201390 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>39.0</td>\n<td>.526</td>\n<td>.376</td>\n<td>.848</td>\n<td>6.9</td>\n<td>6.3</td>\n<td bgcolor=\"CFECEC\">2.8*</td>\n<td>.7</td>\n<td style=\"background:#cfecec;\">33.6*\n</td></tr>\n<tr>\n<td style=\"text-align:left;background:#afe6ba;\"><a href=\"/wiki/1990%E2%80%9391_NBA_season\" title=\"1990\u201391 NBA season\">1990\u201391</a>\u2020\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1990%E2%80%9391_Chicago_Bulls_season\" title=\"1990\u201391 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>37.0</td>\n<td><b>.539</b></td>\n<td>.312</td>\n<td>.851</td>\n<td>6.0</td>\n<td>5.5</td>\n<td>2.7</td>\n<td>1.0</td>\n<td style=\"background:#cfecec;\">31.5*\n</td></tr>\n<tr>\n<td style=\"text-align:left;background:#afe6ba;\"><a href=\"/wiki/1991%E2%80%9392_NBA_season\" title=\"1991\u201392 NBA season\">1991\u201392</a>\u2020\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1991%E2%80%9392_Chicago_Bulls_season\" title=\"1991\u201392 Chicago Bulls season\">Chicago</a>\n</td>\n<td>80</td>\n<td>80</td>\n<td>38.8</td>\n<td>.519</td>\n<td>.270</td>\n<td>.832</td>\n<td>6.4</td>\n<td>6.1</td>\n<td>2.3</td>\n<td>.9</td>\n<td style=\"background:#cfecec;\">30.1*\n</td></tr>\n<tr>\n<td style=\"text-align:left;background:#afe6ba;\"><a href=\"/wiki/1992%E2%80%9393_NBA_season\" title=\"1992\u201393 NBA season\">1992\u201393</a>\u2020\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1992%E2%80%9393_Chicago_Bulls_season\" title=\"1992\u201393 Chicago Bulls season\">Chicago</a>\n</td>\n<td>78</td>\n<td>78</td>\n<td>39.3</td>\n<td>.495</td>\n<td>.352</td>\n<td>.837</td>\n<td>6.7</td>\n<td>5.5</td>\n<td bgcolor=\"CFECEC\">2.8*</td>\n<td>.8</td>\n<td style=\"background:#cfecec;\">32.6*\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/1994%E2%80%9395_NBA_season\" title=\"1994\u201395 NBA season\">1994\u201395</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1994%E2%80%9395_Chicago_Bulls_season\" title=\"1994\u201395 Chicago Bulls season\">Chicago</a>\n</td>\n<td>17</td>\n<td>17</td>\n<td>39.3</td>\n<td>.411</td>\n<td><b>.500</b></td>\n<td>.801</td>\n<td>6.9</td>\n<td>5.3</td>\n<td>1.8</td>\n<td>.8</td>\n<td>26.9\n</td></tr>\n<tr>\n<td style=\"text-align:left;background:#afe6ba;\"><a href=\"/wiki/1995%E2%80%9396_NBA_season\" title=\"1995\u201396 NBA season\">1995\u201396</a>\u2020\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1995%E2%80%9396_Chicago_Bulls_season\" title=\"1995\u201396 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>37.7</td>\n<td>.495</td>\n<td>.427</td>\n<td>.834</td>\n<td>6.6</td>\n<td>4.3</td>\n<td>2.2</td>\n<td>.5</td>\n<td style=\"background:#cfecec;\">30.4*\n</td></tr>\n<tr>\n<td style=\"text-align:left;background:#afe6ba;\"><a href=\"/wiki/1996%E2%80%9397_NBA_season\" title=\"1996\u201397 NBA season\">1996\u201397</a>\u2020\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1996%E2%80%9397_Chicago_Bulls_season\" title=\"1996\u201397 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>37.9</td>\n<td>.486</td>\n<td>.374</td>\n<td>.833</td>\n<td>5.9</td>\n<td>4.3</td>\n<td>1.7</td>\n<td>.5</td>\n<td style=\"background:#cfecec;\">29.6*\n</td></tr>\n<tr>\n<td style=\"text-align:left;background:#afe6ba;\"><a href=\"/wiki/1997%E2%80%9398_NBA_season\" title=\"1997\u201398 NBA season\">1997\u201398</a>\u2020\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/1997%E2%80%9398_Chicago_Bulls_season\" title=\"1997\u201398 Chicago Bulls season\">Chicago</a>\n</td>\n<td><b>82</b></td>\n<td><b>82</b></td>\n<td>38.8</td>\n<td>.465</td>\n<td>.238</td>\n<td>.784</td>\n<td>5.8</td>\n<td>3.5</td>\n<td>1.7</td>\n<td>.5</td>\n<td style=\"background:#cfecec;\">28.7*\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/2001%E2%80%9302_NBA_season\" title=\"2001\u201302 NBA season\">2001\u201302</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/2001%E2%80%9302_Washington_Wizards_season\" title=\"2001\u201302 Washington Wizards season\">Washington</a>\n</td>\n<td>60</td>\n<td>53</td>\n<td>34.9</td>\n<td>.416</td>\n<td>.189</td>\n<td>.790</td>\n<td>5.7</td>\n<td>5.2</td>\n<td>1.4</td>\n<td>.4</td>\n<td>22.9\n</td></tr>\n<tr>\n<td style=\"text-align:left;\"><a href=\"/wiki/2002%E2%80%9303_NBA_season\" title=\"2002\u201303 NBA season\">2002\u201303</a>\n</td>\n<td style=\"text-align:left;\"><a href=\"/wiki/2002%E2%80%9303_Washington_Wizards_season\" title=\"2002\u201303 Washington Wizards season\">Washington</a>\n</td>\n<td><b>82</b></td>\n<td>67</td>\n<td>37.0</td>\n<td>.445</td>\n<td>.291</td>\n<td>.821</td>\n<td>6.1</td>\n<td>3.8</td>\n<td>1.5</td>\n<td>.5</td>\n<td>20.0\n</td></tr>\n<tr class=\"sortbottom\">\n<td colspan=\"2\" style=\"text-align:center;\"><b>Career</b>\n</td>\n<td>1,072</td>\n<td>1,039</td>\n<td>38.3</td>\n<td>.497</td>\n<td>.327</td>\n<td>.835</td>\n<td>6.2</td>\n<td>5.3</td>\n<td>2.3</td>\n<td>.8</td>\n<td style=\"background:#E0CEF2; width:3em\">30.1<img alt=\"double-dagger\" data-file-height=\"14\" data-file-width=\"9\" decoding=\"async\" height=\"14\" src=\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork/labs/FinalModule_edX/upload.wikimedia.org/wikipedia/commons/f/f9/Double-dagger-14-plain.png\" width=\"9\">\n</td></tr>\n<tr class=\"sortbottom\">\n<td colspan=\"2\" style=\"text-align:center;\"><b>All-Star</b>\n</td>\n<td>13</td>\n<td>13</td>\n<td>29.4</td>\n<td>.472</td>\n<td>.273</td>\n<td>.750</td>\n<td>4.7</td>\n<td>4.2</td>\n<td>2.8</td>\n<td>.5</td>\n<td>20.2\n</td></tr></tbody></table>\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "We will scrape the data for each year for each player convert the data for each player into a Pandas Dataframe, plot the results for Points per game, perform some analysis. Finally, we will store the results in the IBM cloud.\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "<h2>Table of Contents</h2>\n<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n <ul>\n <li><a href=\"#Section_1\">Define a Web Scraping Function </a></li>\n <li><a href=\"#Section_2\">Web Scraping and Converting to Pandas Dataframe</a> </li>\n <li><a href=\"#Section_3\">Plot the Points per game</a></li>\n <li><a href=\"#Section_4\">How to submit </a></li>\n </ul>\n<p>\n Estimated Time Needed: <strong>180 min</strong></p>\n</div>\n\n<hr>\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "<h2 id=\"Section_1\"> Define a Web Scraping Function </h2>\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "In this section, we define the function <code>get_basketball_stats</code>. The function will return a dictionary corresponding to the Regular season statistics of each basketball player scraped from m <a href=\"http://en.wikipedia.org\">en.wikipedia.org</a>. \nThe <a href=\"[https://en.wikipedia.org/wiki/Parameter](https://en.wikipedia.org/wiki/Parameter?cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ)_(computer_programming)\"> Formal Parameter </a> or input <code> link</code> is going to be the URL of the Wikipedia page for each player. This function will return a Python dictionary. The keys will be the column names, and the values will be a list that contains a different columns; the element of each list will be a separate row for that column.\nYou don't have to know how the function works just the input in the output. \n" | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": "import bs4\nimport requests\nimport pandas as pd\nimport numpy as np\nimport boto3" | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": "def get_basketball_stats(link='https://en.wikipedia.org/wiki/Michael_Jordan'):\n # read the webpage \n response = requests.get(link)\n # create a BeautifulSoup object to parse the HTML \n soup = bs4.BeautifulSoup(response.text, 'html.parser')\n # the player stats are defined with the attribute CSS class set to 'wikitable sortable'; \n #therefore we create a tag object \"table\"\n table=soup.find(class_='wikitable sortable')\n\n #the headers of the table are the first table row (tr) we create a tag object that has the first row \n headers=table.tr\n #the table column names are displayed as an abbreviation; therefore we find all the abbr tags and returs an Iterator\n titles=headers.find_all(\"abbr\")\n #we create a dictionary and pass the table headers as the keys \n data = {title['title']:[] for title in titles}\n #we will store each column as a list in a dictionary, the header of the column will be the dictionary key \n\n #we iterate over each table row by fining each table tag tr and assign it to the objed\n for row in table.find_all('tr')[1:]:\n \n #we iterate over each cell in the table, as each cell corresponds to a different column we all obtain the correspondin key corresponding the column n \n for key,a in zip(data.keys(),row.find_all(\"td\")[2:]):\n # we append each elment and strip any extra HTML contnet \n data[key].append(''.join(c for c in a.text if (c.isdigit() or c == \".\")))\n\n # we remove extra rows by finding the smallest list \n Min=min([len(x) for x in data.values()])\n #we convert the elements in the key to floats \n for key in data.keys():\n \n data[key]=list(map(lambda x: float(x), data[key][:Min]))\n \n return data" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "<h2 id=\"Section_2\"> Question 1: Web Scraping the data and Converting to Pandas Dataframe </h2>\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "For this question, you must use the function <code>get_basketball_stats</code> to extract a Python Dictionary of the player statistics, convert the dictionary to a Python Dataframe. To get full marks, you must display the first five rows of the dataframe for each player using the method head with the name of each player printed above. As shown in the following figuer **the order of the columns may be different depending on the version of Python**.\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": " <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/projects/EdX/Images/question_one_answer.jpeg\" alt=\"Trulli\" width=\"1000\" height=\"1000\">\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "You will need the following libraries \n" | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": "import pandas as pd\nimport matplotlib.pyplot as plt\nfrom IPython.display import display\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "The list <code>links</code> contain the link the Wikipedia article for each player. The list <code>names</codes> contains the names of each player.\n" | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [], | |
"source": "links=['https://en.wikipedia.org/wiki/Michael_Jordan'\\\n ,'https://en.wikipedia.org/wiki/Kobe_Bryant'\\\n ,'https://en.wikipedia.org/wiki/LeBron_James'\\\n \n ,'https://en.wikipedia.org/wiki/Stephen_Curry']\nnames=['Michael Jordan','Kobe Bryant','Lebron James','Stephen Curry']" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "You can use the function get_basketball_stats to extract the <b>Regular season table </b> and store it to a Python dictionary. For example, you can extract the table for Michael Jordan and convert it to a Python dictionary as follows:\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "\\#using the link \n<code>\nmichael_jordan_dict=get_basketball_stats('[https://en.wikipedia.org/wiki/Michael_Jordan'](https://en.wikipedia.org/wiki/Michael_Jordan'?cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-PY0101EN-SkillsNetwork-19487395&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ))\n</code>\n\n\\#using the list\n\n<code>\nmichael_jordan_dict=get_basketball_stats(links[0])\n</code>\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "<h5>For each Player create a Python dictionary from the table <b>Regular season table </b>.</h5>\n" | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": "michael_jordan_dict=get_basketball_stats(links[0])\nkobe_bryant_dict=get_basketball_stats(links[1])\nlebron_james_dict=get_basketball_stats(links[2])\nstephen_curry_dict=get_basketball_stats(links[3])" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "<h5>For each Player convert the Python Dictionary to a Pandas Dataframe using the constructor <code>pd.DataFrame()</code> </h5>\n" | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [], | |
"source": "mj_df = pd.DataFrame(michael_jordan_dict)\nkb_df = pd.DataFrame(kobe_bryant_dict)\nlj_df = pd.DataFrame(lebron_james_dict)\nsc_df = pd.DataFrame(stephen_curry_dict)" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "<h5>For each player display the first five rows of the Dataframe, print the name of each Player above the Dataframe.</h5>\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "If you perform the process in a loop you will have to use the function <code>display</code> as follows:\n\n<code>display(df)</code>\n" | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "Michael Jordan\n" | |
}, | |
{ | |
"data": { | |
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Games played</th>\n <th>Games started</th>\n <th>Minutes per game</th>\n <th>Field goal percentage</th>\n <th>3-point field-goal percentage</th>\n <th>Free-throw percentage</th>\n <th>Rebounds per game</th>\n <th>Assists per game</th>\n <th>Steals per game</th>\n <th>Blocks per game</th>\n <th>Points per game</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>82.0</td>\n <td>82.0</td>\n <td>38.3</td>\n <td>0.515</td>\n <td>0.173</td>\n <td>0.845</td>\n <td>6.5</td>\n <td>5.9</td>\n <td>2.4</td>\n <td>0.8</td>\n <td>28.2</td>\n </tr>\n <tr>\n <th>1</th>\n <td>18.0</td>\n <td>7.0</td>\n <td>25.1</td>\n <td>0.457</td>\n <td>0.167</td>\n <td>0.840</td>\n <td>3.6</td>\n <td>2.9</td>\n <td>2.1</td>\n <td>1.2</td>\n <td>22.7</td>\n </tr>\n <tr>\n <th>2</th>\n <td>82.0</td>\n <td>82.0</td>\n <td>40.0</td>\n <td>0.482</td>\n <td>0.182</td>\n <td>0.857</td>\n <td>5.2</td>\n <td>4.6</td>\n <td>2.9</td>\n <td>1.5</td>\n <td>37.1</td>\n </tr>\n <tr>\n <th>3</th>\n <td>82.0</td>\n <td>82.0</td>\n <td>40.4</td>\n <td>0.535</td>\n <td>0.132</td>\n <td>0.841</td>\n <td>5.5</td>\n <td>5.9</td>\n <td>3.2</td>\n <td>1.6</td>\n <td>35.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td>81.0</td>\n <td>81.0</td>\n <td>40.2</td>\n <td>0.538</td>\n <td>0.276</td>\n <td>0.850</td>\n <td>8.0</td>\n <td>8.0</td>\n <td>2.9</td>\n <td>0.8</td>\n <td>32.5</td>\n </tr>\n </tbody>\n</table>\n</div>", | |
"text/plain": " Games played Games started Minutes per game Field goal percentage \\\n0 82.0 82.0 38.3 0.515 \n1 18.0 7.0 25.1 0.457 \n2 82.0 82.0 40.0 0.482 \n3 82.0 82.0 40.4 0.535 \n4 81.0 81.0 40.2 0.538 \n\n 3-point field-goal percentage Free-throw percentage Rebounds per game \\\n0 0.173 0.845 6.5 \n1 0.167 0.840 3.6 \n2 0.182 0.857 5.2 \n3 0.132 0.841 5.5 \n4 0.276 0.850 8.0 \n\n Assists per game Steals per game Blocks per game Points per game \n0 5.9 2.4 0.8 28.2 \n1 2.9 2.1 1.2 22.7 \n2 4.6 2.9 1.5 37.1 \n3 5.9 3.2 1.6 35.0 \n4 8.0 2.9 0.8 32.5 " | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "Kobe Bryant\n" | |
}, | |
{ | |
"data": { | |
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Games played</th>\n <th>Games started</th>\n <th>Minutes per game</th>\n <th>Field goal percentage</th>\n <th>3-point field-goal percentage</th>\n <th>Free-throw percentage</th>\n <th>Rebounds per game</th>\n <th>Assists per game</th>\n <th>Steals per game</th>\n <th>Blocks per game</th>\n <th>Points per game</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>71.0</td>\n <td>6.0</td>\n <td>15.5</td>\n <td>0.417</td>\n <td>0.375</td>\n <td>0.819</td>\n <td>1.9</td>\n <td>1.3</td>\n <td>0.7</td>\n <td>0.3</td>\n <td>7.6</td>\n </tr>\n <tr>\n <th>1</th>\n <td>79.0</td>\n <td>1.0</td>\n <td>26.0</td>\n <td>0.428</td>\n <td>0.341</td>\n <td>0.794</td>\n <td>3.1</td>\n <td>2.5</td>\n <td>0.9</td>\n <td>0.5</td>\n <td>15.4</td>\n </tr>\n <tr>\n <th>2</th>\n <td>50.0</td>\n <td>50.0</td>\n <td>37.9</td>\n <td>0.465</td>\n <td>0.267</td>\n <td>0.839</td>\n <td>5.3</td>\n <td>3.8</td>\n <td>1.4</td>\n <td>1.0</td>\n <td>19.9</td>\n </tr>\n <tr>\n <th>3</th>\n <td>66.0</td>\n <td>62.0</td>\n <td>38.2</td>\n <td>0.468</td>\n <td>0.319</td>\n <td>0.821</td>\n <td>6.3</td>\n <td>4.9</td>\n <td>1.6</td>\n <td>0.9</td>\n <td>22.5</td>\n </tr>\n <tr>\n <th>4</th>\n <td>68.0</td>\n <td>68.0</td>\n <td>40.9</td>\n <td>0.464</td>\n <td>0.305</td>\n <td>0.853</td>\n <td>5.9</td>\n <td>5.0</td>\n <td>1.7</td>\n <td>0.6</td>\n <td>28.5</td>\n </tr>\n </tbody>\n</table>\n</div>", | |
"text/plain": " Games played Games started Minutes per game Field goal percentage \\\n0 71.0 6.0 15.5 0.417 \n1 79.0 1.0 26.0 0.428 \n2 50.0 50.0 37.9 0.465 \n3 66.0 62.0 38.2 0.468 \n4 68.0 68.0 40.9 0.464 \n\n 3-point field-goal percentage Free-throw percentage Rebounds per game \\\n0 0.375 0.819 1.9 \n1 0.341 0.794 3.1 \n2 0.267 0.839 5.3 \n3 0.319 0.821 6.3 \n4 0.305 0.853 5.9 \n\n Assists per game Steals per game Blocks per game Points per game \n0 1.3 0.7 0.3 7.6 \n1 2.5 0.9 0.5 15.4 \n2 3.8 1.4 1.0 19.9 \n3 4.9 1.6 0.9 22.5 \n4 5.0 1.7 0.6 28.5 " | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "Lebron James\n" | |
}, | |
{ | |
"data": { | |
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Games played</th>\n <th>Games started</th>\n <th>Minutes per game</th>\n <th>Field goal percentage</th>\n <th>3-point field-goal percentage</th>\n <th>Free-throw percentage</th>\n <th>Rebounds per game</th>\n <th>Assists per game</th>\n <th>Steals per game</th>\n <th>Blocks per game</th>\n <th>Points per game</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>79.0</td>\n <td>79.0</td>\n <td>39.5</td>\n <td>0.417</td>\n <td>0.290</td>\n <td>0.754</td>\n <td>5.5</td>\n <td>5.9</td>\n <td>1.6</td>\n <td>0.7</td>\n <td>20.9</td>\n </tr>\n <tr>\n <th>1</th>\n <td>80.0</td>\n <td>80.0</td>\n <td>42.4</td>\n <td>0.472</td>\n <td>0.351</td>\n <td>0.750</td>\n <td>7.4</td>\n <td>7.2</td>\n <td>2.2</td>\n <td>0.7</td>\n <td>27.2</td>\n </tr>\n <tr>\n <th>2</th>\n <td>79.0</td>\n <td>79.0</td>\n <td>42.5</td>\n <td>0.480</td>\n <td>0.335</td>\n <td>0.738</td>\n <td>7.0</td>\n <td>6.6</td>\n <td>1.6</td>\n <td>0.8</td>\n <td>31.4</td>\n </tr>\n <tr>\n <th>3</th>\n <td>78.0</td>\n <td>78.0</td>\n <td>40.9</td>\n <td>0.476</td>\n <td>0.319</td>\n <td>0.698</td>\n <td>6.7</td>\n <td>6.0</td>\n <td>1.6</td>\n <td>0.7</td>\n <td>27.3</td>\n </tr>\n <tr>\n <th>4</th>\n <td>75.0</td>\n <td>74.0</td>\n <td>40.4</td>\n <td>0.484</td>\n <td>0.315</td>\n <td>0.712</td>\n <td>7.9</td>\n <td>7.2</td>\n <td>1.8</td>\n <td>1.1</td>\n <td>30.0</td>\n </tr>\n </tbody>\n</table>\n</div>", | |
"text/plain": " Games played Games started Minutes per game Field goal percentage \\\n0 79.0 79.0 39.5 0.417 \n1 80.0 80.0 42.4 0.472 \n2 79.0 79.0 42.5 0.480 \n3 78.0 78.0 40.9 0.476 \n4 75.0 74.0 40.4 0.484 \n\n 3-point field-goal percentage Free-throw percentage Rebounds per game \\\n0 0.290 0.754 5.5 \n1 0.351 0.750 7.4 \n2 0.335 0.738 7.0 \n3 0.319 0.698 6.7 \n4 0.315 0.712 7.9 \n\n Assists per game Steals per game Blocks per game Points per game \n0 5.9 1.6 0.7 20.9 \n1 7.2 2.2 0.7 27.2 \n2 6.6 1.6 0.8 31.4 \n3 6.0 1.6 0.7 27.3 \n4 7.2 1.8 1.1 30.0 " | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "Stephen Curry\n" | |
}, | |
{ | |
"data": { | |
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Games played</th>\n <th>Games started</th>\n <th>Minutes per game</th>\n <th>Field goal percentage</th>\n <th>3-point field-goal percentage</th>\n <th>Free-throw percentage</th>\n <th>Rebounds per game</th>\n <th>Assists per game</th>\n <th>Steals per game</th>\n <th>Blocks per game</th>\n <th>Points per game</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>80.0</td>\n <td>77.0</td>\n <td>36.2</td>\n <td>0.462</td>\n <td>0.437</td>\n <td>0.885</td>\n <td>4.5</td>\n <td>5.9</td>\n <td>1.9</td>\n <td>0.2</td>\n <td>17.5</td>\n </tr>\n <tr>\n <th>1</th>\n <td>74.0</td>\n <td>74.0</td>\n <td>33.6</td>\n <td>0.480</td>\n <td>0.442</td>\n <td>0.934</td>\n <td>3.9</td>\n <td>5.8</td>\n <td>1.5</td>\n <td>0.3</td>\n <td>18.6</td>\n </tr>\n <tr>\n <th>2</th>\n <td>26.0</td>\n <td>23.0</td>\n <td>28.2</td>\n <td>0.490</td>\n <td>0.455</td>\n <td>0.809</td>\n <td>3.4</td>\n <td>5.3</td>\n <td>1.5</td>\n <td>0.3</td>\n <td>14.7</td>\n </tr>\n <tr>\n <th>3</th>\n <td>78.0</td>\n <td>78.0</td>\n <td>38.2</td>\n <td>0.451</td>\n <td>0.453</td>\n <td>0.900</td>\n <td>4.0</td>\n <td>6.9</td>\n <td>1.6</td>\n <td>0.2</td>\n <td>22.9</td>\n </tr>\n <tr>\n <th>4</th>\n <td>78.0</td>\n <td>78.0</td>\n <td>36.5</td>\n <td>0.471</td>\n <td>0.424</td>\n <td>0.885</td>\n <td>4.3</td>\n <td>8.5</td>\n <td>1.6</td>\n <td>0.2</td>\n <td>24.0</td>\n </tr>\n </tbody>\n</table>\n</div>", | |
"text/plain": " Games played Games started Minutes per game Field goal percentage \\\n0 80.0 77.0 36.2 0.462 \n1 74.0 74.0 33.6 0.480 \n2 26.0 23.0 28.2 0.490 \n3 78.0 78.0 38.2 0.451 \n4 78.0 78.0 36.5 0.471 \n\n 3-point field-goal percentage Free-throw percentage Rebounds per game \\\n0 0.437 0.885 4.5 \n1 0.442 0.934 3.9 \n2 0.455 0.809 3.4 \n3 0.453 0.900 4.0 \n4 0.424 0.885 4.3 \n\n Assists per game Steals per game Blocks per game Points per game \n0 5.9 1.9 0.2 17.5 \n1 5.8 1.5 0.3 18.6 \n2 5.3 1.5 0.3 14.7 \n3 6.9 1.6 0.2 22.9 \n4 8.5 1.6 0.2 24.0 " | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": "print(names[0])\ndisplay(mj_df.head())\nprint(names[1])\ndisplay(kb_df.head())\nprint(names[2])\ndisplay(lj_df.head())\nprint(names[3])\ndisplay(sc_df.head())" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "<h2 id=\"Section_3\"> Question 2: plot the Points per game for a player using the function plt.plot().</h2>\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "Import the plotting library \n" | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [], | |
"source": "import matplotlib.pyplot as plt" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "Using the function <code>plt.plot()</code> plot the Points per game, for one player Just a note you can plot a dataframe column like a numpy array. You can also plot them for each player. Find out how to add a xlabel 'years', a ylabel 'Points per game' and a legend.\n" | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "Text(0, 0.5, 'Points per game')" | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dd3xUZfb48c9JhxRKGiVAIIUqCV3pqKzoqqCiq7uugGt3ZdetuutaVtefa131axeRXV0boljQVTGhWxJ6SUiAAIGQRkkCpD+/P2YSIyRhksydSWbO+/WaVyZ37sw9TMLJM8899zxijEEppZT38HF3AEoppVxLE79SSnkZTfxKKeVlNPErpZSX0cSvlFJexs/dATgiIiLCxMbGujsMpZTqUNLT04uMMZGnbu8QiT82Npa0tDR3h6GUUh2KiOxtbLtO9SillJfRxK+UUl5GE79SSnmZDjHHr5Rq36qqqsjNzaW8vNzdoXiloKAgYmJi8Pf3d2h/TfxKqTbLzc0lNDSU2NhYRMTd4XgVYwzFxcXk5ubSv39/h56jUz1KqTYrLy8nPDxck74biAjh4eEt+rSliV8p5RSa9N2npe+9Jn6lmnD4eCXvfr8fbV2uPI1liV9EgkTkOxHZJCLbROQB+/b7ReSAiGy03y6yKgal2uK11Xv40/ub+WDDAXeHohwQEhJSf3/ZsmUkJCSwb9++RvfNyclh2LBhrT7W/fffT+/evUlOTmbQoEHceuut1NbWtvr1HJGTk8N///tfp7yWlSP+CuBcY0wSkAzMEJGz7Y89ZYxJtt+WWRiDUq2WklkAwMPLMigtr3JzNMpRy5cv54477uDzzz+nb9++lh3nzjvvZOPGjWzfvp0tW7awYsWK0/aprq522vE6ROI3NmX2b/3tN/3MrDqE/JJyth0s4aKzelB8vIJnlme5OyTlgFWrVnHjjTfy6aefEhcXB8CTTz7JsGHDGDZsGP/617/q962urmbOnDkMHz6c2bNnc+LECQDS09OZMmUKo0aN4oILLiAvL6/ZY1ZWVlJeXk63bt0AmDp1Kn/5y1+YMmUK//jHP+jfvz9VVbaBQ0lJCbGxsVRVVfHKK68wZswYkpKSuOKKK+qPP3fuXObPn8/48eMZMGAAixcvBuCuu+5i1apVJCcn89RTT7XpfbK0nFNEfIF0IB54zhjzrYhcCPxaRK4D0oDfG2OONPLcm4CbAEv/aivVmBWZhQDMPy+BsCB/Fq7J4arRfUiIDnVzZO3fAx9vY/vBEqe+5pBeYdx3ydBm96moqGDmzJmkpqYyaNAgwJbEFy5cyLfffosxhnHjxjFlyhS6detGZmYmCxYsYMKECVx//fU8//zz/OY3v+GOO+5g6dKlREZG8s477/DXv/6V11577bTjPfXUU7zxxhvs3buXCy+8kOTk5PrHjh49Wv8JICcnh08//ZRZs2bx9ttvc8UVV+Dv78/ll1/OjTfeCMA999zDggULuOOOOwDIy8tj9erVZGRkcOmllzJ79mweeeQRHn/8cT755JM2v5+Wntw1xtQYY5KBGGCsiAwDXgDisE3/5AFPNPHcl40xo40xoyMjT2sup5SlUjIL6NkliIHRofzxgoF0DvDl/o+36Ynedszf35/x48ezYMGC+m2rV6/msssuIzg4mJCQEC6//HJWrVoFQJ8+fZgwYQIA1157LatXryYzM5OtW7cyffp0kpOTeeihh8jNzW30eHVTPQUFBRw/fpy33367/rGf/exn9fdvuOEGFi5cCMDChQuZN28eAFu3bmXSpEmcddZZvPnmm2zbtq3+ObNmzcLHx4chQ4aQn5/vpHfoBy65gMsYc1REUoEZxpjH67aLyCtA2/98KeVEVTW1rMoq4pKkXrYa6ZBA/nDBQO5duo3Pth7iorN6ujvEdu1MI3Or+Pj48O6773L++efz8MMP85e//KXZP9SnlkCKCMYYhg4dyrp16xw+rr+/PzNmzGDlypVcffXVAAQHB9c/PmHCBHJyclixYgU1NTX1J5Xnzp3Lhx9+SFJSEq+//jqpqan1zwkMDKy/b8Vgw8qqnkgR6Wq/3wk4H8gQkYb/ay4DtloVg1KtkZZzhLKKaqYO/OGT5s/H9mVwzzAe+mQ7Jyqdd8JOOVfnzp355JNPePPNN1mwYAGTJ0/mww8/5MSJExw/fpwPPviASZMmAbBv3776BP/WW28xceJEBg4cSGFhYf32qqqqH43EG2OMYe3atfXnFBpz3XXXcc0119SP9gFKS0vp2bMnVVVVvPnmm2f8t4WGhlJaWnrG/Rxh5VRPTyBFRDYD3wNfGmM+AR4VkS327dOAOy2MQakWS80swN9XmBAfUb/Nz9eHBy4dysFj5byQusuN0akz6d69O59//jkPPfQQ+/fvZ+7cuYwdO5Zx48Zxww03MGLECAAGDx7MokWLGD58OIcPH+bWW28lICCAxYsX8+c//5mkpCSSk5NZu3Zto8d56qmnSE5OZtiwYVRXV3Pbbbc1GdMvfvELjhw5wjXXXFO/7cEHH2TcuHFMnz69/pxEc4YPH46fnx9JSUltPrkrHWHOcvTo0UYXYlGucsFTK4kIDeDNG84+7bHfvr2BZVsO8cWdk4mNCG7k2d5px44dDB482N1htFuLFy9m6dKl/Oc//7HsGI39DEQk3Rgz+tR99cpdpRo4cPQkmfmlTBsY1ejjd180GH9f4cFPtrs4MtVR3XHHHdx111387W9/c3co9TTxK9VAqv2iralNJP7osCB+c34CyzMK+DrD+dUWyvM8++yzZGdnk5iY6O5Q6mniV6qBlIxC+nTvRFxk09M4c8f3Z0BkMA98vJ3yqhoXRte+dYRpY0/V0vdeE79SdhXVNazJLmLawKhmux0G+Plw/yVD2Vt8ggWr97gwwvYrKCiI4uJiTf5uUNePPygoyOHn6EIsStl9t+cwJ6tqmpzfb2hyYiQzhvbg2a+zmDWiN727dnJBhO1XTEwMubm5FBYWujsUr1S3ApejNPErZZeSUUignw9nDwh3aP97Lh5MyhMFPPzpDp77xUiLo2vf/P39HV79SbmfTvUoZZeaWcA5ceF0CvB1aP+Ybp25fVo8n27JY012kcXRKeU8mviVAnKKjrO76LhD0zwN3TR5AH26d+L+j7ZRVWNtP3alnEUTv1L8UMbZ0sQf5O/LvRcPJaugjEVrcyyITCnn08SvFJCSWciAyGD6hndu8XPPHxzF1IGR/OurLApKHV/wWil30cSvvN7JyhrW7S5u8Wi/johw3yVDqayu5ZHPMpwcnVLOp4lfeb11u4uorK79UTfOluofEcyvJvVnyfoDpO897MTolHI+TfzK66VkFNLJ35ex/bu36XV+PS2eHmFB3Lt0GzW1eiGTar808SuvZowhJbOACfERBPo5VsbZlOBAP/7608FsO1jCW9/tc1KESjmfJn7l1XYVlpF75CTTBjlnec+Lh/fk7AHdefyLTI4cr3TKayrlbJr4lVdLybC1GGiqG2dLiQgPXDqM0vJqHvsi0ymvqZSzaeJXXi0ls4CB0aFO7bUzsEco153Tj7e+28fWA8ec9rpKOYsmfuW1yiqq+T7nMFOdNM3T0G/PTyQ8OIB7l26lVk/0qnZGE7/yWmuyi6iqMa2u329Ol07+3HXhYNbvO8qidTlOf32l2kITv/JaqZkFhAb6MapfN0te/4qRvZk2MJJHPstgV2GZJcdQqjU08SuvZIwhJaOQSYkR+Pta899ARHjkiuEE+fvy+3c3Ua1N3FQ7oYlfeaWMQ6UcKil3WjVPU6LDgnhw1jA27j/KSyt3W3ospRyliV95pZS6RdUTnX9i91SXJvXip8N78q+vdrL9YInlx1PqTDTxK6+UmlHIsN5hRIU5vk5pWzw0cxhdOgXwu3c3UlGtC7Qr99LEr7zOsRNVpO87wtREa6d5GuoWHMA/rziLjEOlPP1VlsuOq1RjNPErr7Mqu5CaWuO0Ng2OOm9wNFeNjuHFFbtI33vEpcdWqiHLEr+IBInIdyKySUS2icgD9u3dReRLEcmyf7Wmlk6pJqRkFNK1sz/JfVz/q/e3i4fQs0sn/vDeJk5UVrv8+EqBtSP+CuBcY0wSkAzMEJGzgbuA5caYBGC5/XulXKK21rBiZwGTEyLx9RGXHz80yJ/HrhzOnqLj/FMXbVFuYlniNzZ1V634228GmAkssm9fBMyyKgblXsYYyqva14nMrQePUVRW6fJpnobGx0Uwd3wsi9btZU12kdviUN7L0jl+EfEVkY1AAfClMeZbINoYkwdg/+q6M2zKpV5dtYdxDy/n2Ikqd4dSLyWjEBGYnOC+xA/w5xmDGBARzB/f20RJeft5f5R3sDTxG2NqjDHJQAwwVkSGOfpcEblJRNJEJK2wsNC6IJUlTlbW8OKKXRw7WcXHmw+6O5x6KZkFJMV0JTwk0K1xdArw5YmrkjhUUs7fP97u1liU93FJVY8x5iiQCswA8kWkJ4D9a0ETz3nZGDPaGDM6MtK9ozPVcu+l76f4eCVdO/uzOD3X3eEAUFxWwabco5Y0ZWuNEX27cdvUeBan5/Ll9nx3h6O8iJVVPZEi0tV+vxNwPpABfATMse82B1hqVQzKPapqanlpxW5G9evG7VPj2bj/KNkFpe4Oi5VZhRiDW+f3TzX/vAQG9wzj7iWbOawrdikXsXLE3xNIEZHNwPfY5vg/AR4BpotIFjDd/r3yIJ9sPsiBoye5dUocs0b0xtdHWJx+wN1hkZJRSERIAMN6dXF3KPUC/Hx48qokjp2s4p4Pt2CM9u5X1rOyqmezMWaEMWa4MWaYMebv9u3FxpjzjDEJ9q+HrYpBuV5treGF1F0kRodw7qAoIkMDmTYwkg825FLjxgVJamoNK3YWMiUxCh83lHE2Z3DPMO6cnsiyLYf4aFP7OR+iPJdeuaucKiWzgJ35Zdw6Na4+wc4eFUN+SQWrstx3kn7j/iMcO1nVrqZ5Grp5chwj+nblbx9u5dCxcneHozycJn7lVC+k7qJ3105cPLxX/bZzB0XTzc0neVMyCvH1ESbFt8/E7+sjPHlVMpU1tfz5/c065aMspYlfOc33OYdJ23uEmyYP+NHiJgF+PsxM7s0X2/PdVtOfklnAqL7d6NLZ3y3Hd0T/iGDuvnAwK3YW8tZ3+90djvJgmviV0zyfkk334ACuGt3ntMdmj4qhsrqWj9xQ019QUs62gyVMGdg+R/sN/fLsfkyID+ehT7ezr/iEu8NRHkoTvwcrKCnn6wzX1IfvyCshJbOQeeNj6RTge9rjQ3uFMahHqFume1J32s4ttJf6/eb4+AiPzk7CV4Q/vLfJrSfElefSxO/BHvksg+tfTyMlo9Fr5JzqxRW7CA7w5bpzYht9XESYPSqGTfuPkpXv2pr+1MwCosMCGdwz1KXHba3eXTtx7yVD+C7nMAvX7HF3OMoDaeL3UKXlVSzbmgfAn9/fzNET1l0ctK/4BB9vOsgvzu7X7Bz6rBG98fMRFq933ai/qqaWVTuLmDYwCpH2VcbZnNmjYjh/cDSPfp7JwjV7qNWRv3IiTfwe6rMthyivquXBWcM4fLySe5dus+xYr6zajZ+PD7+a2L/Z/SJCApk6MIoP1h+guqbWsngaSt97hNKKassXVXc2EeGx2cOZEB/OAx9v5+pXviGn6Li7w1IeQhO/h1qcnsuAyGCuHdeX+ecl8NGmg3y6Oc/pxyksreDdtP1cPrI30Q6sXzt7VAwFpRWsclE74pTMAvx9hQnx4S45njN1Cw7gtbljeGz2cHbklTDj6ZVeN/o/cPSkV/17XUUTvwfKKTrOdzmHmT0qBhHhtqlxJMV04Z4Pt1BQ6tyLg15fu4fKmlpumjzAof3PHRRF9+AAFqe5ZronNaOQMbHdCQ1qv2WczRERrhzdhy/vnMI5A+yj/5e9Y/T/XEo2Ex75mlEPfcnt/13PW9/tY/9hrXRyBk38HmjJ+lx8BC4fEQOAn68PT1yVzInKGu5+33n9YErLq/j3ur1cOKwHAyJDHHqOraa/F19uz7f0vAPYRouZ+aUdoprnTHp0CeK1uWN4/Mokdhyyjf5fW+25o/+lGw/w2P8yOW9QFOcOiiYt5zB3L9nCpEdTmPxoCncv2cKyLXkc0cZ2reLn7gCUc9XWGt5ff4CJCZH06PLD1Et8VAh/vGAgD326g/fScrlqzOm19i315rf7KC2v5tYp8S163uxRMSxck8PHmw7yyyaqgJzho422awamdoD6fUfUVUZNjI/g7iWb+fsn2/l86yEenT2c2Ihgd4fnNN/uLuaP721mbP/uPH/tSAL9fDHGsKuwjNVZRazOLubjTQd567t9iMCwXl2YEB/BxPgIRsd2I8j/9HJi9WPSES4NHz16tElLS3N3GB3C2uwifv7qtzx7zQguSer1o8dqaw3XvPIN2w6W8PlvJxHTrXOrj1NeVcOkR1MY1COU//xqXIuff+HTqwjwFZb+emKrY2jOwaMnOf/JFYzt352Fc8d0qIoeRxhj+wP/wMfbqKqp5U8XDGLu+Nh214CupXYVlnH582sJDwlgya3j6do5oNH9qmtq2ZR7jDXZRazOKmL9viNU1xoC/XwYE9u9/g/BkF5hbllbub0QkXRjzOhTt+tUj4d5Lz2X0CA/pg+JPu0xHx/h8SuTMMbwx/c2t2maYMn6AxSWVnDrlLhWPX/2qBg25R5jp0U1/fd9tI1aY3hw5jCPS/rww+j/yzunMD4ugr9/sp2fvbyuQ8/9F5dVMG/h9/j5CK/PHdtk0gfb9OWoft2Yf14C795yDpvu+wkL547h2rP7UVRWwT8/z+CS/1vNuIeXc+DoSRf+KzoGTfwepLS8is+25nFpUq8mP+726d6Zv108hHW7i1m0LqdVx6mpNby0chdJMV04J6511TIzk3vh5yO8b8GVvP/bdogvt+dz5/mJ9One+k81HUGPLkEsmDOax69MIuNQKTOeXsmCDjj3X15Vww3/TiO/pJxX54ymb3jLfm7BgX5MGxTF3y4ewue/ncx3fz2P+y4ZQlFZBel7j1gUdcelc/weZNmWPMqrapk9KqbZ/X42pg+fbzvEI59lMDkxkjgHT8zW+WxrHnuLT3D3tSNbPZqOCAlk2qAolmw4wB8vGIifr3PGIKXlVdy3dBuDeoRy/RmuK/AUDef+//LBFh78ZDufb83j0dlJ9G9m7r+21nDkRCXFxyspKq2gsKyC4rJKisoq7LdK26fDCwYxpFeYZfHX1hrufGcjG/cf5YVfjGRE325tfs2o0CB+Pq4vD36y3eVXincEDiV+EZkIJBhjFopIJBBijNFryduZxem5xEUGk9yna7P7iQj/vGI4P3lqJb97dxPv33KOw4nXGMPzKbsYEBnMT4b0aFO8s0fF8OX2fFZlFTFtkHMqb574Yif5peW8cO3IH3UI9QZ1o/8l9rn/C59eyU2T4wgO8K1P5A2/Hj5e2WgvID8fITwkgPDgQApKy5n1/BoeuHQoV4/pY8m02SOfZ/DZ1kPc89PBzBjW02mvG+jnS2x4sGXTiR3ZGRO/iNwHjAYGAgsBf+ANYIK1oamWyCk6zvc5R/jzjEEO/eeMDgviwVnDmP/WBl5auZvbpzlWmbMyq4jteSU8Ont4m08kThtoq+l/L32/UxL/pv1HWbQuh1+e3c8po8aOSES4YlQMExMiuHvJFp5ZngVAkL8PESGBRIQE0rtrEEkxXezfBxBu3x4Zakv2XTr51/9si8oquPOdjdy9ZAvf7i7mH5edRXCg8yYK/rMuh5dX7ua6c/qd8crv1kiIDiErv8zpr9vROfITvAwYAawHMMYcFJGO0e3Ki7xvr92/bERvh59zaVIv/rftEP/6aifTBkY59HH+hdRseoQFMSvZ8eM0JcDPh1nJvXnjm70cOV5Jt+CmT+adSXVNLX/5YAuRIYH84YKBbY6to4sOs43+C0orCAn0o3OAb6tG6xEhgSyaN5bnUrJ56qudbDlwjOd/MYqBPdqeAr7OyOe+j7Zx3qAo7r14iCWfJhKjQ/lyez4V1TUE+mmZZx1HPgtXGlvNpwEQEc8pGPYQtbWG99NzmXRK7b4jHpo5jC6dAvjduxupqK5pdt/1+47wze7D3DCpPwF+zplGmT0qhsqaWj5uY5/+19fmsO1gCfdfOpSwDnqVrrOJCNFhQQQH+rUpqfr4CHecl8AbN4zj2MlqZj63mnfT2rZQzNYDx/j1fzcwpFcYz1wzwmnneE4VHxVCrYHdhR232skKjrzb74rIS0BXEbkR+Ap4xdqwVEus213MwWPlXDm6+ZO6jekWHMA/rziLjEOl/OurrGb3fTF1F106+XPN2L6tDfU0Q3qFMaRnWJv69B84epInv9zJuYOiuHBY2847qKaNj4tg2W8mMqJPN/60eDN/eG8TJyubHyw05uDRk1z/+vd07eTPa3PGOHXq6FSJ0bZPJjrP/2NnTPzGmMeBxcD72Ob57zXGPGt1YMpx76XtJyzIj/MHn16774jzBkdz1egYXlqxi/S9hxvdJ7uglC+25zNnfKzT/6POHhXD5txjZB5q+X9OYwz3Ld2KMfDApUM9sma/PYkKDeKNG8Yx/7wE3l+fy8znVpNd4PjPraS8inkLv+dkZQ0L540lyoHGfm0xIDIYXx8hu0Dn+Rty6POVMeZL4EHgYSBdRLpbGpVyWEl5FZ9vO8SlyU3X7jvibxcPoWeXTvz+3U2cqKw+7fEXV+ymk78vc8fHtiHaxtXX9LeiT///th3iqx0F/G6659fstxe+PsLvpify7+vHUlxWySXPruGDDWf+2VXV1HL7m+vZVVjGC9c65zzBmQT6+dIvvLOO+E9xxsQvIjeLSD6wGUgD0u1fVTuwbHNd7X7beu+EBvnz2JXDySk+wT8/y/jRYweOnuTDDQe4emwfurfhBGxTwkMCOXdQFEta2Ke/tLyK+z7axuCeYcybEOv0uFTzJiVEsuw3kzirdxfufGcTd72/mfKqxqd+jDHc88FWVmUV8fBlZzExIcJlcSZEaWXPqRwZ8f8BGGqMiTXGDDDG9DfGONaDV1lucXou8VEhJMV0afNrjY+LYO74WBat28uaBv3yX121G4AbJln3Y589KoaisgpWZhU6/JwnvthJQWkF/+/ysyw7OaiaFx0WxH9vHMdtU+N4+/v9zHpuDbsLT0+yz6fu4p20/dxxbrxTGgS2RGJ0KDnFx5v8o+SNHPnfsgvQJtjt0J6i46TtPVLfd98Z/jxjEAMigvnje5soKa/i8PFK3v5uPzOTe9O7ayenHKMx0wZFER4cwHsO9umvq9m/7ux+Z7xgTVnLz9eHP80YxMJ5Y8gvKeeSZ1fz0aYfqrTqWizPTO7F76Ynujy+hOhQao3t/4uycSTx3w2sFZGXROSZupvVgakzez+95bX7Z9IpwJcnrkriUEk5D3y0nUVrczhZVcMtU6z9kOfv68OsEb35akf+GXusV9fUcveSLUSFas1+ezJtYBSfzp/EoJ5hzH9rA/d8uIVVWYX1LZYfnT3cLSffE6NtLUl0nv8HjiT+l4CvgW+wze/X3ZolIn1EJEVEdojINhH5jX37/SJyQEQ22m8XteUf4K1qag3vr89lcmKkQ0setsSIvt24bWo876/P5cUVu5g+JJqEaOtPxM0eFUNVjfnRaLExC9fksD2vhAcuHdphV9byVL26duLtm87m5skDeOObffxywXfEdO/Ey78c5bYLqPpH2Cp7dJ7/B47U5VUbY37XiteuBn5vjFlvv9I3XUS+tD/2lL1MVLXS2l1F5B0r556fDrHk9eefl8DyjAJ25JVw69TWtV5uqcE9wxjay1bTP6eJ6qHcIyd48sudnD84iguGas1+e+Tv68PdFw1mTGx33vx2L/dfOrTZFstWq6vsyWpB2amncyTxp4jITcDHQEXdRmNM4wXfPzyeB+TZ75eKyA7AeXMSXm5xei5dOvlz3mBrlhUM8PNhwZzRrN93hJEu7Hsze1QMD3y8nYxDJQzq8eMWEsYY7l26DRF4wEP77HuS84dEc34j60K4Q2JUqE71NODIVM/Psc/z88M0T4vKOUUkFlu/n2/tm34tIptF5DURaTSriMhNIpImImmFhY5XeniDkvIqPt96qNm++87Qq2snLh7e68w7OtHM5N74+zbep//zrYf4OsNWs2/liWbleRKiQ7SypwFHrtzt38jN4TN9IhKC7arf3xpjSoAXgDggGdsngieaOO7LxpjRxpjRkZGesWaqs3y6OY+K6jP33e+IugcHcO6gKD7YcJCqBjX9Jfaa/aG9wiy5iEx5trrKHu3ZY+NQ8bOIDBORq0Tkurqbg8/zx5b03zTGLAEwxuQbY2qMMbXYev6MbW3w3mpxei4JUSEMd0Ltfns0e1QfisoqWJH5wye9x/+XSVGZ1uyr1qmr7NF5fhtHrty9D3jWfpsGPApc6sDzBFgA7DDGPNlge8OVFi4DtrYwZq+2u7CMdCfX7rc3UwdGEhESUN+4bcO+I/znm71cd04sw2O0Zl+1nFb2/JgjJ3dnA0nABmPMPBGJBl514HkTgF8CW0Rko33bX4BrRCQZW5vnHODmFkftxVrTd7+j8fe19elftC6HgtJy7l6yhejQIH7/E9df/KM8g/bs+TFHEv9JY0ytiFSLSBhQAJxxjt8YsxpobEi6rIUxKruaWsOS9QeYkhhpeVdDd7tiVAyvrt7D3Ne+J+NQKS9eO0pr9lWbaGXPDxyZLE0Tka7Y5uPTsa3E9Z2lUalGrcm21e5fOdq1vU7cYXDPMIb1DmN7XgnTh0QzQ/vsqzZK1Mqeeo5U9dxmjDlqjHkRmA7MMcbMsz40dSqra/fbm+vOiaV7cAAPXDrU3aEoD6CVPT9wZLH1kY1siwP2GmNOb9yuLHHsZBX/23aIn43p4zVrh141ug+zR8a0eVF3pcBWyw+2yh5H1pf2ZI7M8T8PjMTWj1+AYfb74SJyizHmCwvjU3aeXLvfHE36ylm0sucHjszx5wAj7BdTjcJ2Be5W4HxspZ3KBRan7ycxOoSzentm7b5SVgv08yVWK3sAxxL/IGPMtrpvjDHbsf0h2G1dWKqhXYVlrN931KNr95VyhYSoULJ0/V2HEn+miLwgIih1N0oAABn0SURBVFPst+eBnSISCFRZHJ/C1nff10eYley5tftKuUJidAh7tbLHocQ/F8gGfgvcCey2b6vCdiWvspA31e4rZTWt7LE548ldY8xJbI3UGmumpp+ZLLY6u4hDJeXce4k1ffeV8iaJ9gWFvL2yR7tdtXOL03Pp2tl7aveVslJsRGd8fcTrT/Bq4m/H6mr3Zyb18prafaWsVFfZ4+0lnc0mfhHxFZHHXBWM+rH30vZTWV3L7FGe36JBKVdJjNbKnmYTvzGmBhglWkPocmuzi3jkswwmJUQwrLf3zkUq5WwJUa6p7DHGsHZXEbW1xtLjtIYjUz0bgKUi8ksRubzuZnVg3iwrv5Sb30inf0Qw//fzkVq7r5QT1VX27Cq0dtSfurOQn7/yLe+k7bf0OK3hSOLvDhQD5wKX2G8XWxmUNysoLWfuwu8J8vdl4bwxdOmkrYiVcqa6yp5si6d7Vu0sAuCF1F1UN1hGtD1wpJxTO3G6yInKam5YlMbh45W8c/PZxHTr7O6QlPI4dT17rK7sWZNdRNfO/uw7fIJPt+Qxsx1dgOnI0ouJIrJcRLbavx8uIvdYH5p3qak1/ObtjWw5cIxnrhmhSwwqZZEAPx97zx7rRvwFpeVk5pdy0+QBJEaH8FxKdrua63dkqucV4G7s7RmMMZuBq60Myhs99Ol2vtyez30XD2H6kGh3h6OUR0uMDrV0qmfdrmIAJidEctvUeHbml/HljnzLjtdSjiT+zsaYU1fc0j78TvTa6j0sXJPD9RP6M3dCf3eHo5THS4gOtbSyZ3WWbZpnSM8wLh7ek77dO/NcSjbGtI9RvyOJv8i+8IoBEJHZQJ6lUXmRL7Yd4sFPt/OTIdH89aeD3R2OUl4hMTrEssoeYwxrsosYHxeOj4/g5+vDrVPj2Jx7jNXZRU4/Xms4kvhvB14CBonIAWzN2m6xNCovsWn/Uea/vYHhvbvw9NUj8NVFR5RyiYQoe88eC+b59xQd5+CxcibER9Rvu3xkb3qEBfF/X2c7/Xit4ciau7uNMecDkdh68080xuy1PjTPtv/wCX61KI2IkEBenTOGTgHakkEpV+kfEYyfj5BV4PzKnjX2Uf3EBok/0M+XGycP4Ns9h0nLOez0Y7aUI1U94SLyDLAKSBWRp0Uk3PrQPNexk1XMe/17KqtreH3eGCJDA90dklJeJcDPh9iIYEsqe1ZnFxHTrRN9u/+4HPuasX3oHhzAcynuH/U7MtXzNlAIXAHMtt9/x8qgPFlldS23/CedvcXHefGXo4i3f+RUSrlWQlQIWU6u5a+pNazbVczE+IjTrrjvHODHryb2JyWzkK0Hjjn1uC3l0JW7xpgHjTF77LeHAC0ybwVjDHct2cy63cX884rhjI+LOPOTlFKWSIgOZd/hE06t7Nl64Bgl5dU/mt9v6Nqz+xEa6Mfzqe4d9TuS+FNE5GoR8bHfrgI+tTowT/TM8myWrD/AnecncvnIGHeHo5RXs6Kyp65qZ3xc47PhXTr5c934fny29RDZFpxfcJQjif9m4L9Ahf32NvA7ESkVkRIrg/Mk76fn8tRXO7liZAzzz4t3dzhKeb361bicOM+/JruIwT3DCA9p+rzd9RP6E+jnwwupu5123JZypKon1BjjY4zxt9987NtCjTFN9gsWkT4ikiIiO0Rkm4j8xr69u4h8KSJZ9q/dnPkPao/W7iririWbGR8Xzv+7/CzttqlUOxAbbqvscVbPnpOVNaTlHGFifPO1L+EhgVwzti8fbjzA/sMnnHLslrJyBa5q4PfGmMHA2cDtIjIEuAtYboxJAJbbv/dYWfml3PyfdGLDg3nh2lEE+OmiZ0q1B3WVPc5alCVt72Eqa2qbnN9v6KbJA/AReGnlLqccu6Usy0LGmDxjzHr7/VJgB9AbmAkssu+2CJhlVQzuVlhawbzXvyfQT1ssK9UeJUY7r7JndXYR/r7C2P7dz7hvzy6dmD0qhnfTcikoKXfK8VvCJcNPEYkFRgDfAtHGmDyw/XEAGl1FXERuEpE0EUkrLCx0RZhO98DH2ygqq+C1uaO1xbJS7VBCVCh7nVTZsya7iJF9u9E54Izd7gG4ZUoc1TW1vLp6T5uP3VKOXMAVJyKB9vtTRWS+iDhczikiIcD7wG+NMQ6fDDbGvGyMGW2MGR0ZGeno09qNnfmlfLolj19N7K8tlpVqpxKiQzCm7YuyHDleybaDJQ5N89TpFx7MJUm9eOObvRw5Xtmm47eUIyP+94EaEYkHFgD9sVX5nJGI+Nuf/6YxZol9c76I9LQ/3hMoaHHUHcAzy7Po7O/LDRMHuDsUpVQTnLUa17rdxRhDixI/wG1T4zlRWcPra3PadPyWciTx1xpjqoHLgH8ZY+4Eep7pSfYF2hcAO4wxTzZ46CNgjv3+HGBpy0Ju/+pG+3MnxNItOMDd4SilmuCsyp7V2UWEBPqRFNOlRc8b2COUnwyJ5vW1OZRVuK7bvSOJv0pErsGWpD+xb3PkLOUE4JfAuSKy0X67CHgEmC4iWcB0+/ce5Wkd7SvVITirZ8+a7CLOHhCOn2/LT5vePi2eYyereOMb1/W+dOQsxDxsbZj/YYzZIyL9gTfO9CRjzGqgqYL18xwPsWPJPFTKsi153DY1Tkf7SnUAidEhbD/Y+mtR9x8+wd7iE8wbH9uq5yf16cqkhAheXbWHueNjCfK3vlOvI3+ephtj5htj3gIwxuwBTlobVsf1zNc62leqI2lrZU99G+aE1vfeun1aPEVlFbybtr/Vr9ESjiT+OY1sm+vkODxC3Whf5/aV6jgSo0PbVNmzOruI6LBA4iJDWh3DuP7dGd2vGy+t2E1VTW2rX8dRTSZ+EblGRD4G+ovIRw1uKUCx5ZF1QM8szyI4wE9H+0p1IAnRtoTdmkVZau1tmCfEnd6GuSVEhNunxXPg6Ek+2HCg1a/jqObm+NdiW1s3AniiwfZSYLOVQXVEmYdslTy/nhavo32lOpC6yp7WNGvLOFRK8fHKFpdxNmbqwEiG9grjxdRdXDEyxtKlWJsc8Rtj9hpjUo0x5xhjVjS4rbeXd6oGnlmeRUigbaEFpVTHEeDnQ/9WVvbUze87I/HXjfp3Fx3ns615bX695jhy5e7l9k6ax0SkRNsxn65utD93vM7tK9URJUaHtmqqZ3V2EfFRIfToEuSUOGYM7UFcZDDPpezCGOOU12yMIyd3HwUuNcZ0McaEnakdszfS0b5SHVt8VEiLV+OqqK7huz2Hf7Soelv5+Ai3To1nR14JX2dY19TAkcSfb4zZYVkEHZyO9pXq+FpT2bNh31FOVtU4ZZqnoZnJvYjp1on/S8m2bNTvSOJPE5F37FU+l9fdLImmA3p6+U5CAv24YZKO9pXqqBJbUdmzJrsIH4FxA87chrkl/H19uHlKHBv2HWXdbmsKKB1J/GHACeAnwCX228WWRNPBZBwqYdmWQ8ybEEvXzjraV6qj6lffs8fxEf+a7CKS+nQlLMj562xcOSqGyNBAnkuxZlH2M7ZsMMbMs+TIHkDn9pXyDHWVPY6WdJaUV7Ep9xi3TY2zJJ4gf19unNSfh5dlsGHfEUb0de4KtU0mfhH5kzHmURF5FjhtoskYM9+pkXQwdaP9O86N19G+Uh4gMTqUrQePObTvt7sPU1NrnD6/39AvxvUjK7/MkpX7mhvx153QTXP6UT2AjvaV8iwJ0SEs25rHycoaOgU03yhtTXYRnfx9GdHXukWWggP9eOzKJEteu8nEb4z52P51EYCIhNq+Nc5ZmbgD09G+Up4nIcpW2bOrsIxhvZvvq786u4ix/bsT6Gd9J00rOHIB1zAR2QBsBbaLSLqIDLU+tPbr6a+yCNXRvlIexdHKnkPHyskuKHNq/b6rOVLV8zLwO2NMP2NMX+D3wCvWhtV+7cgr4bOtWsmjlKeJjQjG3/fMlT11bRrGx4e7IixLOJL4g40xKXXfGGNSgWDLImrnnlluG+1fr6N9pTyKv29dZU/zI/41u4roHhzA4B4dt4GBI4l/t4j8TURi7bd7gD1WB9Ye6WhfKc+WEBVKVjNX7xpjWJNdxPi4cHws7J5pNUcS//VAJLDEfovAthyj19HRvlKeLSHa1rPnZGXjPXt2FZaRX1LRoef3ofk6/iBsa+3GA1uA3xtjqlwVWHtTN9qfr5U8Snmsup49TVX2rM5yXhtmd2puxL8IGI0t6V8IPOaSiNqpHyp5dHUtpTxVQlTzlT2rs4vpF96ZPt07uzIsp2vuAq4hxpizAERkAfCda0Jqf7YfLOHzbYeYf14CXTo7/yo6pVT70FxlT3VNLd/sLuaSpF5uiMy5mhvx10/rePuKW3Vz+7+aoHP7Snmy5ip7NuUeo6yiusPP70PzI/6kBittCdDJ/r1gu4K349YytYCO9pXyLgnRoWzJPb1nz9rsIkTgnLiOW79fp7mWDR3zWmQn09G+Ut4lISqEZVtO79mzOruIob3C6O4BCy45Us7ptepG+/Mm9tfRvlJeomFlT50TldWs33ekw1fz1LEs8YvIayJSICJbG2y7X0QOiMhG++0iq47vDP9el0NwgK+O9pXyInU9e3Y2mOf/bs9hqmqMR8zvg7Uj/teBGY1sf8oYk2y/LbPw+G1ijOHrjAKmDozS0b5SXqRf+OmVPWuyiwjw9WF0P+cus+guliV+Y8xK4LBVr2+17XklFJRWMHVgpLtDUUq5UF1lT3aDWv7V2cWM6tftjH36Owp3zPH/WkQ226eCmlxPTERuEpE0EUkrLCx0ZXwApGbajjlFE79SXichOrR+xF9UVsGOvBImJnjGNA+4PvG/AMQByUAe8ERTOxpjXjbGjDbGjI6MdH3yTcko4KzeXYgKDXL5sZVS7pUYFcr+I7aePWt3FQMdv01DQy5N/MaYfGNMjTGmFltP/7GuPL6jjp6oZP2+IzrNo5SXSogOqa/sWZtdRGiQH2edYVWujsSliV9Eejb49jJsq3q1Oyuziqg1MHVglLtDUUq5QcPKnlVZtjbMvh24DfOpmrtyt01E5C1gKhAhIrnAfcBUEUkGDJAD3GzV8dsiNaOArp39Se5j3ULKSqn2q66y56sd+Rw4epJbpnhWc0bLEr8x5ppGNi+w6njOUltrSN1ZyJTESI/6C6+Ucpy/rw8DIkL437Z8AMZ70Pw+6JW7p9l84BiHj1cyTad5lPJq8dEh1NQaenYJYkCEZ602q4n/FCkZBYjA5EQ9sauUN0uMCgVs1TwinvXpXxP/KVIzC0ju09UjGjEppVqv7gSvp7RpaEgTfwNFZRVsyj2m0zxKKaYNiuJPMwYyY1gPd4fidJad3O2IVu60Xa2riV8pFeTvy21T490dhiV0xN9ASmYhESGBDO3lFWvMKKW8lCZ+u+qaWlbuLGTqwEh8tIxTKeXBNPHbbdx/lGMnq3SaRynl8TTx26VkFuDrIx7VgU8ppRqjid8uJaOQUf260aWTLrqilPJsmviBQ8fK2Z5XotM8SimvoIkfWLGzAIBpg/RqXaWU59PEj22ap2eXIAZGh7o7FKWUspzXJ/7K6lpWZxcxdWCUx/XjUEqpxnh94k/be5iyimqm6WpbSikv4fWJPzWzEH9f8aj1NJVSqjlen/hTMgoY1z+c4EBtW6SU8g5enfj3Hz5BVkGZLqqulPIqXp34U+3dOHVRdaWUN/HuxJ9RQJ/unYiL9Kxl1ZRSqjlem/jLq2pYu6uYaVrGqZTyMl6b+L/bc5iTVTXapkEp5XW8NvGnZBYQ6OfD2QPC3R2KUkq5lNcm/tTMQs6JC6dTgK+7Q1FKKZfyysS/p+g4e4qO6zSPUsoreWXiT820d+PUxK+U8kJemfhTMgsZEBlM3/DO7g5FKaVczrLELyKviUiBiGxtsK27iHwpIln2r92sOn5TTlRW883uYh3tK6W8lpUj/teBGadsuwtYboxJAJbbv3epdbuKqayu1cSvlPJaliV+Y8xK4PApm2cCi+z3FwGzrDp+U1IyC+gc4MuY/i7/sKGUUu2Cq+f4o40xeQD2r00Ou0XkJhFJE5G0wsJCpxzcGENKRiET4iMI9NMyTqWUd2q3J3eNMS8bY0YbY0ZHRjqne2Z2QRkHjp7UaR6llFdzdeLPF5GeAPavBa48eIq9jFPbMCulvJmrE/9HwBz7/TnAUlcePCWjkEE9QunVtZMrD6uUUu2KleWcbwHrgIEikisivwIeAaaLSBYw3f69S5SWV/F9zmHtva+U8nqWrTdojLmmiYfOs+qYzVmTXUx1rdFF1ZVSXq/dntx1ttTMAkKD/BjZT8s4lVLezSsSvzGGlMwCJidE4u/rFf9kpZRqkldkwR15peSXVDBFp3mUUso7En99GWeiJn6llPKKxJ+aWcCw3mFEhQW5OxSllHI7j0/8x05Ukb73iF6tq5RSdh6f+FdmFVJr0Pp9pZSy8/jEn5JZQNfO/iT36eruUJRSql3w6MRfW2tYkVnIlMRIfH3E3eEopVS74NGJf8uBYxQfr9T5faWUasCjE39KZgEiMFnLOJVSqp5HJ/6eXYK4alQfugcHuDsUpZRqNyxr0tYe/GxMX342pq+7w1BKqXbFo0f8SimlTqeJXymlvIwmfqWU8jKa+JVSysto4ldKKS+jiV8ppbyMJn6llPIymviVUsrLiDHG3TGckYgUAntb+fQIoMiJ4Tibxtc2Gl/baHxt155j7GeMOa1nTYdI/G0hImnGmNHujqMpGl/baHxto/G1XUeI8VQ61aOUUl5GE79SSnkZb0j8L7s7gDPQ+NpG42sbja/tOkKMP+Lxc/xKKaV+zBtG/EoppRrQxK+UUl7GYxK/iMwQkUwRyRaRuxp5XETkGfvjm0VkpAtj6yMiKSKyQ0S2ichvGtlnqogcE5GN9tu9rorPfvwcEdliP3ZaI4+78/0b2OB92SgiJSLy21P2cen7JyKviUiBiGxtsK27iHwpIln2r92aeG6zv6sWxveYiGTYf34fiEjXJp7b7O+ChfHdLyIHGvwML2riue56/95pEFuOiGxs4rmWv39tZozp8DfAF9gFDAACgE3AkFP2uQj4DBDgbOBbF8bXExhpvx8K7GwkvqnAJ258D3OAiGYed9v718jP+hC2C1Pc9v4Bk4GRwNYG2x4F7rLfvwv4ZxPxN/u7amF8PwH87Pf/2Vh8jvwuWBjf/cAfHPj5u+X9O+XxJ4B73fX+tfXmKSP+sUC2MWa3MaYSeBuYeco+M4F/G5tvgK4i0tMVwRlj8owx6+33S4EdQG9XHNuJ3Pb+neI8YJcxprVXcjuFMWYlcPiUzTOBRfb7i4BZjTzVkd9VS+IzxnxhjKm2f/sNEOPs4zqqiffPEW57/+qIiABXAW85+7iu4imJvzewv8H3uZyeWB3Zx3IiEguMAL5t5OFzRGSTiHwmIkNdGhgY4AsRSReRmxp5vF28f8DVNP0fzp3vH0C0MSYPbH/sgahG9mkv7+P12D7BNeZMvwtW+rV9Kuq1JqbK2sP7NwnIN8ZkNfG4O98/h3hK4pdGtp1ap+rIPpYSkRDgfeC3xpiSUx5ej236Igl4FvjQlbEBE4wxI4ELgdtFZPIpj7eH9y8AuBR4r5GH3f3+Oao9vI9/BaqBN5vY5Uy/C1Z5AYgDkoE8bNMpp3L7+wdcQ/OjfXe9fw7zlMSfC/Rp8H0McLAV+1hGRPyxJf03jTFLTn3cGFNijCmz318G+ItIhKviM8YctH8tAD7A9pG6Ibe+f3YXAuuNMfmnPuDu988uv276y/61oJF93P17OAe4GPiFsU9In8qB3wVLGGPyjTE1xpha4JUmjuvu988PuBx4p6l93PX+tYSnJP7vgQQR6W8fFV4NfHTKPh8B19mrU84GjtV9LLeafU5wAbDDGPNkE/v0sO+HiIzF9rMpdlF8wSISWncf20nArafs5rb3r4EmR1rufP8a+AiYY78/B1jayD6O/K5aQkRmAH8GLjXGnGhiH0d+F6yKr+E5o8uaOK7b3j+784EMY0xuYw+68/1rEXefXXbWDVvVyU5sZ/z/at92C3CL/b4Az9kf3wKMdmFsE7F9HN0MbLTfLjolvl8D27BVKXwDjHdhfAPsx91kj6FdvX/243fGlsi7NNjmtvcP2x+gPKAK2yj0V0A4sBzIsn/tbt+3F7Csud9VF8WXjW1+vO538MVT42vqd8FF8f3H/ru1GVsy79me3j/79tfrfuca7Ovy96+tN23ZoJRSXsZTpnqUUko5SBO/Ukp5GU38SinlZTTxK6WUl9HEr5RSXkYTv1JKeRlN/EpZSER83R2DUqfSxK+UnYg8KA3WShCRf4jIfBH5o4h8b28e9kCDxz+0N+La1rAZl4iUicjfReRbbI3jHhGR7fbnP+7if5ZSp9ELuJSys3dOXWKMGSkiPtiuwP0LtlbQN2O7evkj4FFjzEoR6W6MOSwinbC1EphijCkWEQP8zBjzroh0B9YBg4wxRkS6GmOOuuGfp1Q9P3cHoFR7YYzJEZFiERkBRAMbgDHY+q1ssO8WAiQAK4H5InKZfXsf+/ZioAZbQz6AEqAceFVEPgU+ccW/RanmaOJX6sdeBeYCPYDXsI32/58x5qWGO4nIVGwNu84xxpwQkVQgyP5wuTGmBsAYU21vGncetoZivwbOtf6foVTTNPEr9WMfAH8H/IGfY+tb/6CIvGmMKROR3tgad3UBjtiT/iBsy1Gexr4GQ2djzDIR+QZbozSl3EoTv1INGGMqRSQFOGoftX8hIoOBdfauz2XAtcDnwC0ishnIxNYRtDGhwFIRCcJ2juBOq/8NSp2JntxVqgH7Sd31wJWm6aX1lOrQtJxTKTsRGYJtKma5Jn3lyXTEr5RSXkZH/Eop5WU08SullJfRxK+UUl5GE79SSnkZTfxKKeVl/j+Yx9kCusqp7gAAAABJRU5ErkJggg==\n", | |
"text/plain": "<Figure size 432x288 with 1 Axes>" | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": "data_frame = kb_df\nname = names[1]\nplt.plot(data_frame[['Points per game']],label=name)\nplt.legend()\nplt.xlabel('years')\nplt.ylabel('Points per game')" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "<h2 id=\"Section_4\"> How to submit </h2>\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "<p>Once you complete your notebook you will have to share it to be marked. Select the icon on the top right a marked in red in the image below, a dialogue box should open, select the option all content excluding sensitive code cells.</p>\n\n<p><img height=\"440\" width=\"700\" src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/projects/EdX/ReadMe%20files/share_noteook1.png\" alt=\"share notebook\" /></p>\n<p></p>\n\n<p>You can then share the notebook via a URL by scrolling down as shown in the following image:</p>\n<p style=\"text-align: center;\"> <img height=\"308\" width=\"350\" src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/projects/EdX/ReadMe%20files/link2.png\" alt=\"share notebook\" /> </p>\n" | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": "## Authors\n\n<a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\">Joseph Santarcangelo</a> \n\nJoseph Santarcangelo has a PhD in Electrical Engineering, his research focused on using machine learning, signal processing, and computer vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.\n\n## Other contributors\n\n<a href=\"https://www.linkedin.com/in/michelleccarey/\">Michelle Carey</a>\n\n<a href=\"www.linkedin.com/in/jiahui-mavis-zhou-a4537814a\">Mavis Zhou</a> \n\n## Change Log\n\n| Date (YYYY-MM-DD) | Version | Changed By | Change Description |\n| ----------------- | ------- | ---------- | ---------------------------------- |\n| 2020-09-01 | 2.0 | Lavanya | Moved lab to course repo in GitLab |\n\n<hr>\n\n## <h3 align=\"center\"> \u00a9 IBM Corporation 2020. All rights reserved. <h3/>\n" | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3.7", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.7.9" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment