From e229016c9a076a44003a828200a5f42b66a569bf Mon Sep 17 00:00:00 2001 From: Rohan Kumara <31560310+rohankumara@users.noreply.github.com> Date: Fri, 1 May 2020 21:26:50 +0530 Subject: [PATCH 1/7] A-Z file fuck you --- Analysis.ipynb | 579 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 579 insertions(+) create mode 100644 Analysis.ipynb diff --git a/Analysis.ipynb b/Analysis.ipynb new file mode 100644 index 0000000..2cca865 --- /dev/null +++ b/Analysis.ipynb @@ -0,0 +1,579 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "#Dear Student,\n", + "#\n", + "#Welcome to the world of Basketball Data!\n", + "#I'm sure you will enjoy this section of the Python Programming course.\n", + "#\n", + "#Instructions for this dataset:\n", + "# Simply copy ALL the lines in this script by pressing \n", + "# CTRL+A on Windows or CMND+A on Mac and run the Jupyter cell\n", + "# Once you have executed the commands the following objects\n", + "# will be created:\n", + "# Matrices:\n", + "# - Salary\n", + "# - Games\n", + "# - MinutesPlayed\n", + "# - FieldGoals\n", + "# - FieldGoalAttempts\n", + "# - Points\n", + "# Lists:\n", + "# - Players\n", + "# - Seasons\n", + "# Dictionaries:\n", + "# - Sdict\n", + "# - Pdict\n", + "#We will understand these inside the course.\n", + "#\n", + "#Sincerely,\n", + "#Kirill Eremenko\n", + "#www.superdatascience.com\n", + "\n", + "#Copyright: These datasets were prepared using publicly available data.\n", + "# However, theses scripts are subject to Copyright Laws. \n", + "# If you wish to use these Python scripts outside of the Python Programming Course\n", + "# by Kirill Eremenko, you may do so by referencing www.superdatascience.com in your work.\n", + "\n", + "#Comments:\n", + "#Seasons are labeled based on the first year in the season\n", + "#E.g. the 2012-2013 season is preseneted as simply 2012\n", + "\n", + "#Notes and Corrections to the data:\n", + "#Kevin Durant: 2006 - College Data Used\n", + "#Kevin Durant: 2005 - Proxied With 2006 Data\n", + "#Derrick Rose: 2012 - Did Not Play\n", + "#Derrick Rose: 2007 - College Data Used\n", + "#Derrick Rose: 2006 - Proxied With 2007 Data\n", + "#Derrick Rose: 2005 - Proxied With 2007 Data\n", + "\n", + "#Import numpy\n", + "import numpy as np\n", + "\n", + "#Seasons\n", + "Seasons = [\"2005\",\"2006\",\"2007\",\"2008\",\"2009\",\"2010\",\"2011\",\"2012\",\"2013\",\"2014\"]\n", + "Sdict = {\"2005\":0,\"2006\":1,\"2007\":2,\"2008\":3,\"2009\":4,\"2010\":5,\"2011\":6,\"2012\":7,\"2013\":8,\"2014\":9}\n", + "\n", + "#Players\n", + "Players = [\"KobeBryant\",\"JoeJohnson\",\"LeBronJames\",\"CarmeloAnthony\",\"DwightHoward\",\"ChrisBosh\",\"ChrisPaul\",\"KevinDurant\",\"DerrickRose\",\"DwayneWade\"]\n", + "Pdict = {\"KobeBryant\":0,\"JoeJohnson\":1,\"LeBronJames\":2,\"CarmeloAnthony\":3,\"DwightHoward\":4,\"ChrisBosh\":5,\"ChrisPaul\":6,\"KevinDurant\":7,\"DerrickRose\":8,\"DwayneWade\":9}\n", + "\n", + "#Salaries\n", + "KobeBryant_Salary = [15946875,17718750,19490625,21262500,23034375,24806250,25244493,27849149,30453805,23500000]\n", + "JoeJohnson_Salary = [12000000,12744189,13488377,14232567,14976754,16324500,18038573,19752645,21466718,23180790]\n", + "LeBronJames_Salary = [4621800,5828090,13041250,14410581,15779912,14500000,16022500,17545000,19067500,20644400]\n", + "CarmeloAnthony_Salary = [3713640,4694041,13041250,14410581,15779912,17149243,18518574,19450000,22407474,22458000]\n", + "DwightHoward_Salary = [4493160,4806720,6061274,13758000,15202590,16647180,18091770,19536360,20513178,21436271]\n", + "ChrisBosh_Salary = [3348000,4235220,12455000,14410581,15779912,14500000,16022500,17545000,19067500,20644400]\n", + "ChrisPaul_Salary = [3144240,3380160,3615960,4574189,13520500,14940153,16359805,17779458,18668431,20068563]\n", + "KevinDurant_Salary = [0,0,4171200,4484040,4796880,6053663,15506632,16669630,17832627,18995624]\n", + "DerrickRose_Salary = [0,0,0,4822800,5184480,5546160,6993708,16402500,17632688,18862875]\n", + "DwayneWade_Salary = [3031920,3841443,13041250,14410581,15779912,14200000,15691000,17182000,18673000,15000000]\n", + "#Matrix\n", + "Salary = np.array([KobeBryant_Salary, JoeJohnson_Salary, LeBronJames_Salary, CarmeloAnthony_Salary, DwightHoward_Salary, ChrisBosh_Salary, ChrisPaul_Salary, KevinDurant_Salary, DerrickRose_Salary, DwayneWade_Salary])\n", + "\n", + "#Games \n", + "KobeBryant_G = [80,77,82,82,73,82,58,78,6,35]\n", + "JoeJohnson_G = [82,57,82,79,76,72,60,72,79,80]\n", + "LeBronJames_G = [79,78,75,81,76,79,62,76,77,69]\n", + "CarmeloAnthony_G = [80,65,77,66,69,77,55,67,77,40]\n", + "DwightHoward_G = [82,82,82,79,82,78,54,76,71,41]\n", + "ChrisBosh_G = [70,69,67,77,70,77,57,74,79,44]\n", + "ChrisPaul_G = [78,64,80,78,45,80,60,70,62,82]\n", + "KevinDurant_G = [35,35,80,74,82,78,66,81,81,27]\n", + "DerrickRose_G = [40,40,40,81,78,81,39,0,10,51]\n", + "DwayneWade_G = [75,51,51,79,77,76,49,69,54,62]\n", + "#Matrix\n", + "Games = np.array([KobeBryant_G, JoeJohnson_G, LeBronJames_G, CarmeloAnthony_G, DwightHoward_G, ChrisBosh_G, ChrisPaul_G, KevinDurant_G, DerrickRose_G, DwayneWade_G])\n", + "\n", + "#Minutes Played\n", + "KobeBryant_MP = [3277,3140,3192,2960,2835,2779,2232,3013,177,1207]\n", + "JoeJohnson_MP = [3340,2359,3343,3124,2886,2554,2127,2642,2575,2791]\n", + "LeBronJames_MP = [3361,3190,3027,3054,2966,3063,2326,2877,2902,2493]\n", + "CarmeloAnthony_MP = [2941,2486,2806,2277,2634,2751,1876,2482,2982,1428]\n", + "DwightHoward_MP = [3021,3023,3088,2821,2843,2935,2070,2722,2396,1223]\n", + "ChrisBosh_MP = [2751,2658,2425,2928,2526,2795,2007,2454,2531,1556]\n", + "ChrisPaul_MP = [2808,2353,3006,3002,1712,2880,2181,2335,2171,2857]\n", + "KevinDurant_MP = [1255,1255,2768,2885,3239,3038,2546,3119,3122,913]\n", + "DerrickRose_MP = [1168,1168,1168,3000,2871,3026,1375,0,311,1530]\n", + "DwayneWade_MP = [2892,1931,1954,3048,2792,2823,1625,2391,1775,1971]\n", + "#Matrix\n", + "MinutesPlayed = np.array([KobeBryant_MP, JoeJohnson_MP, LeBronJames_MP, CarmeloAnthony_MP, DwightHoward_MP, ChrisBosh_MP, ChrisPaul_MP, KevinDurant_MP, DerrickRose_MP, DwayneWade_MP])\n", + "\n", + "#Field Goals\n", + "KobeBryant_FG = [978,813,775,800,716,740,574,738,31,266]\n", + "JoeJohnson_FG = [632,536,647,620,635,514,423,445,462,446]\n", + "LeBronJames_FG = [875,772,794,789,768,758,621,765,767,624]\n", + "CarmeloAnthony_FG = [756,691,728,535,688,684,441,669,743,358]\n", + "DwightHoward_FG = [468,526,583,560,510,619,416,470,473,251]\n", + "ChrisBosh_FG = [549,543,507,615,600,524,393,485,492,343]\n", + "ChrisPaul_FG = [407,381,630,631,314,430,425,412,406,568]\n", + "KevinDurant_FG = [306,306,587,661,794,711,643,731,849,238]\n", + "DerrickRose_FG = [208,208,208,574,672,711,302,0,58,338]\n", + "DwayneWade_FG = [699,472,439,854,719,692,416,569,415,509]\n", + "#Matrix\n", + "FieldGoals = np.array([KobeBryant_FG, JoeJohnson_FG, LeBronJames_FG, CarmeloAnthony_FG, DwightHoward_FG, ChrisBosh_FG, ChrisPaul_FG, KevinDurant_FG, DerrickRose_FG, DwayneWade_FG])\n", + "\n", + "#Field Goal Attempts\n", + "KobeBryant_FGA = [2173,1757,1690,1712,1569,1639,1336,1595,73,713]\n", + "JoeJohnson_FGA = [1395,1139,1497,1420,1386,1161,931,1052,1018,1025]\n", + "LeBronJames_FGA = [1823,1621,1642,1613,1528,1485,1169,1354,1353,1279]\n", + "CarmeloAnthony_FGA = [1572,1453,1481,1207,1502,1503,1025,1489,1643,806]\n", + "DwightHoward_FGA = [881,873,974,979,834,1044,726,813,800,423]\n", + "ChrisBosh_FGA = [1087,1094,1027,1263,1158,1056,807,907,953,745]\n", + "ChrisPaul_FGA = [947,871,1291,1255,637,928,890,856,870,1170]\n", + "KevinDurant_FGA = [647,647,1366,1390,1668,1538,1297,1433,1688,467]\n", + "DerrickRose_FGA = [436,436,436,1208,1373,1597,695,0,164,835]\n", + "DwayneWade_FGA = [1413,962,937,1739,1511,1384,837,1093,761,1084]\n", + "#Matrix\n", + "FieldGoalAttempts = np.array([KobeBryant_FGA, JoeJohnson_FGA, LeBronJames_FGA, CarmeloAnthony_FGA, DwightHoward_FGA, ChrisBosh_FGA, ChrisPaul_FGA, KevinDurant_FGA, DerrickRose_FGA, DwayneWade_FGA])\n", + "\n", + "#Points\n", + "KobeBryant_PTS = [2832,2430,2323,2201,1970,2078,1616,2133,83,782]\n", + "JoeJohnson_PTS = [1653,1426,1779,1688,1619,1312,1129,1170,1245,1154]\n", + "LeBronJames_PTS = [2478,2132,2250,2304,2258,2111,1683,2036,2089,1743]\n", + "CarmeloAnthony_PTS = [2122,1881,1978,1504,1943,1970,1245,1920,2112,966]\n", + "DwightHoward_PTS = [1292,1443,1695,1624,1503,1784,1113,1296,1297,646]\n", + "ChrisBosh_PTS = [1572,1561,1496,1746,1678,1438,1025,1232,1281,928]\n", + "ChrisPaul_PTS = [1258,1104,1684,1781,841,1268,1189,1186,1185,1564]\n", + "KevinDurant_PTS = [903,903,1624,1871,2472,2161,1850,2280,2593,686]\n", + "DerrickRose_PTS = [597,597,597,1361,1619,2026,852,0,159,904]\n", + "DwayneWade_PTS = [2040,1397,1254,2386,2045,1941,1082,1463,1028,1331]\n", + "#Matrix\n", + "Points = np.array([KobeBryant_PTS, JoeJohnson_PTS, LeBronJames_PTS, CarmeloAnthony_PTS, DwightHoward_PTS, ChrisBosh_PTS, ChrisPaul_PTS, KevinDurant_PTS, DerrickRose_PTS, DwayneWade_PTS]) \n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "array([[15946875, 17718750, 19490625, 21262500, 23034375, 24806250,\n 25244493, 27849149, 30453805, 23500000],\n [12000000, 12744189, 13488377, 14232567, 14976754, 16324500,\n 18038573, 19752645, 21466718, 23180790],\n [ 4621800, 5828090, 13041250, 14410581, 15779912, 14500000,\n 16022500, 17545000, 19067500, 20644400],\n [ 3713640, 4694041, 13041250, 14410581, 15779912, 17149243,\n 18518574, 19450000, 22407474, 22458000],\n [ 4493160, 4806720, 6061274, 13758000, 15202590, 16647180,\n 18091770, 19536360, 20513178, 21436271],\n [ 3348000, 4235220, 12455000, 14410581, 15779912, 14500000,\n 16022500, 17545000, 19067500, 20644400],\n [ 3144240, 3380160, 3615960, 4574189, 13520500, 14940153,\n 16359805, 17779458, 18668431, 20068563],\n [ 0, 0, 4171200, 4484040, 4796880, 6053663,\n 15506632, 16669630, 17832627, 18995624],\n [ 0, 0, 0, 4822800, 5184480, 5546160,\n 6993708, 16402500, 17632688, 18862875],\n [ 3031920, 3841443, 13041250, 14410581, 15779912, 14200000,\n 15691000, 17182000, 18673000, 15000000]])" + }, + "metadata": {}, + "execution_count": 26 + } + ], + "source": [ + "Salary" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]\n" + } + ], + "source": [ + "import numpy as np\n", + "mydata = np.arange(0,20)\n", + "print(mydata)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "array([[ 0, 1, 2, 3, 4],\n [ 5, 6, 7, 8, 9],\n [10, 11, 12, 13, 14],\n [15, 16, 17, 18, 19]])" + }, + "metadata": {}, + "execution_count": 28 + } + ], + "source": [ + "np.reshape(mydata, (4,5))" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "array([[ 0, 1, 2, 3],\n [ 4, 5, 6, 7],\n [ 8, 9, 10, 11],\n [12, 13, 14, 15],\n [16, 17, 18, 19]])" + }, + "metadata": {}, + "execution_count": 29 + } + ], + "source": [ + "Matrix1 = np.reshape(mydata,(5,4), order = 'C')\n", + "Matrix1" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "array([[ 0, 5, 10, 15],\n [ 1, 6, 11, 16],\n [ 2, 7, 12, 17],\n [ 3, 8, 13, 18],\n [ 4, 9, 14, 19]])" + }, + "metadata": {}, + "execution_count": 30 + } + ], + "source": [ + "Matrix2 = np.reshape(mydata,(5,4), order = 'F')\n", + "Matrix2" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "array([[ 0, 1, 2, 3],\n [ 4, 5, 6, 7],\n [ 8, 9, 10, 11],\n [12, 13, 14, 15],\n [16, 17, 18, 19]])" + }, + "metadata": {}, + "execution_count": 31 + } + ], + "source": [ + "Matrix1" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "10" + }, + "metadata": {}, + "execution_count": 32 + } + ], + "source": [ + "Matrix1[2,2]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "dic1 = {'key1':'val1','key2':'val2','key3':'val3'}" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "'val2'" + }, + "metadata": {}, + "execution_count": 34 + } + ], + "source": [ + "dic1['key2']" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "{'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}" + }, + "metadata": {}, + "execution_count": 35 + } + ], + "source": [ + "dic1" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "dic2 = {'1':'Rohan','2':'Ravindi'}" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "{'1': 'Rohan', '2': 'Ravindi'}" + }, + "metadata": {}, + "execution_count": 37 + } + ], + "source": [ + "dic2" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "'Ravindi'" + }, + "metadata": {}, + "execution_count": 38 + } + ], + "source": [ + "dic2['2']" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "array([79, 78, 75, 81, 76, 79, 62, 76, 77, 69])" + }, + "metadata": {}, + "execution_count": 39 + } + ], + "source": [ + "Games[2]" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "78" + }, + "metadata": {}, + "execution_count": 40 + } + ], + "source": [ + "Games[2,1]" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "array([1258, 1104, 1684, 1781, 841, 1268, 1189, 1186, 1185, 1564])" + }, + "metadata": {}, + "execution_count": 41 + } + ], + "source": [ + "Points[6]" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "8" + }, + "metadata": {}, + "execution_count": 42 + } + ], + "source": [ + "Pdict['DerrickRose']" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "array([40, 40, 40, 81, 78, 81, 39, 0, 10, 51])" + }, + "metadata": {}, + "execution_count": 43 + } + ], + "source": [ + "Games[Pdict['DerrickRose']]" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "15779912" + }, + "metadata": {}, + "execution_count": 44 + } + ], + "source": [ + "Salary[Pdict['LeBronJames']][Sdict['2009']]" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "array([[12., 11., 9., 10., 10., 9., 10., 9., 5., 8.],\n [ 8., 9., 8., 8., 8., 7., 7., 6., 6., 6.],\n [11., 10., 11., 10., 10., 10., 10., 10., 10., 9.],\n [ 9., 11., 9., 8., 10., 9., 8., 10., 10., 9.],\n [ 6., 6., 7., 7., 6., 8., 8., 6., 7., 6.],\n [ 8., 8., 8., 8., 9., 7., 7., 7., 6., 8.],\n [ 5., 6., 8., 8., 7., 5., 7., 6., 7., 7.],\n [ 9., 9., 7., 9., 10., 9., 10., 9., 10., 9.],\n [ 5., 5., 5., 7., 9., 9., 8., nan, 6., 7.],\n [ 9., 9., 9., 11., 9., 9., 8., 8., 8., 8.]])" + }, + "metadata": {}, + "execution_count": 45 + } + ], + "source": [ + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + " \n", + "np.matrix.round(FieldGoals / Games)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "plt.rcParams['figure.figsize'] = 8,4" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfgAAAEhCAYAAACTGbKYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3de7xVVb338c8XFPGuyM0ExFBUvKI7LPURrVTEC108CpmVR6PMu+VJn07Z0UqPnEoNzUhR7CQopj6UoqGlWN7YeA2vqCBECIJ3ULn8nj/G2q+93Kx9AfZcc621v+/Xa772WnPMtfbX7Wb99phzzDEUEZiZmVlt6ZR3ADMzM2t/LvBmZmY1yAXezMysBrnAm5mZ1SAXeDMzsxrkAm9mZlaDaq7ASxovaZGkf7Th2F9KerKwvSjprXJkNDMzy5pq7T54SQcB7wE3RsTua/G6M4DBEfHvmYUzMzMrk5rrwUfEdGBp8T5JAyTdLWmmpAcl7VLipaOAiWUJaWZmlrEN8g5QJuOAb0fES5L2A64GPtvQKGl7YAfgLznlMzMza1c1X+AlbQbsD0yW1LB7oyaHjQRujYhV5cxmZmaWlZov8KTLEG9FxN4tHDMSOK1MeczMzDJXc9fgm4qId4BXJf0bgJK9Gtol7QxsDTycU0QzM7N2V3MFXtJEUrHeWdJ8SScDJwAnS3oKmAWMKHrJKGBS1NrtBGZm1qHV3G1yZmZmVoM9eDMzM3OBNzMzq0k1NYq+e/fu0b9//7xjmJmZlcXMmTPfiIgepdpqqsD379+f+vr6vGOYmZmVhaS5zbX5FL2ZmVkNcoE3MzOrQS7wZmZmNcgF3szMrAa5wJuZmdUgF3gzM7Ms9e4NUumtd+/Mvq0LvJmZWZZef33d2taTC7yZmVlWli3L7Vu7wJuZmbW3u++GYcOgW7fcIrjAm5mZrY9ly+Cuu+CMM+DVV9O+RYtgzhw49dTcYtXUcrF1dXXhqWrNzCxzb70FEybA1Klw//3w4Yew8cYwaRIccwysXg2dCn1oqeX3Wo86LGlmRNSVaqupuejNzMwysWxZKuQbbwyHHAIrV8I558BOO6Ve+hFHwEEHQdeu6fhO+Z8gd4E3MzMrZfbsdOq9oZf+wQcwfHgq8N27w7x5sN12rb9Pr17Nj5bv1atdIxdzgTczMwNYvhyeego+/en0/KST4G9/g513hm9/u7GX3qAtxR1g4cL2z9oGLvBmZtZxvfRS6qE39NJXroQlS2CLLeDyy2HrreGTn8w75TpxgTczs45j+fJ0fXyjjeDXv4bvfCftHzgQvvWt1EtvuI6+77755WwHLvBmZlbbml5LnzABjjsODjsMxo5NRb1Ke+ktcYE3M7PatGRJup4+e3Z63tBL32WX9HzAADjttPzyZSyzAi9pPHAUsCgidi/Rfh5wQlGOXYEeEbFU0hzgXWAVsLK5e/zMzKyD6d27+RHpm28OBx4IffvCb36TZpE78EA466zUSx8woLxZc5ZlD/4GYCxwY6nGiBgDjAGQdDRwTkQsLTrkkIh4I8N8ZmZWbVpanOXdd1NvfciQ9FyC668vT64KlFmBj4jpkvq38fBRwMSsspiZWQ1oONXekhdfzD5Hlch9qh1JmwDDgD8U7Q7gz5JmShqdTzIzM8vdc8+lU+wDB6ZZ46zNci/wwNHA35ucnj8gIvYBjgBOk3RQ6ZeCpNGS6iXVL168OOusZmaWpZdfTiPbn346PV+wAMaNgx13hF/9Kt9sVaYSRtGPpMnp+YhYUPi6SNLtwBBgeqkXR8Q4YBykxWayjWpmZu1q5Uq4997GyWZeeintv+QS2HNPGDoUli5Nc8BDWrHN2iTXAi9pS2Ao8NWifZsCnSLi3cLjw4CLcopoZmbt7eWX0/StBxyQVlI7/nj46KM0x/sZZ6QR7zvumI7dYIO02VrL8ja5icDBQHdJ84ELgQ0BIuKawmFfBP4cEe8XvbQXcLvS8nobADdFxN1Z5TQzs4x98AE88EDqod91V+qlDxoEs2bBhhumyWd22aWxl96SnBZuqUZeD97MzNrfnDnQv396/NWvwu9/n6aAPeSQ1EMv7qXbOvN68GZmlq2GXnrDlLAvvZRuaxswIJ12P+EEOPjgtvXSrV24wJuZ2bpZtQo6d4a//hWOPDIt5NK1ayrkp58OW26Zjttvv1xjdlQu8GZm1jbF19KnToVTT4Wzz06j3U85JZ12dy+9YrjAm5lZy1avhi9+EaZN+3gvfYcdUvs228CVV+Ya0dZUCRPdmJlZHnr3TvO1l9o23RROPjkd16lTWsjl5JPhzjvTKm1Tp8KIEfnmtxa5B29m1lG1tHDLsmWweHHqvXfqBP/7v+XLZe3CBd7MzEqbMiXvBLYefIrezMysBrnAm5mZ1SAXeDMzsxrkAm9m1hHNn593AsuYC7yZWUd0xRUtt3vhlqrnAm9m1tFEwH33wciR6XGpbeHCvFPaevJtcmZmHY0EM2bA22/nncQy5B68mVlHsmJFmm62c2fo1i3vNJYhF3gzs47kpptg++3h1VfzTmIZc4E3M+soImDMmDQHff/+eaexjPkavJlZRzF1KsyaBRMmpOvwVtMy68FLGi9pkaR/NNN+sKS3JT1Z2H5U1DZM0guSZks6P6uMZmYdypgx0KdPGj1vNS/LU/Q3AMNaOebBiNi7sF0EIKkzcBVwBDAIGCVpUIY5zcxq3zPPwP33w9lnQ5cueaexMsjsFH1ETJfUfx1eOgSYHRGvAEiaBIwAnm2/dGZmHczuu6cCP3hw3kmsTPIeZPcZSU9Jmippt8K+7YB5RcfML+wrSdJoSfWS6hcvXpxlVjOz6iXB0KGwxRZ5J7EyybPAPw5sHxF7Ab8C7ijsLzXyI5p7k4gYFxF1EVHXo0ePDGKamVW588+Hc89No+itw8itwEfEOxHxXuHxXcCGkrqTeux9iw7tAyzIIaKZWfVbsgR+9St4802PnO9gcivwknpL6bdN0pBCliXADGAnSTtI6gKMBKbkldPMrKpdfTUsWwbf+17eSazMMhtkJ2kicDDQXdJ84EJgQ4CIuAY4FjhV0kpgOTAyIgJYKel04B6gMzA+ImZlldPMrGYtX55678OHw267tX681ZQsR9GPaqV9LDC2mba7gLuyyGVm1mHceCMsXgznnZd3EstB3qPozcwsK0OHwo9/nL5ah+Opas3MatUuu8CFF+adwnLiHryZWS364Q/hiSfyTmE5coE3M6s1f/87/OQn8NBDeSexHLnAm5nVmssug222gZNOyjuJ5cgF3sysljz/PEyZAqedBptskncay5ELvJlZLfn5z6Fr11TgrUNzgTczqyXbbQdnngk9e+adxHLm2+TMzGrJj3+cdwKrEO7Bm5nVgvfegzvvhNWr805iFcIF3sysFlx3HRx1FDz+eN5JrEK4wJuZVbuVK+GXv4QDD4S6urzTWIXwNXgzs2o3eTLMnQtXXpl3Eqsg7sGbmVWzCBgzJs07f9RReaexCuICb2ZWzf71L3jjDfjud6GTP9KtkU/Rm5lVs098Al5+Oe8UVoH8556ZWbV64w348EPYcMO0mRXJrMBLGi9pkaR/NNN+gqSnC9tDkvYqapsj6RlJT0qqzyqjmVlVO+cc2GMPWLUq7yRWgbLswd8ADGuh/VVgaETsCVwMjGvSfkhE7B0RvufDzKypefNg0iQYPhw6d847jVWgzK7BR8R0Sf1baC9eqPgRoE9WWczMas7ll6cR9Oeck3cSq1CVcg3+ZGBq0fMA/ixppqTROWUyM6tMb70F48bBccfB9tvnncYqVO6j6CUdQirwBxbtPiAiFkjqCUyT9HxETG/m9aOB0QD9+vXLPK+ZWe4mT05zz593Xt5JrILl2oOXtCdwLTAiIpY07I+IBYWvi4DbgSHNvUdEjIuIuoio69GjR9aRzczyd8op8NhjMHhw3kmsguVW4CX1A24DToyIF4v2bypp84bHwGFAyZH4ZmYdTgRI8KlP5Z3EKlxmp+glTQQOBrpLmg9cCGwIEBHXAD8CtgGulgSwsjBivhdwe2HfBsBNEXF3VjnNzKrG6tWw//7wla/AmWfmncYqXJaj6Ee10n4KcEqJ/a8Ae635CjOzDm7qVHj0UTj99LyTWBWolFH0ZmbWmjFjoG9fOP74vJNYFXCBNzOrBjNmwAMPwNlne1paaxMXeDOzajBmDGy5JXzzm3knsSqR+33wZmbWBj/4ARx7LGy+ed5JrEq4wJuZVYO99kqbWRv5FL2ZWSV74w34xje85rutNRd4M7NKdvXVMGFCWvfdbC24wJuZVarly2HsWDjySBg0KO80VmVc4M3MKtWECbB4sReVsXXiAm9mVolWrYKf/zzNOX/QQXmnsSrkUfRmZpXogw9gxIhU3NPaHGZrxQXezKwSbbop/M//5J3CqphP0ZuZVZonn4Rp09LSsGbrqE0FXlLnrIOYmVnBj34Eo0alUfRm66itPfjZksZI8n0aZmZZeu45+OMf05Kwm2ySdxqrYm0t8HsCLwLXSnpE0mhJW2SYy8ysY/r5z6FrVzjttLyTWJVrU4GPiHcj4rcRsT/wH8CFwL8kTZC0Y6YJzcw6in/9C373OzjpJOjRI+80VuXafA1e0jGSbgeuAH4OfBL4I3BXC68bL2mRpH800y5JV0qaLelpSfsUtX1d0kuF7etr9V9lZlaNXnwRevaEc8/NO4nVgLbeJvcS8FdgTEQ8VLT/VkktzcBwAzAWuLGZ9iOAnQrbfsCvgf0kdSOdJagDApgpaUpEvNnGvGZm1WfoUJgzBzp7XLOtv1Z78IUR9DdExMlNijsAEXFmc6+NiOnA0hbefgRwYySPAFtJ2hY4HJgWEUsLRX0aMKy1rGZmVeuFF2DFChd3azetFviIWAUcktH33w6YV/R8fmFfc/vNzGrPihVw2GFwwgl5J7Ea0tZT9A9JGgvcDLzfsDMiHl/P719q/sVoYf+abyCNBkYD9OvXbz3jmJnlYPJkeO01uOqqvJNYDWlrgd+/8PWion0BfHY9v/98oG/R8z7AgsL+g5vsv7/UG0TEOGAcQF1dnad9MrPqEgFjxsCuu8Lw4XmnsRrSpgIfEVmdop8CnC5pEmmQ3dsR8S9J9wA/k7R14bjDgAsyymBmlp/77ktT0153HXTy7OHWftq82IykI4HdgK4N+yLiouZfAZImknri3SXNJ42M37Dw2mtIt9gNB2YDy4CTCm1LJV0MzCi81UUR0dJgPTOz6jR5Mmy7ra+/W7tTtGExA0nXAJuQBttdCxwLPBYRJ2cbb+3U1dVFfX193jHMzNouAubOhf79805iVUjSzIioK9XW1vNB+0fE14A3I+K/gM/w8WvnZma2tj76KK317uJuGWhrgW9Y0miZpE8AK4AdsolkZtYBzJ0L220Hd96ZdxKrUW29Bv8nSVsBY4DHSSPor80slZlZrbv8cnjzTdhjj7yTWI1q6yj6iwsP/yDpT0DXiHg7u1hmZjXszTfht7+FkSPB83dYRlos8JK+1EIbEXFb+0cyM6tx11wD778P552XdxKrYa314I9uoS0AF3gzs7WxYgVceSUceijstVfeaayGtVjgI+KkcgUxM+sQNtwQ/vhHLypjmct0ohszMyuhruRty2btqk23yRUmujkeOIO0EMy/AdtnmMvMrPZMnQonnZQG2ZllzBPdmJmVyyWXwF/+ApttlncS6wDWdaKblXiiGzOztnv0UXjwQTjnnHQd3ixjazvRzWXAzMI+T3RjZtZWY8bAVlvBKafkncQ6iNbug/8UMK9hohtJmwHPAM8Dv8w+nplZDZg9G267Dc4/36fnrWxaO0X/G+AjAEkHAZcW9r0NjMs2mplZjdhkEzjjjLSZlUlrp+g7F63DfjwwLiL+QJqy9slso5mZ1YhPfAKuuCLvFNbBtNaD7yyp4Y+AzwF/KWpr8z30ZmYd1sSJ8MADeaewDqi1Ij0ReEDSG6SR9A8CSNqRdJrezMyas2xZOi2///4wdGjeaayDaW2q2p9Kug/YFvhzREShqRNp0psWSRoGXAF0Bq6NiEubtP8SOKTwdBOgZ0RsVWhbRRrQB/BaRBzTtv8kM7MKccMNsGSJF5WxXKixZrfzG0udgReBQ4H5wAxgVEQ828zxZwCDI+LfC8/fi4i1Gm5aV1cX9fX16xfczKw9rFoFO+8M3bvDww+DlHciq0GSZkZEybmP2zrRzboYAsyOiFci4iNgEjCiheNHkS4JmJlVv9tvh5dfTr13F3fLQZYFfjtgXtHz+YV9a5C0PWlmvOJBfF0l1Ut6RNIXsotpZpaBZcvggAPgC/74snxkWeBL/cna3PWAkcCtEbGqaF+/wmmHrwCXSxpQ8ptIowt/CNQvXrx4/RKbmbWXr30tTU3rZWEtJ1kW+Pl8fEGaPsCCZo4dSZPT8xGxoPD1FeB+YHCpF0bEuIioi4i6Hj16rG9mM7P1N306rFzpU/OWqywL/AxgJ0k7SOpCKuJTmh4kaWdga+Dhon1bS9qo8Lg7cABQcnCemVnuevdOxbxhGzo0LSgjpTazHGQ2WU1ErJR0OnAP6Ta58RExS9JFQH1ENBT7UcCk+Phw/l2B30haTfoj5NLmRt+bmeXu9dfXrc0sQ5ndJpcH3yZnZrlo7VR8DX3OWmVp6TY5TzdrZrauVq9Om1kFyvIavJlZ7YmARx6Bc8+F7beHSZPyTmRWknvwZmZtsWIFXHABTJ4Mr70GXbrAsGHQp0/eycxKcoE3MyslAh5/HF58EUaNSqPi//pX2GMP+MlP4JhjYMst805p1iwXeDOzBhHw5JNwyy1pe+UV2HprOPbYVOAfe6z0xDW9ejU/Wr5Xr2wzmzXD1+DNrGOLaBzlfsklsM8+MGYM7LQTXHcdzJ6dijs0PyvdwoWN79N0W7iwPP8dZk24B29mHU8EzJrV2FMfOxY+/3n44hehR4/0tXv3vFOarRcXeDPrON5/P/XOb7kFnnsOOnWCgw9u7KHvumvazGqAC7yZ1bYXXkij3g89FLp2hXHj0jrtZ5wBX/qSr5FbzXKBN7Pa89JLjaffn34a+vWDOXPSNfTZs2GTTfJOaJY5D7Izs9rygx/AwIHwn/8Jm28OV1wBDz3UOJ2si7t1EO7Bm1n1evXVNPHMLbfA9dene9SHD08D5I49Fvr2bf09zGqUC7yZVZbevVu+p/zFF9N19FtugRkz0v4hQ+Cdd9LjAw5Im1kH51P0ZlZZWlt6tVMn+OEP061ul12WJqN59FEXdbMm3IM3s+qy2WYwdy707Jl3ErOK5gJvZtlZuRKWLIFFi2DxYjjkkDTY7fbb4Z570r6GtuXLU+FuCxd3s1a5wJvVstauZ6/rNKqLFsGzz368QC9alKZ63XJLuPzytCDL0qWN08ACvP02bLFFOqV+221p1riePWHPPdNXr61u1m4Uxf/42vvNpWHAFUBn4NqIuLRJ+zeAMcA/C7vGRsS1hbavA/9Z2P+TiJjQ2verq6uL+vr6dkpvVgMabg1rzqpV8NZbjUV6t92gWzd44ok0D3vTAn7vvakYX301nHbax79Pt26pcA8YAHfembaePRuLeI8esP/+aZnV9cmc4WeWWbWRNDMi6kq1ZdaDl9QZuAo4FJgPzJA0JSKebXLozRFxepPXdgMuBOqAAGYWXvtmVnnNasr776dV0VrTpUsq8g3uvDPdZjZ/Ptx0U2NxHjgQDjwQNt00HXf00bDLLo3t22wDGxR9nBx5ZNrMLDdZnqIfAsyOiFcAJE0CRgBNC3wphwPTImJp4bXTgGHAxIyymlWmCHj33cZedM+eqYe8dClcfPGaPewLL4TRo+Hll1NBbs33v5/es6GHPXhw2n/00el7NKdv3+zuMffSq2btIssCvx0wr+j5fGC/Esd9WdJBwIvAORExr5nXbpdVULM2ae/r2Y899vHivHgx1NXByJFpwNnAgWn/Rx81vuaCC+BnP0uPr7uusQfdty/suy988pOpbcAAuPtuGDas5Qw//enaZS4HL69q1i6yLPClLqQ1vXj2R2BiRHwo6dvABOCzbXxt+ibSaGA0QL9+/dY9rVlrWrs/u74+3aO9zz5p30UXpXu0i4v45z4H48en9kMPbZycBdIUqt/6VirwXbvC4Yen69rF17F32SUd263bx1/b1KabptebWYeVZYGfDxSfw+sDLCg+ICKWFD39LfDfRa89uMlr7y/1TSJiHDAO0iC79Qlstl4+9Sn4P/8Hpk9Pz++4A954o7FADxoE+xWdxLr99jRXeo8eaWu4vg1poNm115Y3v5nVlCwL/AxgJ0k7kEbJjwS+UnyApG0j4l+Fp8cAzxUe3wP8TNLWheeHARdkmNVs/U2ZklYta/D44y0f/9nPZpsHfD3brAPLrMBHxEpJp5OKdWdgfETMknQRUB8RU4AzJR0DrASWAt8ovHappItJfyQAXNQw4M6sYh19dN4J1uTr2WYdVqb3wZeb74O3zMyaBbvv3vIxNfRvycyqQ0v3wXuxGbPWzJ/f+mh0M7MK4wJv1pqvfz1NsbrNNs0f4+vZZlZhPBe9WWuuuQYWLIChQ/NOYmbWZu7Bm5WyejXcfHO6rr7TTi7uZlZ1XODNmoqA7343TThz9915pzEzWycu8GZN/eIXabnTs87y4Dozq1ou8GbFbroJvvc9OO64VOhbW7rUzKxCucCbNVi8GL75zXS9fcKENK+8mVmV8ih6swY9eqT10PfeOy32YmZWxdxFMZs7Ny0MA3DwwbDVVrnGMTNrD+7BW8e2ZElaVnXxYjjkENhyy7wTmZm1Cxd467iWL4djjoE5c2DaNBd3M6spLvDWMa1aBV/5Cjz8MEyenNZxNzOrIS7w1jHdcUfafvUr+PKX805jZtbuXOCtY/ryl2H6dPfczaxmeRS9dSwTJ8JTT6XHLu5mVsNc4K3jmDoVTjwRfvKTvJOYmWXOBd46hhkz4NhjYc89Yfz4vNOYmWUu0wIvaZikFyTNlnR+ifZzJT0r6WlJ90navqhtlaQnC9uULHNajZs9G448Enr1grvugs03zzuRmVnmMhtkJ6kzcBVwKDAfmCFpSkQ8W3TYE0BdRCyTdCpwGXB8oW15ROydVT7rQC67LK3vfvfd0Lt33mnMzMoiyx78EGB2RLwSER8Bk4ARxQdExF8jYlnh6SNAnwzzWEc1diz87W8wcGDeSczMyibLAr8dMK/o+fzCvuacDEwtet5VUr2kRyR9obkXSRpdOK5+8eLF65fYaseKFfD976cpaLt0gV12yTuRmVlZZVngSy2kHSUPlL4K1AFjinb3i4g64CvA5ZIGlHptRIyLiLqIqOvRo8f6ZrZaEAHf+lY6NT9tWt5pzMxykWWBnw/0LXreB1jQ9CBJnwd+ABwTER827I+IBYWvrwD3A4MzzGq15Ec/guuvhwsvTNPRmpl1QFkW+BnATpJ2kNQFGAl8bDS8pMHAb0jFfVHR/q0lbVR43B04ACgenGdW2jXXpPvcTz45FXgzsw4qs1H0EbFS0unAPUBnYHxEzJJ0EVAfEVNIp+Q3AyZLAngtIo4BdgV+I2k16Y+QS5uMvjdb04cfwuWXw/DhqdCr1FUiM7OOQRElL4tXpbq6uqivr887huVp0SLYdNO0mZnVOEkzC+PV1uCZ7Kz6Pf88nHlmGjnfs6eLu5kZLvBW7RYsgMMPh1tugYUL805jZlYxvFysVa933knX25cuhQcegL59W3+NmVkH4QJv1emjj+BLX4JZs+DOO2GfffJOZGZWUXyK3qrTs8/CY4/BddfBYYflncbMrOK4B2/Vae+94eWXwbMXmpmV5B68VZcrr0z3uoOLu5lZC1zgrXrccgucfTZMn56WfzUzs2a5wFt1uP9+OPFE2H9/+P3voZN/dc3MWuJPSat8zzwDX/gCDBgAU6bAxhvnncjMrOK5wFvle/RR2HxzuPtu6NYt7zRmZlXBBd4q3ymnwHPPQb9+eScxM6saLvBWmT74AI46Cu69Nz3fbLN885iZVRkXeKs8q1bBV7+aZqh7442805iZVSUXeKssEelWuD/8AX7xCxg5Mu9EZmZVyQXeKstll8HYsXDuuXDOOXmnMTOrWi7wVjki0truI0fCmDF5pzEzq2qZFnhJwyS9IGm2pPNLtG8k6eZC+6OS+he1XVDY/4Kkw7PMaRUgAiQYPx5uvNET2ZiZrafMPkUldQauAo4ABgGjJA1qctjJwJsRsSPwS+C/C68dBIwEdgOGAVcX3i97vXunQlNq6927LBHWWi1k7tSp8avXdTczW29ZriY3BJgdEa8ASJoEjACeLTpmBPDjwuNbgbGSVNg/KSI+BF6VNLvwfg9nmDd5/fWW2xYtgp49YdmytBZ5UzvsAN27w7vvptPNTe24I2y9Nbz1Frz00prtAwfCllvC0qVptbSmdt013TK2eDHMmdO2zDNmND7fc0/YaCNYsAD++c81jx88GDbYAObNg4UL12yvq0uFeM6clKGYlNoBXnkFliz5ePsGG6T3b0tmMzNbPxGRyQYcC1xb9PxEYGyTY/4B9Cl6/jLQHRgLfLVo/3XAsa19z3333TfWWzpZ3Px21VXpuCefLN0+YUJqf/DB0u233Zba77qrdPu0aan95ptLtz/ySGq/7rrWs5ba5s5Nr7/44tLtS5em9v/4j9LtK1ak9lNPXbOta9fGn+OJJ67Z3qNH23/OZmbWKqA+mqmJWfbgVerviTYe05bXpjeQRgOjAfqVY6az4cPT1x12gD/9ac32vfZKXwcNKt2+776NX0u17713+nrggaXbBw5MXw89tLH9qKNazlz8Pg1LrB5/fGNvuljDhDLf+AYcdNCa7Q3Xxr/zHTjyyNJtkEbBH3/8x9u7dGk5p5mZtRulPwAyeGPpM8CPI+LwwvMLACLikqJj7ikc87CkDYCFQA/g/OJji49r6XvW1dVFfX39+gZvuT2jn9d6cWYzsw5J0syIqCvVluVQ5RnATpJ2kNSFNGhuSpNjpgBfLzw+FvhL4ZTDFGBkYZT9DsBOwGMZZjUzM6spmZ2ij4iVkk4H7gE6A+MjYpaki0jXDKaQrq3/rjCIbinpjwAKx91CGpC3EjgtIlZlldXMzKzWZHaKPg/tcoq+d+/mR85jWfAAAAkISURBVHH36lV6ZHnenNnMrENq6RR9loPsqlM1FhZnNjOzJjxdmJmZWQ1ygTczM6tBLvBmZmY1qKYG2UlaDMxtx7fsDrzRju9XDs5cHs5cHs5cPtWY25lh+4joUaqhpgp8e5NU39zoxErlzOXhzOXhzOVTjbmduWU+RW9mZlaDXODNzMxqkAt8y8blHWAdOHN5OHN5OHP5VGNuZ26Br8GbmZnVIPfgzczMapALvJmZWQ1ygTczM6tBLvBmZmY1yKvJNUPSDsBg4NmIeD7vPKVI6gcsiogPJAn4BrAP8Czw24hYmWe+UiQdA/w5Ij7IO8vakHQQ8HpEvCDpQODTwHMRcWfO0ZolaTNgGNAXWAm8RPrZr841WAsk7QKMALYDAlgATImI53INtg4knRQR1+edo5TCz3k74NGIeK9o/7CIuDu/ZM2TNASIiJghaRDpd/v5iLgr52htJunGiPha2b6fR9Enku6IiC8UHo8ALgfuB/YHLomIG/JLV5qkfwBDImKZpP8GBgB3AJ8FiIh/zzNfKZKWA+8DU4GJwD0RsSrfVC2TdDkwhPQH8T3A50j5hwJPRMR5OcYrSdJxwHnAU8AhwEOkM3Z7ACdExDM5xitJ0veBUcAkYH5hdx9gJDApIi7NK9u6kPRaRPTLO0dTks4ETgOeA/YGzoqI/1doezwi9skzXymSLgSOIP0bnAbsR/p8/jzpM+Sn+aUrTdKUprtI/xb/AhARx2SewQU+kfRERAwuPH6I9CH4qqTuwH0RsVe+Cdck6dmIGFR4PBP4VEPvTNJTFZr5CdIfIMeSPrh3B24HJkbEA3lma46kWaScGwP/BLYr/FG1IanA755rwBIkPQ18upCzO/D7iDhc0p7ANRGxf84R1yDpRWC3iFjRZH8XYFZE7JRPsuYVfs4lm4CBEbFROfO0haRngM9ExHuS+gO3Ar+LiCuKPwcrSSHz3sBGwEKgT0S8I2lj0lmIPXMNWIKkx0lnU68lnY0SqVMzEqAcn3c+Rd+o+C+dDSLiVYCIeENSpZ7SnCfpsxHxF2AO6VTsXEnb5BurRRERbwK/BX4rqTdwHHCppD4R0TffeCVFRETR70HD78pqKncci4DlhcfvAz0BIuJpSVvklqplq4FPsOaCUdsW2ipRL+Bw4M0m+0U6a1KJOjeclo+IOZIOBm6VtD0pdyVaWTjTt0zSyxHxDkBELK/gz+c64CzgB8B5EfGkpOXl7Mi4wDfaS9I7pF/wjST1joiFhd5D55yzNecU4EZJPwbeBp4s9JC3Bs7NM1gLPvYBEhELgSuBKwsfMJXoTkkPAl1Jf43fIukR0in66bkma95dwN2SHiCd2pwMIKkblfshfjZwn6SXgHmFff2AHYHTc0vVsj8Bm0XEk00bJN1f/jhtslDS3g2ZCz35o4DxpEs4legjSZtExDJg34adkrakQv/4K5xN/aWkyYWvr1PmmutT9K2QtBWwa0Q8nHeW5kjaFRhI+uWZD8yo1IFUkg6OiPvzzrG2JH2G1JN/RNIA4IvAa8CtFfyzHg4MAp6KiGmFfZ2ADSPiw1zDNaOQbwhpAJho/H2u6HEa1URSH1KPeGGJtgMi4u85xGqRpI1K/c4WLj9tW4ljSpqSdCRwQET837J9Txf4j5PUi6IRvBHxes6RWuXM5eHM+ZG0WfFo72rgzOXhzC18Hxf4RNJg4NfAlqSBVJBG8L4FnBoRT+SVrTmS9gauoXTm70TE43lla44zl0c1Zm5JpY5Ib4kzl4czN8/X4BtdD3wrIh4t3inp08ANQMWNSCflai7z9Thze7kBZ86cpObGjQjYrJxZ2sqZy8OZ102ljgDOw6ZNPwwBIuIRYNMc8rSFM5eHM5fHz0gDRDdvsm1G5X5WOXN5OPM6cA++0VRJdwI30jiCty/wNaAiZ3bCmcvFmcvjceCOiJjZtEHSKTnkaQtnLg9nXge+Bl9E0hE0TpPZMIJ3SiVPhejM5eHM2ZO0M7A0IhaXaOtViQMEnbk8nHkdM7jAm5mZ1Z5KvXZRdpK2lHSppOckLSlszxX2bZV3vlKcuTycuTyKMj/vzNlx5vKohMwu8I1uIU03eUhEbBMR25AWBniLwixgFciZy8OZy6Mh88FNMr+JM7cnZy6P3DP7FH2BpBciYue1bcuTM5eHM5eHM5eHM5dHJWR2D77RXEn/oTTzF5AGQigtYTmvhdflyZnLw5nLw5nLw5nLI/fMLvCNjge2AR6Q9KakpaT1hruRVjurRM5cHs5cHs5cHs5cHrln9in6IpJ2IU3n+UjxPMGShkVERd477Mzl4czl4czl4czlkXvmiPCW/sg5E3gBuIO0tvqIorbH887nzM7szPlndGZnrqbMuf8QKmUDniGt6wzQH6gHzio8fyLvfM7szM6cf0ZnduZqyuypaht1jsIplIiYI+lg4FZJ25NmAatEzlwezlwezlwezlweuWf2ILtGC5WW2ASg8D/mKKA7sEduqVrmzOXhzOXhzOXhzOWRe2YPsiuQ1AdYGRELS7QdEBF/zyFWi5y5PJy5PJy5PJy5PCohswu8mZlZDfIpejMzsxrkAm9mZlaDXODNrCQlf1NaV75h33GSKnJSETP7OF+DN7NmSdqdtPLVYKAz8CQwLCJeXo/33CAiVrZTRDNrhgu8mbVI0mXA+8CmwLsRcbGkrwOnAV2Ah4DTI2K1pHHAPsDGwM0RcVHhPeYDvwGGAZdHRKUu8WlWMzzRjZm15r+Ax4GPgLpCr/6LwP4RsbJQ1EcCNwHnR8RSSRsAf5V0a0Q8W3if9yPigDz+A8w6Ihd4M2tRRLwv6WbgvYj4UNLngU8B9ZIg9dYblr8cJelk0mfLJ4BBQEOBv7m8yc06Nhd4M2uL1YUN0jSb4yPih8UHSNoJOAsYEhFvSfpfoGvRIe+XJamZAR5Fb2Zr717gOEndASRtI6kfsAXwLvCOpG2Bw3PMaNbhuQdvZmslIp6R9F/AvZI6ASuAb5NWy3oW+AfwClBx04eadSQeRW9mZlaDfIrezMysBrnAm5mZ1SAXeDMzsxrkAm9mZlaDXODNzMxqkAu8mZlZDXKBNzMzq0Eu8GZmZjXo/wOjC+n0AtxXCwAAAABJRU5ErkJggg==\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "plt.plot(Salary[8], c='Red', ls='--', marker = 's', ms=7)\n", + "plt.xticks(list(range(0,10)),Seasons, rotation = 'vertical')\n", + "plt.xlabel('Year')\n", + "plt.ylabel('Salary')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.7.6-final" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file From fdffd7e4ece5b1bb8e6f7b66f31942659458eb82 Mon Sep 17 00:00:00 2001 From: Rohan Kumara <31560310+rohankumara@users.noreply.github.com> Date: Fri, 25 Sep 2020 16:06:00 +0530 Subject: [PATCH 2/7] C1 --- XML Prasing.ipynb | 107 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 XML Prasing.ipynb diff --git a/XML Prasing.ipynb b/XML Prasing.ipynb new file mode 100644 index 0000000..2dcdf2f --- /dev/null +++ b/XML Prasing.ipynb @@ -0,0 +1,107 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Name: Chuck\n", + "Attr: yes\n" + ] + } + ], + "source": [ + "import xml.etree.ElementTree as ET\n", + "data = '''\n", + "\n", + "\n", + " Chuck\n", + " \n", + " 0779395415\n", + " \n", + " \n", + "\n", + "'''\n", + "\n", + "tree = ET.fromstring(data)\n", + "print('Name:', tree.find('name').text)\n", + "print('Attr:', tree.find('email').get('hide'))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "ename": "ParseError", + "evalue": "mismatched tag: line 13, column 2 ()", + "output_type": "error", + "traceback": [ + "Traceback \u001b[1;36m(most recent call last)\u001b[0m:\n", + " File \u001b[0;32m\"C:\\Users\\hmroh\\anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py\"\u001b[0m, line \u001b[0;32m3343\u001b[0m, in \u001b[0;35mrun_code\u001b[0m\n exec(code_obj, self.user_global_ns, self.user_ns)\n", + " File \u001b[0;32m\"\"\u001b[0m, line \u001b[0;32m16\u001b[0m, in \u001b[0;35m\u001b[0m\n stuff = ET.fromstring(input)\n", + "\u001b[1;36m File \u001b[1;32m\"C:\\Users\\hmroh\\anaconda3\\lib\\xml\\etree\\ElementTree.py\"\u001b[1;36m, line \u001b[1;32m1320\u001b[1;36m, in \u001b[1;35mXML\u001b[1;36m\u001b[0m\n\u001b[1;33m parser.feed(text)\u001b[0m\n", + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32munknown\u001b[0m\n\u001b[1;31mParseError\u001b[0m\u001b[1;31m:\u001b[0m mismatched tag: line 13, column 2\n" + ] + } + ], + "source": [ + "input = '''\n", + "\n", + " \n", + " \n", + " 001\n", + " Chuck\n", + " \n", + " \n", + " 009\n", + " Brent\n", + " \n", + " \n", + "\n", + "'''\n", + "\n", + "stuff = ET.fromstring(input)\n", + "lst = stuff.findall('users/user')\n", + "print('User count:', len(lst))\n", + "\n", + "for item in lst:\n", + " print('Name', item.find('name').text)\n", + " print('Id', item.find('id').text)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From bd0375131d83c5d93f8352c9f1d5662f0053208e Mon Sep 17 00:00:00 2001 From: Rohan Kumara <31560310+rohankumara@users.noreply.github.com> Date: Fri, 25 Sep 2020 16:40:38 +0530 Subject: [PATCH 3/7] Create xmltest.py --- xmltest.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 xmltest.py diff --git a/xmltest.py b/xmltest.py new file mode 100644 index 0000000..ac03be1 --- /dev/null +++ b/xmltest.py @@ -0,0 +1,21 @@ +import urllib.request as ur +import xml.etree.ElementTree as et + +url = input('Enter location: ') +# 'http://python-data.dr-chuck.net/comments_42.xml' + +total_number = 0 +sum = 0 + +print('Retrieving', url) +xml = ur.urlopen(url).read() +print('Retrieved', len(xml), 'characters') + +tree = et.fromstring(xml) +counts = tree.findall('.//count') +for count in counts: + sum += int(count.text) + total_number += 1 + +print('Count:', total_number) +print('Sum:', sum) From 8388659769a41a29de502417558644c4690a1cc0 Mon Sep 17 00:00:00 2001 From: Rohan Kumara <31560310+rohankumara@users.noreply.github.com> Date: Fri, 25 Sep 2020 17:32:45 +0530 Subject: [PATCH 4/7] c1 --- jeson.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 jeson.py diff --git a/jeson.py b/jeson.py new file mode 100644 index 0000000..1818928 --- /dev/null +++ b/jeson.py @@ -0,0 +1,18 @@ +import json + +data = """ + +"name" : "Chuck", +"phone" : { + "type" : "intl", + "number" : "0779395415" +}, +"email" : { + "hide" : "yes" +} + +""" + +info = json.loads(data) +print('Name:', info["name"]) +print('Hide', info["email"]["hide"]) \ No newline at end of file From b9e383310112e6bcd12470bce4bccb6db16e4a33 Mon Sep 17 00:00:00 2001 From: Rohan Kumara <31560310+rohankumara@users.noreply.github.com> Date: Fri, 25 Sep 2020 17:33:27 +0530 Subject: [PATCH 5/7] c2 --- jeson.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/jeson.py b/jeson.py index 1818928..21a6829 100644 --- a/jeson.py +++ b/jeson.py @@ -1,6 +1,6 @@ import json -data = """ +data = ''' "name" : "Chuck", "phone" : { @@ -10,8 +10,7 @@ "email" : { "hide" : "yes" } - -""" +''' info = json.loads(data) print('Name:', info["name"]) From d4e2a85760bb6bbee337e3d99d3cb61f6fc184b5 Mon Sep 17 00:00:00 2001 From: Rohan Kumara <31560310+rohankumara@users.noreply.github.com> Date: Fri, 25 Sep 2020 17:34:33 +0530 Subject: [PATCH 6/7] c3 --- jeson.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jeson.py b/jeson.py index 21a6829..a3696c4 100644 --- a/jeson.py +++ b/jeson.py @@ -1,14 +1,14 @@ import json data = ''' - +{ "name" : "Chuck", "phone" : { "type" : "intl", "number" : "0779395415" }, "email" : { - "hide" : "yes" + "hide" : "yes"} } ''' From 219d8103e46610221607f9fa361a54cd9adbd5cd Mon Sep 17 00:00:00 2001 From: Rohan Kumara <31560310+rohankumara@users.noreply.github.com> Date: Fri, 16 Oct 2020 17:39:56 +0530 Subject: [PATCH 7/7] Updateed jeson.py --- jeson.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/jeson.py b/jeson.py index a3696c4..3f09d04 100644 --- a/jeson.py +++ b/jeson.py @@ -2,15 +2,15 @@ data = ''' { -"name" : "Chuck", -"phone" : { - "type" : "intl", - "number" : "0779395415" -}, -"email" : { - "hide" : "yes"} -} -''' + "name" : "Chuck", + "phone" : { + "type" : "intl", + "number" : "0779395415" + }, + "email" : { + "hide" : "yes" + } +}''' info = json.loads(data) print('Name:', info["name"])