diff --git a/Assignment 1/Assignment1_Rayeshwar/Rayeshwar_Assignment1_Matplotlib.ipynb b/Assignment 1/Assignment1_Rayeshwar/Rayeshwar_Assignment1_Matplotlib.ipynb new file mode 100644 index 00000000..34fb7570 --- /dev/null +++ b/Assignment 1/Assignment1_Rayeshwar/Rayeshwar_Assignment1_Matplotlib.ipynb @@ -0,0 +1,440 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_sfWZU_eST2O" + }, + "source": [ + "**NOTE: ALL THE COMMANDS FOR PLOTTING A FIGURE SHOULD ALL GO IN THE SAME CELL. SEPARATING THEM OUT INTO MULTIPLE CELLS MAY CAUSE NOTHING TO SHOW UP.**\n", + "\n", + "# Exercises\n", + "\n", + "Follow the instructions to recreate the plots using this data:\n", + "\n", + "## Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "l0eZ10dLST2X" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "x = np.arange(0,100)\n", + "y = x*2\n", + "z = x**2" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "veY4-lsGST2c" + }, + "source": [ + "**Import matplotlib.pyplot as plt**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "tAOmEcNKST2e" + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5j_39gsVST2f" + }, + "source": [ + "## Exercise 1\n", + "\n", + "**Follow along with these steps**\n", + "* Create a figure object called fig using plt.figure()\n", + "* Use add_axes to add an axis to the figure canvas at [0,0,1,1]. Call this new axis ax.\n", + "* Plot (x,y) on that axes and set the labels and titles to match the plot below:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "03Ts4r5SST2g", + "outputId": "45b0291a-4b7a-4f4c-c1ee-9998e43f6a98", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 582 + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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gsMy59Se1q5dawwcONBwuVxG//79jd/+9rcB+30+n/Hoo48a6enphsvlMkaPHm1UV1ebNFq0xOPxGA888IDRu3dv49xzzzX69u1r/PznPze8Xq//GM6p9W3atKnZz9EZM2YYhtG6c3j06FFj2rRpxnnnnWckJSUZd955p3H8+PGwjDfGML617A0AAAAAPzrLAAAAQAiEZQAAACAEwjIAAAAQAmEZAAAACIGwDAAAAIRAWAYAAABCICwDAAAAIRCWAQAAgBAIywAAAEAIhGUAAAAgBMIyAAAAEAJhGQCizOeff66MjAz96le/8m/bunWr4uPjtWHDBhNHBgDWE2MYhmH2IAAAkfWf//mfys/P19atW3XJJZdoyJAhuummmzR//nyzhwYAlkJYBoAoVVBQoDfeeEPDhw/Xrl27VFlZKZfLZfawAMBSCMsAEKW++uorDRw4UAcOHNCOHTuUk5Nj9pAAwHLoLANAlNq7d68OHjwon8+nffv2mT0cALAkriwDQBRqbGzUFVdcoSFDhuiSSy7RCy+8oF27diktLc3soQGApRCWASAKPfjgg/rzn/+sd999V+edd56uvvpqud1urVu3zuyhAYClUMMAgChTVlamF154QX/84x+VlJSk2NhY/fGPf9Sbb76pxYsXmz08ALAUriwDAAAAIXBlGQAAAAiBsAwAAACEQFgGAAAAQiAsAwAAACEQlgEAAIAQCMsAAABACIRlAAAAIATCMgAAABACYRkAAAAIgbAMAAAAhEBYBgAAAEL4PyE0/9p/e6n4AAAAAElFTkSuQmCC\n" + }, + "metadata": {} + } + ], + "source": [ + "\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_axes([0, 0, 1, 1])\n", + "ax.plot(x, y)\n", + "ax.set_xlabel('x')\n", + "ax.set_ylabel('y')\n", + "ax.set_title('title')\n", + "\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "I8mFrIGwST2i" + }, + "source": [ + "## Exercise 2\n", + "**Create a figure object and put two axes on it, ax1 and ax2. Located at [0,0,1,1] and [0.2,0.5,.2,.2] respectively.**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "D4nUfU26ST2k", + "outputId": "ebcfcdb2-6e2b-4232-f613-ae74b819875b", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 546 + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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CcIXAIAkCF8AAJIgfAEASILwBQAgCcIXAIAkCF8AAJIgfAEASMKQwnf58uUxceLEKCkpierq6ti6dev7rn/kkUfivPPOi5KSkrjoootiw4YNQxoWAACGKu/wXbt2bTQ0NERjY2Ns3749qqqqoq6uLvbs2TPo+i1btsSVV14Z11xzTezYsSNmz54ds2fPjmefffaIhwcAgMNVkGVZls8J1dXVcckll8R9990XERF9fX1RWVkZ119/fSxatOig9fX19dHd3R2PP/54/7FLL700Jk2aFCtWrDis1+zq6oqysrLo7OyM0tLSfMYFAOA4NBz9d0I+i3t6emLbtm2xePHi/mOFhYVRW1sbLS0tg57T0tISDQ0NA47V1dXFunXrDvk6Bw4ciAMHDvR/3dnZGRHv/AsAAODD793uy/Me7fvKK3z37dsXvb29UV5ePuB4eXl5PP/884Oe097ePuj69vb2Q75OU1NT3HHHHQcdr6yszGdcAACOc3/605+irKzsqDxXXuE7UhYvXjzgLvH+/fvjjDPOiLa2tqN24Rw/urq6orKyMnbv3u2tLgmy/2mz/2mz/2nr7OyM008/PU499dSj9px5he/YsWOjqKgoOjo6Bhzv6OiIioqKQc+pqKjIa31ERC6Xi1wud9DxsrIy/+EnrLS01P4nzP6nzf6nzf6nrbDw6H36bl7PVFxcHFOmTInm5ub+Y319fdHc3Bw1NTWDnlNTUzNgfUTEpk2bDrkeAACGQ95vdWhoaIi5c+fG1KlTY9q0abFs2bLo7u6OefPmRUTEnDlzYsKECdHU1BQRETfccEPMmDEjli5dGjNnzow1a9bE008/HQ888MDRvRIAAHgfeYdvfX197N27N5YsWRLt7e0xadKk2LhxY/83sLW1tQ24JT19+vR46KGH4rbbbotbbrklPvnJT8a6deviwgsvPOzXzOVy0djYOOjbH/jws/9ps/9ps/9ps/9pG479z/tzfAEA4Hh09N4tDAAAxzDhCwBAEoQvAABJEL4AACThmAnf5cuXx8SJE6OkpCSqq6tj69at77v+kUceifPOOy9KSkrioosuig0bNozQpAyHfPZ/5cqVcfnll8eYMWNizJgxUVtb+4H/vXBsy/fX/7vWrFkTBQUFMXv27OEdkGGV7/7v378/FixYEOPGjYtcLhef+tSn/D/gOJbv/i9btizOPffcOOmkk6KysjIWLlwYf/nLX0ZoWo6WJ598MmbNmhXjx4+PgoKCWLdu3Qees3nz5rj44osjl8vFOeecE6tXr87/hbNjwJo1a7Li4uJs1apV2W9+85vs2muvzT760Y9mHR0dg67/9a9/nRUVFWXf/va3s9/+9rfZbbfdlp144onZM888M8KTczTku/9XXXVVtnz58mzHjh3Zc889l/3DP/xDVlZWlv3hD38Y4ck5GvLd/3ft2rUrmzBhQnb55ZdnX/rSl0ZmWI66fPf/wIED2dSpU7MvfOEL2VNPPZXt2rUr27x5c9ba2jrCk3M05Lv/P/7xj7NcLpf9+Mc/znbt2pU98cQT2bhx47KFCxeO8OQcqQ0bNmS33npr9uijj2YRkT322GPvu37nzp3ZySefnDU0NGS//e1vs+9+97tZUVFRtnHjxrxe95gI32nTpmULFizo/7q3tzcbP3581tTUNOj6L3/5y9nMmTMHHKuurs7+6Z/+aVjnZHjku//v9fbbb2ennHJK9sMf/nC4RmQYDWX/33777Wz69OnZgw8+mM2dO1f4Hsfy3f/vfe972VlnnZX19PSM1IgMo3z3f8GCBdnf/M3fDDjW0NCQXXbZZcM6J8PrcML3pptuyj796U8POFZfX5/V1dXl9Vqj/laHnp6e2LZtW9TW1vYfKywsjNra2mhpaRn0nJaWlgHrIyLq6uoOuZ5j11D2/73eeOONeOutt+LUU08drjEZJkPd/zvvvDNOO+20uOaaa0ZiTIbJUPb/Zz/7WdTU1MSCBQuivLw8Lrzwwrj77rujt7d3pMbmKBnK/k+fPj22bdvW/3aInTt3xoYNG+ILX/jCiMzM6Dla7Zf3T2472vbt2xe9vb39P/ntXeXl5fH8888Pek57e/ug69vb24dtTobHUPb/vW6++eYYP378Qb8gOPYNZf+feuqp+MEPfhCtra0jMCHDaSj7v3PnzvjlL38ZX/3qV2PDhg3x4osvxje+8Y146623orGxcSTG5igZyv5fddVVsW/fvvjsZz8bWZbF22+/Hdddd13ccsstIzEyo+hQ7dfV1RVvvvlmnHTSSYf1PKN+xxeOxD333BNr1qyJxx57LEpKSkZ7HIbZa6+9FldffXWsXLkyxo4dO9rjMAr6+vritNNOiwceeCCmTJkS9fX1ceutt8aKFStGezRGwObNm+Puu++O+++/P7Zv3x6PPvporF+/Pu66667RHo3jxKjf8R07dmwUFRVFR0fHgOMdHR1RUVEx6DkVFRV5refYNZT9f9d3vvOduOeee+IXv/hFfOYznxnOMRkm+e7/73//+3jppZdi1qxZ/cf6+voiIuKEE06IF154Ic4+++zhHZqjZii//seNGxcnnnhiFBUV9R87//zzo729PXp6eqK4uHhYZ+boGcr+33777XH11VfH/PnzIyLioosuiu7u7vja174Wt956axQWup/3YXWo9istLT3su70Rx8Ad3+Li4pgyZUo0Nzf3H+vr64vm5uaoqakZ9JyampoB6yMiNm3adMj1HLuGsv8REd/+9rfjrrvuio0bN8bUqVNHYlSGQb77f95558UzzzwTra2t/Y8vfvGLccUVV0Rra2tUVlaO5PgcoaH8+r/sssvixRdf7P8DT0TE7373uxg3bpzoPc4MZf/feOONg+L23T8EvfM9UnxYHbX2y+/77obHmjVrslwul61evTr77W9/m33ta1/LPvrRj2bt7e1ZlmXZ1VdfnS1atKh//a9//evshBNOyL7zne9kzz33XNbY2OjjzI5j+e7/PffckxUXF2c/+clPsldeeaX/8dprr43WJXAE8t3/9/KpDse3fPe/ra0tO+WUU7J//ud/zl544YXs8ccfz0477bTsW9/61mhdAkcg3/1vbGzMTjnllOx///d/s507d2Y///nPs7PPPjv78pe/PFqXwBC99tpr2Y4dO7IdO3ZkEZHde++92Y4dO7KXX345y7IsW7RoUXb11Vf3r3/348z+9V//NXvuueey5cuXH78fZ5ZlWfbd7343O/3007Pi4uJs2rRp2f/93//1/7MZM2Zkc+fOHbD+4Ycfzj71qU9lxcXF2ac//els/fr1IzwxR1M++3/GGWdkEXHQo7GxceQH56jI99f//0/4Hv/y3f8tW7Zk1dXVWS6Xy84666zs3/7t37K33357hKfmaMln/996663sm9/8Znb22WdnJSUlWWVlZfaNb3wj+/Of/zzyg3NEfvWrXw36//J393vu3LnZjBkzDjpn0qRJWXFxcXbWWWdl//3f/5336xZkmb8bAADgw2/U3+MLAAAjQfgCAJAE4QsAQBKELwAASRC+AAAkQfgCAJAE4QsAQBKELwAASRC+AAAkQfgCAJAE4QsAQBKELwAASfh/7bTpWMlLc9UAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ], + "source": [ + "fig2=plt.figure()\n", + "ax1=fig2.add_axes([0,0,1,1])\n", + "ax2=fig2.add_axes([0.2,0.5,.2,.2])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SK8p_A2NST2l" + }, + "source": [ + "**Now plot (x,y) on both axes. And call your figure object to show it.**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "m_2gVMryST2m", + "outputId": "b4071759-7815-414b-8b9d-20aac856a54c", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 540 + } + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": {}, + "execution_count": 18 + } + ], + "source": [ + "ax1.plot(x,y)\n", + "ax2.plot(x,y)\n", + "fig2" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hYaQZfbFST2n" + }, + "source": [ + "## Exercise 3\n", + "\n", + "**Create the plot below by adding two axes to a figure object at [0,0,1,1] and [0.2,0.5,.4,.4]**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BuiYx0xbST2o", + "outputId": "c7fad514-31c3-41e4-f3a7-b35dadaff884", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 546 + } + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr4AAAIRCAYAAACszb5OAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMmZJREFUeJzt3X9s1dX9x/FXW+gtRlpw/fb2x65WcIoKtNjarjBCWDqbSXD8YexXDO0I4tTOKDebUFEqopQx4NsEq40ow2+iK0qEGNuUYScxSBdioQmOX8GiZcZ7oXPcy4q20Hu+fxjuvrUt9FN6bynn+Ug+f/TsnPt5nx0+8uL0cz+fGGOMEQAAAHCNix3uAgAAAIBoIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQi+AAAAsALBFwAAAFYg+AIAAMAKjoPvxx9/rLlz5yo9PV0xMTHasWPHZcfs3r1bd911l1wul2655RZt2bJlEKUCAAAAg+c4+HZ0dCgrK0vV1dUD6n/ixAnNmTNHs2fPVktLi5566ik9/PDD2rlzp+NiAQAAgMGKMcaYQQ+OidH27ds1b968fvssXbpUdXV1+uyzz8Jt//3f/60zZ86ooaFhsKcGAAAAHBkV6RM0NTWpsLCwR1tRUZGeeuqpfsd0dnaqs7Mz/HMoFNI333yjH/3oR4qJiYlUqQAAALhKGGN09uxZpaenKzZ2aL6WFvHg6/P55Ha7e7S53W4Fg0F9++23GjNmTK8xlZWVWrlyZaRLAwAAwFXu5MmT+vGPfzwknxXx4DsY5eXl8nq94Z8DgYBuvPFGnTx5UomJicNYGQAAAKIhGAzK4/Fo7NixQ/aZEQ++qamp8vv9Pdr8fr8SExP73O2VJJfLJZfL1as9MTGR4AsAAGCRobzNNeLP8S0oKFBjY2OPtl27dqmgoCDSpwYAAADCHAfff//732ppaVFLS4uk7x9X1tLSora2Nknf36ZQUlIS7v/oo4+qtbVVTz/9tI4cOaJXXnlF77zzjpYsWTI0MwAAAAAGwHHw/fTTTzVt2jRNmzZNkuT1ejVt2jStWLFCkvT111+HQ7Ak3Xzzzaqrq9OuXbuUlZWl9evX6/XXX1dRUdEQTQEAAAC4vCt6jm+0BINBJSUlKRAIcI8vAACABSKR/yJ+jy8AAABwNSD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQi+AAAAsALBFwAAAFYg+AIAAMAKBF8AAABYgeALAAAAKxB8AQAAYAWCLwAAAKxA8AUAAIAVCL4AAACwAsEXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8c+fjjjzV37lylp6crJiZGO3bsuOyY3bt366677pLL5dItt9yiLVu2RLxOAACAHyL4wpGOjg5lZWWpurp6QP1PnDihOXPmaPbs2WppadFTTz2lhx9+WDt37oxwpQAAAD2NGu4CMLL88pe/1C9/+csB96+pqdHNN9+s9evXS5Juv/127dmzR//zP/+joqKiSJUJAADQC8EXEdXU1KTCwsIebUVFRXrqqaf6HdPZ2anOzs7wz6FQSN98841+9KMfKSYmJlKlArgKGWN09uxZpaenKzaWX1ICuDIEX0SUz+eT2+3u0eZ2uxUMBvXtt99qzJgxvcZUVlZq5cqV0SoRwAhw8uRJ/fjHPx7uMgCMcARfXHXKy8vl9XrDPwcCAd144406efKkEhMTh7EyANEWDAbl8Xg0duzY4S4FwDWA4IuISk1Nld/v79Hm9/uVmJjY526vJLlcLrlcrl7tiYmJBF/AUtzmBGAocMMUIqqgoECNjY092nbt2qWCgoJhqggAANiK4AtH/v3vf6ulpUUtLS2Svn9cWUtLi9ra2iR9f5tCSUlJuP+jjz6q1tZWPf300zpy5IheeeUVvfPOO1qyZMlwlA8AACxG8IUjn376qaZNm6Zp06ZJkrxer6ZNm6YVK1ZIkr7++utwCJakm2++WXV1ddq1a5eysrK0fv16vf766zzKDAAARF2MMcYMdxGXEwwGlZSUpEAgwD2eFmL9AXtx/QP2isT1z44vAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQi+AAAAsALBFwAAAFYg+AIAAMAKBF8AAABYgeALAAAAKxB8AQAAYAWCLwAAAKxA8AUAAIAVCL4AAACwAsEXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwReOVVdXKzMzUwkJCcrPz9e+ffsu2b+qqkq33XabxowZI4/HoyVLlui7776LUrUAAADfI/jCka1bt8rr9aqiokL79+9XVlaWioqKdOrUqT77v/3221q2bJkqKip0+PBhvfHGG9q6daueeeaZKFcOAABsR/CFIxs2bNDixYu1cOFC3XHHHaqpqdF1112nzZs399l/7969mjFjhubPn6/MzEzdc889evDBBy+7SwwAADDUCL4YsK6uLjU3N6uwsDDcFhsbq8LCQjU1NfU5Zvr06Wpubg4H3dbWVtXX1+vee++NSs0AAAAXjRruAjBytLe3q7u7W263u0e72+3WkSNH+hwzf/58tbe362c/+5mMMbpw4YIeffTRS97q0NnZqc7OzvDPwWBwaCYAAACsxo4vImr37t1avXq1XnnlFe3fv1/vvfee6urqtGrVqn7HVFZWKikpKXx4PJ4oVgwAAK5V7PhiwJKTkxUXFye/39+j3e/3KzU1tc8xzz33nBYsWKCHH35YkjRlyhR1dHTokUce0fLlyxUb2/vfXuXl5fJ6veGfg8Eg4RcAAFwxdnwxYPHx8crJyVFjY2O4LRQKqbGxUQUFBX2OOXfuXK9wGxcXJ0kyxvQ5xuVyKTExsccBAABwpdjxhSNer1elpaXKzc1VXl6eqqqq1NHRoYULF0qSSkpKlJGRocrKSknS3LlztWHDBk2bNk35+fk6fvy4nnvuOc2dOzccgAEAAKKB4AtHiouLdfr0aa1YsUI+n0/Z2dlqaGgIf+Gtra2txw7vs88+q5iYGD377LP66quv9F//9V+aO3euXnrppeGaAgAAsFSM6e/3zZdQXV2tP/7xj/L5fMrKytLGjRuVl5fXb/+qqiq9+uqramtrU3Jysu6//35VVlYqISFhQOcLBoNKSkpSIBDg194WYv0Be3H9A/aKxPXv+B5f3twFAACAkchx8OXNXQAAABiJHAXfaL25q7OzU8FgsMcBAAAAXAlHX26L1pu7KisrtXLlSielAQAAAJcU8ef4DubNXeXl5QoEAuHj5MmTkS4TAAAA1zhHO77RenOXy+WSy+VyUhoAAABwSY52fKP15i4AAABgqDl+gQVv7gIAAMBI5Dj48uYuAAAAjESDenNbtPHmHrux/oC9uP4Be10Vb24DAAAARiKCLwAAAKxA8AUAAIAVCL4AAACwAsEXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPCFY9XV1crMzFRCQoLy8/O1b9++S/Y/c+aMysrKlJaWJpfLpVtvvVX19fVRqhYAAOB7o4a7AIwsW7duldfrVU1NjfLz81VVVaWioiIdPXpUKSkpvfp3dXXpF7/4hVJSUrRt2zZlZGToyy+/1Lhx46JfPAAAsBrBF45s2LBBixcv1sKFCyVJNTU1qqur0+bNm7Vs2bJe/Tdv3qxvvvlGe/fu1ejRoyVJmZmZ0SwZAABAErc6wIGuri41NzersLAw3BYbG6vCwkI1NTX1Oeb9999XQUGBysrK5Ha7NXnyZK1evVrd3d39nqezs1PBYLDHAQAAcKUIvhiw9vZ2dXd3y+1292h3u93y+Xx9jmltbdW2bdvU3d2t+vp6Pffcc1q/fr1efPHFfs9TWVmppKSk8OHxeIZ0HgAAwE4EX0RUKBRSSkqKXnvtNeXk5Ki4uFjLly9XTU1Nv2PKy8sVCATCx8mTJ6NYMQAAuFZxjy8GLDk5WXFxcfL7/T3a/X6/UlNT+xyTlpam0aNHKy4uLtx2++23y+fzqaurS/Hx8b3GuFwuuVyuoS0eAABYjx1fDFh8fLxycnLU2NgYbguFQmpsbFRBQUGfY2bMmKHjx48rFAqF244dO6a0tLQ+Qy8AAECkEHzhiNfr1aZNm/Tmm2/q8OHDeuyxx9TR0RF+ykNJSYnKy8vD/R977DF98803evLJJ3Xs2DHV1dVp9erVKisrG64pAAAAS3GrAxwpLi7W6dOntWLFCvl8PmVnZ6uhoSH8hbe2tjbFxv7n31Mej0c7d+7UkiVLNHXqVGVkZOjJJ5/U0qVLh2sKAADAUjHGGDPcRVxOMBhUUlKSAoGAEhMTh7scRBnrD9iL6x+wVySuf251AAAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQi+AAAAsALBFwAAAFYg+AIAAMAKBF8AAABYgeALAAAAKxB8AQAAYAWCLwAAAKxA8AUAAIAVCL4AAACwAsEXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPjCserqamVmZiohIUH5+fnat2/fgMbV1tYqJiZG8+bNi2yBAAAAfSD4wpGtW7fK6/WqoqJC+/fvV1ZWloqKinTq1KlLjvviiy/0u9/9TjNnzoxSpQAAAD0RfOHIhg0btHjxYi1cuFB33HGHampqdN1112nz5s39junu7tZDDz2klStXasKECVGsFgAA4D8Ivhiwrq4uNTc3q7CwMNwWGxurwsJCNTU19TvuhRdeUEpKihYtWjSg83R2dioYDPY4AAAArhTBFwPW3t6u7u5uud3uHu1ut1s+n6/PMXv27NEbb7yhTZs2Dfg8lZWVSkpKCh8ej+eK6gYAAJAIvoigs2fPasGCBdq0aZOSk5MHPK68vFyBQCB8nDx5MoJVAgAAW4wa7gIwciQnJysuLk5+v79Hu9/vV2pqaq/+n3/+ub744gvNnTs33BYKhSRJo0aN0tGjRzVx4sRe41wul1wu1xBXDwAAbMeOLwYsPj5eOTk5amxsDLeFQiE1NjaqoKCgV/9Jkybp4MGDamlpCR/33XefZs+erZaWFm5hAAAAUcWOLxzxer0qLS1Vbm6u8vLyVFVVpY6ODi1cuFCSVFJSooyMDFVWViohIUGTJ0/uMX7cuHGS1KsdAAAg0gi+cKS4uFinT5/WihUr5PP5lJ2drYaGhvAX3tra2hQbyy8SAADA1SfGGGOGu4jLCQaDSkpKUiAQUGJi4nCXgyhj/QF7cf0D9orE9c/WHAAAAKxA8AUAAIAVCL4AAACwAsEXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQYVfKurq5WZmamEhATl5+dr3759l+x/5swZlZWVKS0tTS6XS7feeqvq6+sHVTAAAAAwGKOcDti6dau8Xq9qamqUn5+vqqoqFRUV6ejRo0pJSenVv6urS7/4xS+UkpKibdu2KSMjQ19++aXGjRs3FPUDAAAAA+I4+G7YsEGLFy/WwoULJUk1NTWqq6vT5s2btWzZsl79N2/erG+++UZ79+7V6NGjJUmZmZlXVjUAAADgkKNbHbq6utTc3KzCwsL/fEBsrAoLC9XU1NTnmPfff18FBQUqKyuT2+3W5MmTtXr1anV3d/d7ns7OTgWDwR4HAAAAcCUcBd/29nZ1d3fL7Xb3aHe73fL5fH2OaW1t1bZt29Td3a36+no999xzWr9+vV588cV+z1NZWamkpKTw4fF4nJQJAAAA9BLxpzqEQiGlpKTotddeU05OjoqLi7V8+XLV1NT0O6a8vFyBQCB8nDx5MtJlAgAA4Brn6B7f5ORkxcXFye/392j3+/1KTU3tc0xaWppGjx6tuLi4cNvtt98un8+nrq4uxcfH9xrjcrnkcrmclAYAAABckqMd3/j4eOXk5KixsTHcFgqF1NjYqIKCgj7HzJgxQ8ePH1coFAq3HTt2TGlpaX2GXgAAACASHN/q4PV6tWnTJr355ps6fPiwHnvsMXV0dISf8lBSUqLy8vJw/8cee0zffPONnnzySR07dkx1dXVavXq1ysrKhm4WAAAAwGU4fpxZcXGxTp8+rRUrVsjn8yk7O1sNDQ3hL7y1tbUpNvY/edrj8Wjnzp1asmSJpk6dqoyMDD355JNaunTp0M0CAAAAuIwYY4wZ7iIuJxgMKikpSYFAQImJicNdjvWqq6v1xz/+UT6fT1lZWdq4caPy8vL67Ltp0yb97//+rz777DNJUk5OjlavXt1v/76w/oC9uP4Be0Xi+o/4Ux1wbbn45r6Kigrt379fWVlZKioq0qlTp/rsv3v3bj344IP66KOP1NTUJI/Ho3vuuUdfffVVlCsHAAC2Y8cXjuTn5+vuu+/Wyy+/LOn7Lzd6PB498cQTfb6574e6u7s1fvx4vfzyyyopKRnQOVl/wF5c/4C92PHFsBrMm/t+6Ny5czp//rxuuOGGfvvw5j4AABAJBF8M2GDe3PdDS5cuVXp6eo/w/EO8uQ8AAEQCwRdRs2bNGtXW1mr79u1KSEjotx9v7gMAAJHg+HFmsNdg3tx30bp167RmzRp9+OGHmjp16iX78uY+AAAQCez4YsAG8+Y+SVq7dq1WrVqlhoYG5ebmRqNUAACAXtjxhSNer1elpaXKzc1VXl6eqqqqer25LyMjQ5WVlZKkP/zhD1qxYoXefvttZWZmhu8Fvv7663X99dcP2zwAAIB9CL5wxOmb+1599VV1dXXp/vvv7/E5FRUVev7556NZOgAAsBzP8cVVj/UH7MX1D9iL5/gCAAAAg0TwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQi+AAAAsALBFwAAAFYg+AIAAMAKBF8AAABYgeALAAAAKxB8AQAAYAWCLwAAAKxA8AUAAIAVCL4AAACwAsEXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwReOVVdXKzMzUwkJCcrPz9e+ffsu2f/dd9/VpEmTlJCQoClTpqi+vj5KlQIAAPwHwReObN26VV6vVxUVFdq/f7+ysrJUVFSkU6dO9dl/7969evDBB7Vo0SIdOHBA8+bN07x58/TZZ59FuXIAAGC7GGOMGe4iLicYDCopKUmBQECJiYnDXY7V8vPzdffdd+vll1+WJIVCIXk8Hj3xxBNatmxZr/7FxcXq6OjQBx98EG776U9/quzsbNXU1AzonKw/YC+uf8Bekbj+Rw3Jp8AKXV1dam5uVnl5ebgtNjZWhYWFampq6nNMU1OTvF5vj7aioiLt2LGj3/N0dnaqs7Mz/HMgEJD0/QUAwC4Xr/sRsEcDYAQg+GLA2tvb1d3dLbfb3aPd7XbryJEjfY7x+Xx99vf5fP2ep7KyUitXruzV7vF4BlE1gGvBP//5TyUlJQ13GQBGOIIvrjrl5eU9donPnDmjm266SW1tbSP+L75gMCiPx6OTJ0+O+F/bMper17U0n0AgoBtvvFE33HDDcJcC4BpA8MWAJScnKy4uTn6/v0e73+9Xampqn2NSU1Md9Zckl8sll8vVqz0pKWnE/yV+UWJiInO5Cl1Lc5GurfnExvJdbABXjv+SYMDi4+OVk5OjxsbGcFsoFFJjY6MKCgr6HFNQUNCjvyTt2rWr3/4AAACRwo4vHPF6vSotLVVubq7y8vJUVVWljo4OLVy4UJJUUlKijIwMVVZWSpKefPJJzZo1S+vXr9ecOXNUW1urTz/9VK+99tpwTgMAAFiI4AtHiouLdfr0aa1YsUI+n0/Z2dlqaGgIf4Gtra2tx68kp0+frrffflvPPvusnnnmGf3kJz/Rjh07NHny5AGf0+VyqaKios/bH0Ya5nJ1upbmIl1b87mW5gJg+PEcXwAAAFx1IpH/uMcXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHxxVaiurlZmZqYSEhKUn5+vffv2XbL/u+++q0mTJikhIUFTpkxRfX19lCq9PCdz2bRpk2bOnKnx48dr/PjxKiwsvOzco8npulxUW1urmJgYzZs3L7IFOuB0LmfOnFFZWZnS0tLkcrl06623XjV/zpzOpaqqSrfddpvGjBkjj8ejJUuW6LvvvotStf37+OOPNXfuXKWnpysmJkY7duy47Jjdu3frrrvuksvl0i233KItW7ZEvE4A1xAzAgQCASPJBAKB4S4FEVBbW2vi4+PN5s2bzd///nezePFiM27cOOP3+/vs/8knn5i4uDizdu1ac+jQIfPss8+a0aNHm4MHD0a58t6czmX+/PmmurraHDhwwBw+fNj8+te/NklJSeYf//hHlCvvzelcLjpx4oTJyMgwM2fONL/61a+iU+xlOJ1LZ2enyc3NNffee6/Zs2ePOXHihNm9e7dpaWmJcuW9OZ3LW2+9ZVwul3nrrbfMiRMnzM6dO01aWppZsmRJlCvvrb6+3ixfvty89957RpLZvn37Jfu3traa6667zni9XnPo0CGzceNGExcXZxoaGqJTMICoikT+I/hi2OXl5ZmysrLwz93d3SY9Pd1UVlb22f+BBx4wc+bM6dGWn59vfvOb30S0zoFwOpcfunDhghk7dqx58803I1XigA1mLhcuXDDTp083r7/+uiktLb1qgq/Tubz66qtmwoQJpqurK1olDpjTuZSVlZmf//znPdq8Xq+ZMWNGROt0aiDB9+mnnzZ33nlnj7bi4mJTVFQUwcoADJdI5D9udcCw6urqUnNzswoLC8NtsbGxKiwsVFNTU59jmpqaevSXpKKion77R8tg5vJD586d0/nz53XDDTdEqswBGexcXnjhBaWkpGjRokXRKHNABjOX999/XwUFBSorK5Pb7dbkyZO1evVqdXd3R6vsPg1mLtOnT1dzc3P4dojW1lbV19fr3nvvjUrNQ+lqvfYBjBy8uQ3Dqr29Xd3d3eE3v13kdrt15MiRPsf4fL4++/t8vojVORCDmcsPLV26VOnp6b3+co+2wcxlz549euONN9TS0hKFCgduMHNpbW3VX//6Vz300EOqr6/X8ePH9fjjj+v8+fOqqKiIRtl9Gsxc5s+fr/b2dv3sZz+TMUYXLlzQo48+qmeeeSYaJQ+p/q79YDCob7/9VmPGjBmmygCMFOz4AleJNWvWqLa2Vtu3b1dCQsJwl+PI2bNntWDBAm3atEnJycnDXc4VC4VCSklJ0WuvvaacnBwVFxdr+fLlqqmpGe7SHNu9e7dWr16tV155Rfv379d7772nuro6rVq1arhLA4CoY8cXwyo5OVlxcXHy+/092v1+v1JTU/sck5qa6qh/tAxmLhetW7dOa9as0YcffqipU6dGsswBcTqXzz//XF988YXmzp0bbguFQpKkUaNG6ejRo5o4cWJki+7HYNYlLS1No0ePVlxcXLjt9ttvl8/nU1dXl+Lj4yNac38GM5fnnntOCxYs0MMPPyxJmjJlijo6OvTII49o+fLlio0dOfsf/V37iYmJ7PYCGJCR8188XJPi4+OVk5OjxsbGcFsoFFJjY6MKCgr6HFNQUNCjvyTt2rWr3/7RMpi5SNLatWu1atUqNTQ0KDc3NxqlXpbTuUyaNEkHDx5US0tL+Ljvvvs0e/ZstbS0yOPxRLP8HgazLjNmzNDx48fD4V2Sjh07prS0tGELvdLg5nLu3Lle4fZioDfGRK7YCLhar30AI8iQfU0ugniqw7WttrbWuFwus2XLFnPo0CHzyCOPmHHjxhmfz2eMMWbBggVm2bJl4f6ffPKJGTVqlFm3bp05fPiwqaiouKoeZ+ZkLmvWrDHx8fFm27Zt5uuvvw4fZ8+eHa4phDmdyw9dTU91cDqXtrY2M3bsWPPb3/7WHD161HzwwQcmJSXFvPjii8M1hTCnc6moqDBjx441f/7zn01ra6v5y1/+YiZOnGgeeOCB4ZpC2NmzZ82BAwfMgQMHjCSzYcMGc+DAAfPll18aY4xZtmyZWbBgQbj/xceZ/f73vzeHDx821dXVPM4MuIbxODOC7zVr48aN5sYbbzTx8fEmLy/P/O1vfwv/b7NmzTKlpaU9+r/zzjvm1ltvNfHx8ebOO+80dXV1Ua64f07mctNNNxlJvY6KioroF94Hp+vy/11NwdcY53PZu3evyc/PNy6Xy0yYMMG89NJL5sKFC1Guum9O5nL+/Hnz/PPPm4kTJ5qEhATj8XjM448/bv71r39Fv/Af+Oijj/r883+x/tLSUjNr1qxeY7Kzs018fLyZMGGC+dOf/hT1ugFERyTyX4wxV//vuoLBoJKSkhQIBJSYmDjc5QAAACDCIpH/uMcXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQi+AAAAsALBFwAAAFYg+AIAAMAKBF8AAABYgeALAAAAKxB8AQAAYAWCLwAAAKwwqOBbXV2tzMxMJSQkKD8/X/v27RvQuNraWsXExGjevHmDOS0AAAAwaI6D79atW+X1elVRUaH9+/crKytLRUVFOnXq1CXHffHFF/rd736nmTNnDrpYAAAAYLAcB98NGzZo8eLFWrhwoe644w7V1NTouuuu0+bNm/sd093drYceekgrV67UhAkTrqhgAAAAYDAcBd+uri41NzersLDwPx8QG6vCwkI1NTX1O+6FF15QSkqKFi1aNKDzdHZ2KhgM9jgAAACAK+Eo+La3t6u7u1tut7tHu9vtls/n63PMnj179MYbb2jTpk0DPk9lZaWSkpLCh8fjcVImAAAA0EtEn+pw9uxZLViwQJs2bVJycvKAx5WXlysQCISPkydPRrBKAAAA2GCUk87JycmKi4uT3+/v0e73+5Wamtqr/+eff64vvvhCc+fODbeFQqHvTzxqlI4ePaqJEyf2GudyueRyuZyUBgAAAFySox3f+Ph45eTkqLGxMdwWCoXU2NiogoKCXv0nTZqkgwcPqqWlJXzcd999mj17tlpaWriFAQAAAFHjaMdXkrxer0pLS5Wbm6u8vDxVVVWpo6NDCxculCSVlJQoIyNDlZWVSkhI0OTJk3uMHzdunCT1agcAAAAiyXHwLS4u1unTp7VixQr5fD5lZ2eroaEh/IW3trY2xcbyQjgAAABcXWKMMWa4i7icYDCopKQkBQIBJSYmDnc5AAAAiLBI5D+2ZgEAAGAFgi8AAACsQPAFAACAFQi+AAAAsALBFwAAAFYg+AIAAMAKBF8AAABYgeALAAAAKxB8AQAAYAWCLwAAAKxA8AUAAIAVCL4AAACwAsEXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQi+AAAAsALBFwAAAFYg+AIAAMAKBF8AAABYgeALAAAAKxB8AQAAYAWCLwAAAKxA8AUAAIAVCL4AAACwAsEXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQi+AAAAsALBFwAAAFYg+AIAAMAKBF8AAABYgeALAAAAKxB8AQAAYAWCLwAAAKxA8AUAAIAVCL4AAACwAsEXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQi+AAAAsALBFwAAAFYg+AIAAMAKBF8AAABYgeALAAAAKxB8AQAAYAWCLwAAAKxA8AUAAIAVCL4AAACwAsEXAAAAVhhU8K2urlZmZqYSEhKUn5+vffv29dt306ZNmjlzpsaPH6/x48ersLDwkv0BAACASHAcfLdu3Sqv16uKigrt379fWVlZKioq0qlTp/rsv3v3bj344IP66KOP1NTUJI/Ho3vuuUdfffXVFRcPAAAADFSMMcY4GZCfn6+7775bL7/8siQpFArJ4/HoiSee0LJlyy47vru7W+PHj9fLL7+skpKSAZ0zGAwqKSlJgUBAiYmJTsoFAADACBSJ/Odox7erq0vNzc0qLCz8zwfExqqwsFBNTU0D+oxz587p/PnzuuGGG/rt09nZqWAw2OMAAAAAroSj4Nve3q7u7m653e4e7W63Wz6fb0CfsXTpUqWnp/cIzz9UWVmppKSk8OHxeJyUCQAAAPQS1ac6rFmzRrW1tdq+fbsSEhL67VdeXq5AIBA+Tp48GcUqAQAAcC0a5aRzcnKy4uLi5Pf7e7T7/X6lpqZecuy6deu0Zs0affjhh5o6deol+7pcLrlcLielAQAAAJfkaMc3Pj5eOTk5amxsDLeFQiE1NjaqoKCg33Fr167VqlWr1NDQoNzc3MFXCwAAAAySox1fSfJ6vSotLVVubq7y8vJUVVWljo4OLVy4UJJUUlKijIwMVVZWSpL+8Ic/aMWKFXr77beVmZkZvhf4+uuv1/XXXz+EUwEAAAD65zj4FhcX6/Tp01qxYoV8Pp+ys7PV0NAQ/sJbW1ubYmP/s5H86quvqqurS/fff3+Pz6moqNDzzz9/ZdUDAAAAA+T4Ob7Dgef4AgAA2GXYn+MLAAAAjFQEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQi+AAAAsALBFwAAAFYg+AIAAMAKBF8AAABYgeALAAAAKxB8AQAAYAWCLwAAAKxA8AUAAIAVCL4AAACwAsEXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQi+AAAAsALBFwAAAFYg+AIAAMAKBF8AAABYgeALAAAAKxB8AQAAYAWCLwAAAKxA8AUAAIAVCL4AAACwAsEXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQi+AAAAsALBFwAAAFYg+AIAAMAKBF8AAABYgeALAAAAKxB8AQAAYAWCLwAAAKxA8AUAAIAVCL4AAACwAsEXAAAAViD4AgAAwAoEXwAAAFiB4AsAAAArEHwBAABgBYIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsMKjgW11drczMTCUkJCg/P1/79u27ZP93331XkyZNUkJCgqZMmaL6+vpBFQsAAAAMluPgu3XrVnm9XlVUVGj//v3KyspSUVGRTp061Wf/vXv36sEHH9SiRYt04MABzZs3T/PmzdNnn312xcUDAAAAAxVjjDFOBuTn5+vuu+/Wyy+/LEkKhULyeDx64okntGzZsl79i4uL1dHRoQ8++CDc9tOf/lTZ2dmqqakZ0DmDwaCSkpIUCASUmJjopFwAAACMQJHIf6OcdO7q6lJzc7PKy8vDbbGxsSosLFRTU1OfY5qamuT1enu0FRUVaceOHf2ep7OzU52dneGfA4GApO//DwAAAMC172Luc7hHe0mOgm97e7u6u7vldrt7tLvdbh05cqTPMT6fr8/+Pp+v3/NUVlZq5cqVvdo9Ho+TcgEAADDC/fOf/1RSUtKQfJaj4Bst5eXlPXaJz5w5o5tuukltbW1DNnGMHMFgUB6PRydPnuRWFwux/nZj/e3G+tstEAjoxhtv1A033DBkn+ko+CYnJysuLk5+v79Hu9/vV2pqap9jUlNTHfWXJJfLJZfL1as9KSmJP/gWS0xMZP0txvrbjfW3G+tvt9jYoXv6rqNPio+PV05OjhobG8NtoVBIjY2NKigo6HNMQUFBj/6StGvXrn77AwAAAJHg+FYHr9er0tJS5ebmKi8vT1VVVero6NDChQslSSUlJcrIyFBlZaUk6cknn9SsWbO0fv16zZkzR7W1tfr000/12muvDe1MAAAAgEtwHHyLi4t1+vRprVixQj6fT9nZ2WpoaAh/ga2tra3HlvT06dP19ttv69lnn9Uzzzyjn/zkJ9qxY4cmT5484HO6XC5VVFT0efsDrn2sv91Yf7ux/nZj/e0WifV3/BxfAAAAYCQauruFAQAAgKsYwRcAAABWIPgCAADACgRfAAAAWOGqCb7V1dXKzMxUQkKC8vPztW/fvkv2f/fddzVp0iQlJCRoypQpqq+vj1KliAQn679p0ybNnDlT48eP1/jx41VYWHjZPy+4ujm9/i+qra1VTEyM5s2bF9kCEVFO1//MmTMqKytTWlqaXC6Xbr31Vv4OGMGcrn9VVZVuu+02jRkzRh6PR0uWLNF3330XpWoxVD7++GPNnTtX6enpiomJ0Y4dOy47Zvfu3brrrrvkcrl0yy23aMuWLc5PbK4CtbW1Jj4+3mzevNn8/e9/N4sXLzbjxo0zfr+/z/6ffPKJiYuLM2vXrjWHDh0yzz77rBk9erQ5ePBglCvHUHC6/vPnzzfV1dXmwIED5vDhw+bXv/61SUpKMv/4xz+iXDmGgtP1v+jEiRMmIyPDzJw50/zqV7+KTrEYck7Xv7Oz0+Tm5pp7773X7Nmzx5w4ccLs3r3btLS0RLlyDAWn6//WW28Zl8tl3nrrLXPixAmzc+dOk5aWZpYsWRLlynGl6uvrzfLly817771nJJnt27dfsn9ra6u57rrrjNfrNYcOHTIbN240cXFxpqGhwdF5r4rgm5eXZ8rKysI/d3d3m/T0dFNZWdln/wceeMDMmTOnR1t+fr75zW9+E9E6ERlO1/+HLly4YMaOHWvefPPNSJWICBrM+l+4cMFMnz7dvP7666a0tJTgO4I5Xf9XX33VTJgwwXR1dUWrRESQ0/UvKyszP//5z3u0eb1eM2PGjIjWicgaSPB9+umnzZ133tmjrbi42BQVFTk617Df6tDV1aXm5mYVFhaG22JjY1VYWKimpqY+xzQ1NfXoL0lFRUX99sfVazDr/0Pnzp3T+fPndcMNN0SqTETIYNf/hRdeUEpKihYtWhSNMhEhg1n/999/XwUFBSorK5Pb7dbkyZO1evVqdXd3R6tsDJHBrP/06dPV3Nwcvh2itbVV9fX1uvfee6NSM4bPUGU/x29uG2rt7e3q7u4Ov/ntIrfbrSNHjvQ5xufz9dnf5/NFrE5ExmDW/4eWLl2q9PT0XhcErn6DWf89e/bojTfeUEtLSxQqRCQNZv1bW1v117/+VQ899JDq6+t1/PhxPf744zp//rwqKiqiUTaGyGDWf/78+Wpvb9fPfvYzGWN04cIFPfroo3rmmWeiUTKGUX/ZLxgM6ttvv9WYMWMG9DnDvuMLXIk1a9aotrZW27dvV0JCwnCXgwg7e/asFixYoE2bNik5OXm4y8EwCIVCSklJ0WuvvaacnBwVFxdr+fLlqqmpGe7SEAW7d+/W6tWr9corr2j//v167733VFdXp1WrVg13aRghhn3HNzk5WXFxcfL7/T3a/X6/UlNT+xyTmprqqD+uXoNZ/4vWrVunNWvW6MMPP9TUqVMjWSYixOn6f/755/riiy80d+7ccFsoFJIkjRo1SkePHtXEiRMjWzSGzGCu/7S0NI0ePVpxcXHhtttvv10+n09dXV2Kj4+PaM0YOoNZ/+eee04LFizQww8/LEmaMmWKOjo69Mgjj2j58uWKjWU/71rVX/ZLTEwc8G6vdBXs+MbHxysnJ0eNjY3htlAopMbGRhUUFPQ5pqCgoEd/Sdq1a1e//XH1Gsz6S9LatWu1atUqNTQ0KDc3NxqlIgKcrv+kSZN08OBBtbS0hI/77rtPs2fPVktLizweTzTLxxUazPU/Y8YMHT9+PPwPHkk6duyY0tLSCL0jzGDW/9y5c73C7cV/BH3/HSlcq4Ys+zn73l1k1NbWGpfLZbZs2WIOHTpkHnnkETNu3Djj8/mMMcYsWLDALFu2LNz/k08+MaNGjTLr1q0zhw8fNhUVFTzObARzuv5r1qwx8fHxZtu2bebrr78OH2fPnh2uKeAKOF3/H+KpDiOb0/Vva2szY8eONb/97W/N0aNHzQcffGBSUlLMiy++OFxTwBVwuv4VFRVm7Nix5s9//rNpbW01f/nLX8zEiRPNAw88MFxTwCCdPXvWHDhwwBw4cMBIMhs2bDAHDhwwX375pTHGmGXLlpkFCxaE+198nNnvf/97c/jwYVNdXT1yH2dmjDEbN240N954o4mPjzd5eXnmb3/7W/h/mzVrliktLe3R/5133jG33nqriY+PN3feeaepq6uLcsUYSk7W/6abbjKSeh0VFRXRLxxDwun1//8RfEc+p+u/d+9ek5+fb1wul5kwYYJ56aWXzIULF6JcNYaKk/U/f/68ef75583EiRNNQkKC8Xg85vHHHzf/+te/ol84rshHH33U59/lF9e7tLTUzJo1q9eY7OxsEx8fbyZMmGD+9Kc/OT5vjDH8bgAAAADXvmG/xxcAAACIBoIvAAAArEDwBQAAgBUIvgAAALACwRcAAABWIPgCAADACgRfAAAAWIHgCwAAACsQfAEAAGAFgi8AAACsQPAFAACAFQi+AAAAsML/Ad0em3//eZFQAAAAAElFTkSuQmCC\n" + }, + "metadata": {} + } + ], + "source": [ + "fig3=plt.figure()\n", + "ax3=fig3.add_axes([0,0,1,1])\n", + "ax4=fig3.add_axes([0.2,0.5,.4,.4])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "SeRSiZDGST2o" + }, + "source": [ + "**Now use x,y, and z arrays to recreate the plot below. Notice the xlimits and y limits on the inserted plot:**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TM6XOILJST2q" + }, + "source": [ + "## Exercise 4\n", + "\n", + "**Use plt.subplots(nrows=1, ncols=2) to create the plot below.**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "osk0Jco2ST2r", + "outputId": "19297a12-2533-444c-85c2-74a61690d232", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 452 + } + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(
, array([, ], dtype=object))" + ] + }, + "metadata": {}, + "execution_count": 20 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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ampqSs8880y67777UkVFRdq+ffvoDJzsjfE685vsjZGfe6x3x1jtjXERLvPmzUvLly/v/7i3tzdNmzYttbS0DHr+pz71qfSJT3xiwLH6+vr0X//1XyM65/+v2JmPd+zYsXTuueemH/7whyM14gmGM/OxY8fS5Zdfnr7//e+npUuXjvoCKnbm7373u2nmzJmpp6dntEY8QbEzL1++PH30ox8dcKypqSldccUVIzrnUE5mAX35y19OH/jABwYcW7RoUZo/f/4ITjaQvTE67I3Rk/PuGM29MeYvFfX09MTu3bujsbGx/1h5eXk0NjbGzp07B71m586dA86PiJg/f/6Q55facGY+3muvvRZvvPFGSd8x860Md+avfe1rMXny5LjhhhtGY8wBhjPzz3/+82hoaIjly5dHbW1tXHzxxbF27dro7e0dtzNffvnlsXv37v6nhPfv3x/btm2La665ZlRmHo4cH4M5znw8e+Pt5bg3Is6M3VGqx+CYvzv0aLzdfakNZ+bj3XbbbTFt2rQT/iOOlOHM/OSTT8aDDz4YbW1tozDhiYYz8/79++M3v/lNfPrTn45t27bFCy+8EJ/73OfijTfeiObm5nE58/XXXx+HDh2Kj3zkI5FSimPHjsUtt9wSX/nKV0Z83uEa6jHY1dUV//jHP+Lss88e0fu3N+yNoeS4NyLOjN1Rqr0x5s+4nInWrVsXmzdvjsceeyyqqqrGepxBHTlyJBYvXhybNm2KSZMmjfU4J62vry8mT54c3/ve92LOnDmxaNGiWL16dWzcuHGsRxvSjh07Yu3atfHAAw/Enj174tFHH42tW7fGXXfdNdajMY7YGyMnx70RcebujjF/xiXHt7sfzsxvuueee2LdunXx61//Oi699NKRHHOAYmd+8cUX4+WXX44FCxb0H+vr64uIiAkTJsRzzz0XF1xwwbiaOSJi6tSpcdZZZ0VFRUX/sfe9733R3t4ePT09UVlZOe5mvuOOO2Lx4sVx4403RkTEJZdcEkePHo2bb745Vq9eHeXl4+/7i6Eeg9XV1SP+bEuEvTFa7I3R2RsRZ8buKNXeGPOvKse3ux/OzBERd999d9x1112xffv2mDt37miM2q/YmS+66KJ4+umno62trf927bXXxtVXXx1tbW1RV1c37maOiLjiiivihRde6F+WERHPP/98TJ06dVSWz3Bmfu21105YMG8u0DRO30osx8dgjjNH2BsjPXPE2O+NiDNjd5TsMVjUj/KOkNF+u/uxmHndunWpsrIyPfLII+kvf/lL/+3IkSPjdubjjcVvBxQ784EDB9K5556b/vu//zs999xz6Re/+EWaPHly+vrXvz5uZ25ubk7nnntu+p//+Z+0f//+9Mtf/jJdcMEF6VOf+tSozXzkyJG0d+/etHfv3hQR6d5770179+5Nf/zjH1NKKa1cuTItXry4//w3f63xS1/6Utq3b1/asGHDmPw6tL0x/mY+nr0xcnOP9e4Yq70xLsIlpTzf7r6Ymd/97neniDjh1tzcPG5nPt5YLKCUip/5qaeeSvX19alQKKSZM2emb3zjG+nYsWPjduY33ngjffWrX00XXHBBqqqqSnV1delzn/tc+tvf/jZq8z7xxBOD/v/55pxLly5NV1111QnXzJ49O1VWVqaZM2emH/zgB6M275vsjfE38/HsjeLktDvGam+UpTQOn08CABjEmP+MCwDAyRIuAEA2hAsAkA3hAgBkQ7gAANkQLgBANoQLAJAN4QIAZEO4AADZEC4AQDaECwCQjf8DOu0CiLveMb4AAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ], + "source": [ + "plt.subplots(nrows=1, ncols=2)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QWwItNZVST2r" + }, + "source": [ + "**Now plot (x,y) and (x,z) on the axes. Play around with the linewidth and style**" + ] + }, + { + "cell_type": "code", + "source": [ + "\n", + "\n", + "x = np.arange(0,100)\n", + "y = x*2\n", + "z = x**2\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(x,y,ls=':')\n", + "\n", + "\n", + "plt.subplot(1, 2, 2)\n", + "plt.plot(x,z,c='hotpink')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 447 + }, + "id": "tIe4zxAA9gb4", + "outputId": "2a77f5ea-25fd-4ff7-9324-84eff69a5738" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 21 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hV08IzIvST2s" + }, + "source": [ + "**See if you can resize the plot by adding the figsize() argument in plt.subplots() are copying and pasting your previous code.**" + ] + }, + { + "cell_type": "code", + "source": [ + "x = np.arange(0,100)\n", + "y = x*2\n", + "z = x**2\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.plot(x,y,ls=':')\n", + "\n", + "\n", + "plt.subplot(1, 2, 2)\n", + "plt.plot(x,z,c='hotpink')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 447 + }, + "id": "QJfOVFZl-J99", + "outputId": "f710ca9d-c165-4a5c-f78d-126dccbb4727" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": {}, + "execution_count": 22 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-ONbbrWEST2t" + }, + "source": [ + "# Great Job!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.12" + }, + "colab": { + "provenance": [], + "include_colab_link": true + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/Assignment 1/Assignment1_Rayeshwar/Rayeshwar_Assignment1_Numpy_.ipynb b/Assignment 1/Assignment1_Rayeshwar/Rayeshwar_Assignment1_Numpy_.ipynb new file mode 100644 index 00000000..13b96ea3 --- /dev/null +++ b/Assignment 1/Assignment1_Rayeshwar/Rayeshwar_Assignment1_Numpy_.ipynb @@ -0,0 +1,579 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HfJB9JnS9xlK" + }, + "source": [ + "# NumPy Exercises\n", + "\n", + "Now that we've learned about NumPy let's test your knowledge. We'll start off with a few simple tasks, and then you'll be asked some more complicated questions." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "u9POEVg29xlM" + }, + "source": [ + "#### Import NumPy as np" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "yyS-PuO_9xlM" + }, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ehlpKUPc9xlM" + }, + "source": [ + "#### Create an array of 10 zeros" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "aEQkK-Dw9xlN" + }, + "outputs": [], + "source": [ + "arr = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6QHp05Ei9xlN" + }, + "source": [ + "#### Create an array of 10 ones" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true, + "id": "ebe9xrC29xlN" + }, + "outputs": [], + "source": [ + "arr2=np.array([1,1,1,1,1,1,1,1,1,1])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ziS-l3xp9xlO" + }, + "source": [ + "#### Create an array of 10 fives" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "fFC7bqLM9xlO", + "outputId": "119c96dc-0306-4ccf-fe06-9ffa456a0436" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([5., 5., 5., 5., 5., 5., 5., 5., 5., 5.])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "arr3=np.array([5,5,5,5,5,5,5,5,5,5])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kBugMXlC9xlO" + }, + "source": [ + "#### Create an array of the integers from 10 to 50" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "JsO6qS9R9xlO" + }, + "outputs": [], + "source": [ + "arr4=np.arange(10,51)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dMw4V2L79xlO" + }, + "source": [ + "#### Create an array of all the even integers from 10 to 50" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "4lK-5SQV9xlO", + "outputId": "2e053b90-8713-42fa-9739-ee16b9ccd102" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42,\n", + " 44, 46, 48, 50])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "arr6=np.arange(10,51,2)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "g__F0rB39xlP" + }, + "source": [ + "#### Create a 3x3 matrix with values ranging from 0 to 8" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "MmVXCn0K9xlP" + }, + "outputs": [], + "source": [ + "arr7=np.array([[0,1,2],[3,4,5],[6,7,8]])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4YfT0aLo9xlP" + }, + "source": [ + "#### Create a 3x3 identity matrix" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "UHa42UpQ9xlP", + "outputId": "ac24486e-3249-41f3-e6ca-49b88c6a2125" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 0., 0.],\n", + " [0., 1., 0.],\n", + " [0., 0., 1.]])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "arr8=np.eye(3)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bfwDbjhI9xlP" + }, + "source": [ + "#### Use NumPy to generate a random number between 0 and 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Z0OroZxW9xlP" + }, + "outputs": [], + "source": [ + "arr9=np.random.rand(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rLW0Jjzp9xlP" + }, + "source": [ + "#### Use NumPy to generate an array of 25 random numbers sampled from a standard normal distribution" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "szluy14n9xlP", + "outputId": "176f3078-97b7-4a7d-e885-5a1224b13fec" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-0.11617859, -0.13631661, 0.7150532 , -0.27734985, 0.06538679,\n", + " -1.16994467, -1.45669789, 1.56838663, 1.13525628, -0.69958045,\n", + " 0.06961791, -0.07441215, 0.99718638, 0.28416225, -0.14591454,\n", + " 0.02658355, -2.05644532, 0.66783981, 2.57474944, 1.3365862 ,\n", + " -0.35696454, -1.57424745, 0.76840978, -0.79557035, 0.91504545])" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "arr10=np.random.rand(25)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_GhI8LYn9xlP" + }, + "source": [ + "#### Create the following matrix:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "wS1ZBddV9xlP", + "outputId": "92588415-77b9-49c7-cfdd-9b67602a3386" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1 ],\n", + " [0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2 ],\n", + " [0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3 ],\n", + " [0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.4 ],\n", + " [0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.5 ],\n", + " [0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.6 ],\n", + " [0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.7 ],\n", + " [0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8 ],\n", + " [0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9 ],\n", + " [0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1. ]])" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "arr11=np.arange(0.01,1.01,0.01)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3OqA-QtL9xlQ" + }, + "source": [ + "#### Create an array of 20 linearly spaced points between 0 and 1:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "FNXTugQ29xlQ", + "outputId": "674dbbff-9a87-4463-933f-07b2bbd15ce2" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0. , 0.05263158, 0.10526316, 0.15789474, 0.21052632,\n", + " 0.26315789, 0.31578947, 0.36842105, 0.42105263, 0.47368421,\n", + " 0.52631579, 0.57894737, 0.63157895, 0.68421053, 0.73684211,\n", + " 0.78947368, 0.84210526, 0.89473684, 0.94736842, 1. ])" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "elx0EaxE9xlQ" + }, + "source": [ + "## Numpy Indexing and Selection\n", + "\n", + "Now you will be given a few matrices, and be asked to replicate the resulting matrix outputs:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2Tbm9kVf9xlQ" + }, + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Ft8P8e249xlQ", + "outputId": "1112818b-f5ce-4e4a-e25d-b0ef19de4054", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 1, 2, 3, 4, 5],\n", + " [ 6, 7, 8, 9, 10],\n", + " [11, 12, 13, 14, 15],\n", + " [16, 17, 18, 19, 20],\n", + " [21, 22, 23, 24, 25]])" + ] + }, + "metadata": {}, + "execution_count": 14 + } + ], + "source": [ + "arr11=np.arange(1,26).reshape(5,5)\n", + "arr11[0:, 0:]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "WrcFkpGL9xlQ", + "outputId": "9c1836e0-2c62-4367-dd37-95b7fc758318", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[12, 13, 14, 15],\n", + " [17, 18, 19, 20],\n", + " [22, 23, 24, 25]])" + ] + }, + "metadata": {}, + "execution_count": 12 + } + ], + "source": [ + "arr11 = np.arange(1,26).reshape(5,5)\n", + "arr11[2:, 1:]\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "rnUSntEa9xlQ", + "outputId": "8d609eca-1571-45eb-8e6c-b4da64181169", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "20" + ] + }, + "metadata": {}, + "execution_count": 15 + } + ], + "source": [ + "20" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "3DMBC_wp9xlQ", + "outputId": "a0208df9-d118-435c-ea9d-01249ebbeb99", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 2],\n", + " [ 7],\n", + " [12],\n", + " [17]])" + ] + }, + "metadata": {}, + "execution_count": 17 + } + ], + "source": [ + "arr11=np.arange(1,26).reshape(5,5)\n", + "arr11[:4, 1:2]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "pGjD4HUK9xlQ", + "outputId": "202cdaec-43e4-4c6c-f68f-4a71ed1cd448", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[21, 22, 23, 24, 25]])" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ], + "source": [ + "arr11=np.arange(1,26).reshape(5,5)\n", + "arr11[4:, 0:]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "dqsdpxUo9xlR", + "outputId": "e0346ff5-2b64-4b8b-b60a-1f27a3bacfc3", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[16, 17, 18, 19, 20],\n", + " [21, 22, 23, 24, 25]])" + ] + }, + "metadata": {}, + "execution_count": 20 + } + ], + "source": [ + "arr11=np.arange(1,26).reshape(5,5)\n", + "arr11[3:, 0:]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "id": "6vtHuVJU9xlf" + }, + "source": [ + "# Great Job!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.12" + }, + "colab": { + "provenance": [], + "include_colab_link": true + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/Assignment 1/Assignment1_Rayeshwar/Rayeshwar_Assignment1_Pandas.ipynb b/Assignment 1/Assignment1_Rayeshwar/Rayeshwar_Assignment1_Pandas.ipynb new file mode 100644 index 00000000..b1f6ed9f --- /dev/null +++ b/Assignment 1/Assignment1_Rayeshwar/Rayeshwar_Assignment1_Pandas.ipynb @@ -0,0 +1,2860 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "source": [ + "## General Instructions for all Assignments" + ], + "metadata": { + "id": "AWDeauE3Bdzs" + } + }, + { + "cell_type": "markdown", + "source": [ + "1. Fork the repository and make a copy of this notebook and rename it as your name_Assignment1_Pandas\n", + "2. Generate a pull request. The pull request message should also be yourname_Assignment1" + ], + "metadata": { + "id": "Xaf9uMvXBJEC" + } + }, + { + "cell_type": "markdown", + "source": [ + "\n", + "1. This code notebook is composed of cells. Each cell is either text or Python code.\n", + "2. To run a cell of code, click the \"play button\" icon to the left of the cell or click on the cell and press \"Shift+Enter\" on your keyboard. This will execute the Python code contained in the cell. Executing a cell that defines a variable is important before executing or authoring a cell that depends on that previously created variable assignment.\n" + ], + "metadata": { + "id": "4_6uxHVGB_XT" + } + }, + { + "cell_type": "markdown", + "source": [], + "metadata": { + "id": "b68xNjkKCBIF" + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "BiD4gl6_cAYs" + }, + "outputs": [], + "source": [ + "#import pandas library\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "JUtm9KricAYu" + }, + "outputs": [], + "source": [ + "df = pd.read_csv('/content/drive/MyDrive/DATASETS/Iris (1).csv') #enter path for the Iris csv in the brackets\n", + "#reads the csv file and stores it in a data frame(define in the pandas library)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "qzUnSkfRcAYu" + }, + "outputs": [], + "source": [ + "dictionary = {'col':[4,2,3], 'col2':[4,7,6], 'col3':[7,10,9]}" + ] + }, + { + "cell_type": "code", + "source": [ + "from google.colab import drive\n", + "drive.mount('/content/drive')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vKjWRiCtwXq1", + "outputId": "f6c0aea0-e7ab-449e-e230-8cf995d9debd" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Mounted at /content/drive\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "ACswu4BXcAYu" + }, + "outputs": [], + "source": [ + "dictionarydf = pd.DataFrame.from_dict(dictionary)\n", + "#it creats a new datafram which stores the dictionary made above" + ] + }, + { + "cell_type": "code", + "source": [ + "df.head()\n", + "#shows top 5 rows (row indexing starts from 0)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "MvYNz8E2dp3K", + "outputId": "a1550e32-f99c-49b5-a3db-f1a30f915e43" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species\n", + "0 1 5.1 3.5 1.4 0.2 Iris-setosa\n", + "1 2 4.9 3.0 1.4 0.2 Iris-setosa\n", + "2 3 4.7 3.2 1.3 0.2 Iris-setosa\n", + "3 4 4.6 3.1 1.5 0.2 Iris-setosa\n", + "4 5 5.0 3.6 1.4 0.2 Iris-setosa" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
015.13.51.40.2Iris-setosa
124.93.01.40.2Iris-setosa
234.73.21.30.2Iris-setosa
344.63.11.50.2Iris-setosa
455.03.61.40.2Iris-setosa
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"#shows top 5 rows (row indexing starts from 0)\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"Id\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1,\n \"min\": 1,\n \"max\": 5,\n \"num_unique_values\": 5,\n \"samples\": [\n 2,\n 5,\n 3\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SepalLengthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.2073644135332772,\n \"min\": 4.6,\n \"max\": 5.1,\n \"num_unique_values\": 5,\n \"samples\": [\n 4.9,\n 5.0,\n 4.7\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SepalWidthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.2588435821108957,\n \"min\": 3.0,\n \"max\": 3.6,\n \"num_unique_values\": 5,\n \"samples\": [\n 3.0,\n 3.6,\n 3.2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"PetalLengthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.07071067811865474,\n \"min\": 1.3,\n \"max\": 1.5,\n \"num_unique_values\": 3,\n \"samples\": [\n 1.4,\n 1.3,\n 1.5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"PetalWidthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.2,\n \"max\": 0.2,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Species\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"Iris-setosa\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 12 + } + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "iAx3B-TacAYu", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 363 + }, + "outputId": "03f311e2-e07e-4bff-af30-4bb8dcaee514" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species\n", + "0 1 5.1 3.5 1.4 0.2 Iris-setosa\n", + "1 2 4.9 3.0 1.4 0.2 Iris-setosa\n", + "2 3 4.7 3.2 1.3 0.2 Iris-setosa\n", + "3 4 4.6 3.1 1.5 0.2 Iris-setosa\n", + "4 5 5.0 3.6 1.4 0.2 Iris-setosa\n", + "5 6 5.4 3.9 1.7 0.4 Iris-setosa\n", + "6 7 4.6 3.4 1.4 0.3 Iris-setosa\n", + "7 8 5.0 3.4 1.5 0.2 Iris-setosa\n", + "8 9 4.4 2.9 1.4 0.2 Iris-setosa\n", + "9 10 4.9 3.1 1.5 0.1 Iris-setosa" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
015.13.51.40.2Iris-setosa
124.93.01.40.2Iris-setosa
234.73.21.30.2Iris-setosa
344.63.11.50.2Iris-setosa
455.03.61.40.2Iris-setosa
565.43.91.70.4Iris-setosa
674.63.41.40.3Iris-setosa
785.03.41.50.2Iris-setosa
894.42.91.40.2Iris-setosa
9104.93.11.50.1Iris-setosa
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"#Similiar to above, show 10 rows from the top\",\n \"rows\": 10,\n \"fields\": [\n {\n \"column\": \"Id\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 3,\n \"min\": 1,\n \"max\": 10,\n \"num_unique_values\": 10,\n \"samples\": [\n 9,\n 2,\n 6\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SepalLengthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.29135697844549546,\n \"min\": 4.4,\n \"max\": 5.4,\n \"num_unique_values\": 7,\n \"samples\": [\n 5.1,\n 4.9,\n 5.4\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SepalWidthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.30713731999438515,\n \"min\": 2.9,\n \"max\": 3.9,\n \"num_unique_values\": 8,\n \"samples\": [\n 3.0,\n 3.9,\n 3.5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"PetalLengthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.10801234497346433,\n \"min\": 1.3,\n \"max\": 1.7,\n \"num_unique_values\": 4,\n \"samples\": [\n 1.3,\n 1.7,\n 1.4\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"PetalWidthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.07888106377466154,\n \"min\": 0.1,\n \"max\": 0.4,\n \"num_unique_values\": 4,\n \"samples\": [\n 0.4,\n 0.1,\n 0.2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Species\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"Iris-setosa\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 13 + } + ], + "source": [ + "df.head(10)\n", + "#Similiar to above, show 10 rows from the top" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "P9RtjFLQcAYv", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 519 + }, + "outputId": "427316a5-9f6f-43dd-8dff-c2ea89d69d83" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm \\\n", + "135 136 7.7 3.0 6.1 2.3 \n", + "136 137 6.3 3.4 5.6 2.4 \n", + "137 138 6.4 3.1 5.5 1.8 \n", + "138 139 6.0 3.0 4.8 1.8 \n", + "139 140 6.9 3.1 5.4 2.1 \n", + "140 141 6.7 3.1 5.6 2.4 \n", + "141 142 6.9 3.1 5.1 2.3 \n", + "142 143 5.8 2.7 5.1 1.9 \n", + "143 144 6.8 3.2 5.9 2.3 \n", + "144 145 6.7 3.3 5.7 2.5 \n", + "145 146 6.7 3.0 5.2 2.3 \n", + "146 147 6.3 2.5 5.0 1.9 \n", + "147 148 6.5 3.0 5.2 2.0 \n", + "148 149 6.2 3.4 5.4 2.3 \n", + "149 150 5.9 3.0 5.1 1.8 \n", + "\n", + " Species \n", + "135 Iris-virginica \n", + "136 Iris-virginica \n", + "137 Iris-virginica \n", + "138 Iris-virginica \n", + "139 Iris-virginica \n", + "140 Iris-virginica \n", + "141 Iris-virginica \n", + "142 Iris-virginica \n", + "143 Iris-virginica \n", + "144 Iris-virginica \n", + "145 Iris-virginica \n", + "146 Iris-virginica \n", + "147 Iris-virginica \n", + "148 Iris-virginica \n", + "149 Iris-virginica " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
1351367.73.06.12.3Iris-virginica
1361376.33.45.62.4Iris-virginica
1371386.43.15.51.8Iris-virginica
1381396.03.04.81.8Iris-virginica
1391406.93.15.42.1Iris-virginica
1401416.73.15.62.4Iris-virginica
1411426.93.15.12.3Iris-virginica
1421435.82.75.11.9Iris-virginica
1431446.83.25.92.3Iris-virginica
1441456.73.35.72.5Iris-virginica
1451466.73.05.22.3Iris-virginica
1461476.32.55.01.9Iris-virginica
1471486.53.05.22.0Iris-virginica
1481496.23.45.42.3Iris-virginica
1491505.93.05.11.8Iris-virginica
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"df\",\n \"rows\": 15,\n \"fields\": [\n {\n \"column\": \"Id\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 4,\n \"min\": 136,\n \"max\": 150,\n \"num_unique_values\": 15,\n \"samples\": [\n 145,\n 147,\n 136\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SepalLengthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.48136710078097966,\n \"min\": 5.8,\n \"max\": 7.7,\n \"num_unique_values\": 11,\n \"samples\": [\n 6.7,\n 7.7,\n 6.2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SepalWidthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.23543273227945902,\n \"min\": 2.5,\n \"max\": 3.4,\n \"num_unique_values\": 7,\n \"samples\": [\n 3.0,\n 3.4,\n 3.3\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"PetalLengthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.35697138740881107,\n \"min\": 4.8,\n \"max\": 6.1,\n \"num_unique_values\": 10,\n \"samples\": [\n 5.2,\n 5.6,\n 5.1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"PetalWidthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.25014281634983754,\n \"min\": 1.8,\n \"max\": 2.5,\n \"num_unique_values\": 7,\n \"samples\": [\n 2.3,\n 2.4,\n 2.5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Species\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"Iris-virginica\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 15 + } + ], + "source": [ + "df.tail(15)#Show the last 15 rows using tail function" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "QrzERa4qcAYv", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "26cbe61c-7e27-4ec1-cb83-e023cfc6e9c0" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['Id',\n", + " 'SepalLengthCm',\n", + " 'SepalWidthCm',\n", + " 'PetalLengthCm',\n", + " 'PetalWidthCm',\n", + " 'Species']" + ] + }, + "metadata": {}, + "execution_count": 14 + } + ], + "source": [ + "\n", + "#import pandas library\n", + "import pandas as pd\n", + "df = pd.read_csv('/content/drive/MyDrive/DATASETS/Iris (1).csv')\n", + "dictionary = {'col':[4,2,3], 'col2':[4,7,6], 'col3':[7,10,9]}\n", + "dictionarydf = pd.DataFrame.from_dict(dictionary)\n", + "#it creats a new datafram which stores the dictionary made abovedf = pd.read_csv('/content/drive/MyDrive/DATASETS/Iris (1).csv')\n", + "list(df.columns)#list all the columns of the dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "5yPReLqxcAYv", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 272 + }, + "outputId": "e25721ea-da60-41d4-9da2-7e5ffc4579b3" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Id int64\n", + "SepalLengthCm float64\n", + "SepalWidthCm float64\n", + "PetalLengthCm float64\n", + "PetalWidthCm float64\n", + "Species object\n", + "dtype: object" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
Idint64
SepalLengthCmfloat64
SepalWidthCmfloat64
PetalLengthCmfloat64
PetalWidthCmfloat64
Speciesobject
\n", + "

" + ] + }, + "metadata": {}, + "execution_count": 21 + } + ], + "source": [ + "\n", + "df.dtypes#show the data types of each feature or column name" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "lT3OEUNDcAYv", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "ceab914f-0720-4e93-85d4-20967661d31e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "RangeIndex: 150 entries, 0 to 149\n", + "Data columns (total 6 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 Id 150 non-null int64 \n", + " 1 SepalLengthCm 150 non-null float64\n", + " 2 SepalWidthCm 150 non-null float64\n", + " 3 PetalLengthCm 150 non-null float64\n", + " 4 PetalWidthCm 150 non-null float64\n", + " 5 Species 150 non-null object \n", + "dtypes: float64(4), int64(1), object(1)\n", + "memory usage: 7.2+ KB\n" + ] + } + ], + "source": [ + "df.info()#describe the data through statistics" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 423 + }, + "id": "Z_52ct0BcAYw", + "outputId": "bf860a2c-832f-4422-b421-49f22a75604d" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " SepalLengthCm SepalWidthCm\n", + "0 5.1 3.5\n", + "1 4.9 3.0\n", + "2 4.7 3.2\n", + "3 4.6 3.1\n", + "4 5.0 3.6\n", + ".. ... ...\n", + "145 6.7 3.0\n", + "146 6.3 2.5\n", + "147 6.5 3.0\n", + "148 6.2 3.4\n", + "149 5.9 3.0\n", + "\n", + "[150 rows x 2 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SepalLengthCmSepalWidthCm
05.13.5
14.93.0
24.73.2
34.63.1
45.03.6
.........
1456.73.0
1466.32.5
1476.53.0
1486.23.4
1495.93.0
\n", + "

150 rows × 2 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"#From taking multiple columns from the dataset\",\n \"rows\": 150,\n \"fields\": [\n {\n \"column\": \"SepalLengthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.8280661279778629,\n \"min\": 4.3,\n \"max\": 7.9,\n \"num_unique_values\": 35,\n \"samples\": [\n 6.2,\n 4.5,\n 5.6\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SepalWidthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.4335943113621737,\n \"min\": 2.0,\n \"max\": 4.4,\n \"num_unique_values\": 23,\n \"samples\": [\n 2.3,\n 4.0,\n 3.5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 16 + } + ], + "source": [ + "df[['SepalLengthCm', 'SepalWidthCm']]\n", + "#From taking multiple columns from the dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "JWYXoLl0cAYw", + "outputId": "97ce8953-affb-4a59-bd04-ae5bf4cdab0b" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([5.1, 4.9, 4.7, 4.6, 5. , 5.4, 4.4, 4.8, 4.3, 5.8, 5.7, 5.2, 5.5,\n", + " 4.5, 5.3, 7. , 6.4, 6.9, 6.5, 6.3, 6.6, 5.9, 6. , 6.1, 5.6, 6.7,\n", + " 6.2, 6.8, 7.1, 7.6, 7.3, 7.2, 7.7, 7.4, 7.9])" + ] + }, + "metadata": {}, + "execution_count": 17 + } + ], + "source": [ + "df.SepalLengthCm.unique()\n", + "#gives the unique values of Sepal Length present in that particular column" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "MiOVp1WacAYw", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 272 + }, + "outputId": "a9789c47-2197-4321-9434-f5ddcb06a95a" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Id 11\n", + "SepalLengthCm 5.4\n", + "SepalWidthCm 3.7\n", + "PetalLengthCm 1.5\n", + "PetalWidthCm 0.2\n", + "Species Iris-setosa\n", + "Name: 10, dtype: object" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
10
Id11
SepalLengthCm5.4
SepalWidthCm3.7
PetalLengthCm1.5
PetalWidthCm0.2
SpeciesIris-setosa
\n", + "

" + ] + }, + "metadata": {}, + "execution_count": 24 + } + ], + "source": [ + "df.iloc[10]#Get the 11th row from the dataset\n", + "#Hint: for taking 11th row do we use 11 or 10 index?" + ] + }, + { + "cell_type": "code", + "source": [ + "df.iloc[10,-1]" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "id": "TF03jh_MovET", + "outputId": "f9b31ce0-a2ae-4b3c-f396-63b28138a6aa" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'Iris-setosa'" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "string" + } + }, + "metadata": {}, + "execution_count": 25 + } + ] + }, + { + "cell_type": "code", + "source": [ + "df.iloc[9,-2]#Display the second last entry of the 10th row" + ], + "metadata": { + "id": "gV-h3rK-g5lZ", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "84950ee8-41cd-4bcd-8190-2c5f87264767" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "np.float64(0.1)" + ] + }, + "metadata": {}, + "execution_count": 26 + } + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 394 + }, + "id": "KXWCH34ecAYx", + "outputId": "5014775e-a50f-471d-8dc8-453435cc0a2e" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species\n", + "22 23 4.6 3.6 1.0 0.2 Iris-setosa\n", + "23 24 5.1 3.3 1.7 0.5 Iris-setosa\n", + "24 25 4.8 3.4 1.9 0.2 Iris-setosa\n", + "25 26 5.0 3.0 1.6 0.2 Iris-setosa\n", + "26 27 5.0 3.4 1.6 0.4 Iris-setosa\n", + "27 28 5.2 3.5 1.5 0.2 Iris-setosa\n", + "28 29 5.2 3.4 1.4 0.2 Iris-setosa\n", + "29 30 4.7 3.2 1.6 0.2 Iris-setosa\n", + "30 31 4.8 3.1 1.6 0.2 Iris-setosa\n", + "31 32 5.4 3.4 1.5 0.4 Iris-setosa\n", + "32 33 5.2 4.1 1.5 0.1 Iris-setosa" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
22234.63.61.00.2Iris-setosa
23245.13.31.70.5Iris-setosa
24254.83.41.90.2Iris-setosa
25265.03.01.60.2Iris-setosa
26275.03.41.60.4Iris-setosa
27285.23.51.50.2Iris-setosa
28295.23.41.40.2Iris-setosa
29304.73.21.60.2Iris-setosa
30314.83.11.60.2Iris-setosa
31325.43.41.50.4Iris-setosa
32335.24.11.50.1Iris-setosa
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"#takes everything from row 23(included) and 34(not included)\",\n \"rows\": 11,\n \"fields\": [\n {\n \"column\": \"Id\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 3,\n \"min\": 23,\n \"max\": 33,\n \"num_unique_values\": 11,\n \"samples\": [\n 28,\n 23,\n 32\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SepalLengthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.2489979919597748,\n \"min\": 4.6,\n \"max\": 5.4,\n \"num_unique_values\": 7,\n \"samples\": [\n 4.6,\n 5.1,\n 4.7\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SepalWidthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.28982753492378865,\n \"min\": 3.0,\n \"max\": 4.1,\n \"num_unique_values\": 8,\n \"samples\": [\n 3.3,\n 3.2,\n 3.6\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"PetalLengthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.22033033051637385,\n \"min\": 1.0,\n \"max\": 1.9,\n \"num_unique_values\": 6,\n \"samples\": [\n 1.0,\n 1.7,\n 1.4\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"PetalWidthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.12135597524338358,\n \"min\": 0.1,\n \"max\": 0.5,\n \"num_unique_values\": 4,\n \"samples\": [\n 0.5,\n 0.1,\n 0.2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Species\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"Iris-setosa\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 27 + } + ], + "source": [ + "df.iloc[22:33]\n", + "#takes everything from row 23(included) and 34(not included)" + ] + }, + { + "cell_type": "code", + "source": [ + "df1=df.copy()\n", + "df1.dropna(axis=0, inplace=False) #drops any values that are null or na" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 423 + }, + "id": "quhmLFx-q6vS", + "outputId": "238d8a6a-5e59-4898-9c9e-1ad01204daa0" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm \\\n", + "0 1 5.1 3.5 1.4 0.2 \n", + "1 2 4.9 3.0 1.4 0.2 \n", + "2 3 4.7 3.2 1.3 0.2 \n", + "3 4 4.6 3.1 1.5 0.2 \n", + "4 5 5.0 3.6 1.4 0.2 \n", + ".. ... ... ... ... ... \n", + "145 146 6.7 3.0 5.2 2.3 \n", + "146 147 6.3 2.5 5.0 1.9 \n", + "147 148 6.5 3.0 5.2 2.0 \n", + "148 149 6.2 3.4 5.4 2.3 \n", + "149 150 5.9 3.0 5.1 1.8 \n", + "\n", + " Species \n", + "0 Iris-setosa \n", + "1 Iris-setosa \n", + "2 Iris-setosa \n", + "3 Iris-setosa \n", + "4 Iris-setosa \n", + ".. ... \n", + "145 Iris-virginica \n", + "146 Iris-virginica \n", + "147 Iris-virginica \n", + "148 Iris-virginica \n", + "149 Iris-virginica \n", + "\n", + "[150 rows x 6 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdSepalLengthCmSepalWidthCmPetalLengthCmPetalWidthCmSpecies
015.13.51.40.2Iris-setosa
124.93.01.40.2Iris-setosa
234.73.21.30.2Iris-setosa
344.63.11.50.2Iris-setosa
455.03.61.40.2Iris-setosa
.....................
1451466.73.05.22.3Iris-virginica
1461476.32.55.01.9Iris-virginica
1471486.53.05.22.0Iris-virginica
1481496.23.45.42.3Iris-virginica
1491505.93.05.11.8Iris-virginica
\n", + "

150 rows × 6 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"df1\",\n \"rows\": 150,\n \"fields\": [\n {\n \"column\": \"Id\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 43,\n \"min\": 1,\n \"max\": 150,\n \"num_unique_values\": 150,\n \"samples\": [\n 74,\n 19,\n 119\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SepalLengthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.8280661279778629,\n \"min\": 4.3,\n \"max\": 7.9,\n \"num_unique_values\": 35,\n \"samples\": [\n 6.2,\n 4.5,\n 5.6\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SepalWidthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.4335943113621737,\n \"min\": 2.0,\n \"max\": 4.4,\n \"num_unique_values\": 23,\n \"samples\": [\n 2.3,\n 4.0,\n 3.5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"PetalLengthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.7644204199522617,\n \"min\": 1.0,\n \"max\": 6.9,\n \"num_unique_values\": 43,\n \"samples\": [\n 6.7,\n 3.8,\n 3.7\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"PetalWidthCm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.7631607417008414,\n \"min\": 0.1,\n \"max\": 2.5,\n \"num_unique_values\": 22,\n \"samples\": [\n 0.2,\n 1.2,\n 1.3\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Species\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"Iris-setosa\",\n \"Iris-versicolor\",\n \"Iris-virginica\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 28 + } + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "kZg8z57fcAY2" + }, + "outputs": [], + "source": [ + "df.dropna(axis=0, inplace=True)\n", + "#drops all the rows with missing values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 272 + }, + "id": "FRWcDJA2cAY2", + "outputId": "7eeabb6c-33c8-421b-f91e-8997100d6fe8" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Id 0\n", + "SepalLengthCm 0\n", + "SepalWidthCm 0\n", + "PetalLengthCm 0\n", + "PetalWidthCm 0\n", + "Species 0\n", + "dtype: int64" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
Id0
SepalLengthCm0
SepalWidthCm0
PetalLengthCm0
PetalWidthCm0
Species0
\n", + "

" + ] + }, + "metadata": {}, + "execution_count": 30 + } + ], + "source": [ + "df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "JioW0K_pcAY3" + }, + "outputs": [], + "source": [ + "df.to_csv('cleandata_iris.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "asToKeGJcAY4" + }, + "outputs": [], + "source": [ + "del df" + ] + } + ], + "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.4" + }, + "colab": { + "provenance": [], + "include_colab_link": true + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/Assignment 2/Rayeshwar_Assignment2/Assignment_2_Rayeshwar.ipynb b/Assignment 2/Rayeshwar_Assignment2/Assignment_2_Rayeshwar.ipynb new file mode 100644 index 00000000..73540088 --- /dev/null +++ b/Assignment 2/Rayeshwar_Assignment2/Assignment_2_Rayeshwar.ipynb @@ -0,0 +1,216 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "authorship_tag": "ABX9TyNJ0NwmIJaPKkslf5AuXV2U", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Pg-TwyBV-QHh", + "outputId": "6949ef2c-5fcb-4bc1-a8e5-1b7417c9f87e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: yfinance in /usr/local/lib/python3.12/dist-packages (0.2.66)\n", + "Requirement already satisfied: plotly in /usr/local/lib/python3.12/dist-packages (5.24.1)\n", + "Requirement already satisfied: pandas>=1.3.0 in /usr/local/lib/python3.12/dist-packages (from yfinance) (2.2.2)\n", + "Requirement already satisfied: numpy>=1.16.5 in /usr/local/lib/python3.12/dist-packages (from yfinance) (2.0.2)\n", + "Requirement already satisfied: requests>=2.31 in /usr/local/lib/python3.12/dist-packages (from yfinance) (2.32.4)\n", + "Requirement already satisfied: multitasking>=0.0.7 in /usr/local/lib/python3.12/dist-packages (from yfinance) (0.0.12)\n", + "Requirement already satisfied: platformdirs>=2.0.0 in /usr/local/lib/python3.12/dist-packages (from yfinance) (4.5.1)\n", + "Requirement already satisfied: pytz>=2022.5 in /usr/local/lib/python3.12/dist-packages (from yfinance) (2025.2)\n", + "Requirement already satisfied: frozendict>=2.3.4 in /usr/local/lib/python3.12/dist-packages (from yfinance) (2.4.7)\n", + "Requirement already satisfied: peewee>=3.16.2 in /usr/local/lib/python3.12/dist-packages (from yfinance) (3.18.3)\n", + "Requirement already satisfied: beautifulsoup4>=4.11.1 in /usr/local/lib/python3.12/dist-packages (from yfinance) (4.13.5)\n", + "Requirement already satisfied: curl_cffi>=0.7 in /usr/local/lib/python3.12/dist-packages (from yfinance) (0.13.0)\n", + "Requirement already satisfied: protobuf>=3.19.0 in /usr/local/lib/python3.12/dist-packages (from yfinance) (5.29.5)\n", + "Requirement already satisfied: websockets>=13.0 in /usr/local/lib/python3.12/dist-packages (from yfinance) (15.0.1)\n", + "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.12/dist-packages (from plotly) (9.1.2)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.12/dist-packages (from plotly) (25.0)\n", + "Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.12/dist-packages (from beautifulsoup4>=4.11.1->yfinance) (2.8)\n", + "Requirement already satisfied: typing-extensions>=4.0.0 in /usr/local/lib/python3.12/dist-packages (from beautifulsoup4>=4.11.1->yfinance) (4.15.0)\n", + "Requirement already satisfied: cffi>=1.12.0 in /usr/local/lib/python3.12/dist-packages (from curl_cffi>=0.7->yfinance) (2.0.0)\n", + "Requirement already satisfied: certifi>=2024.2.2 in /usr/local/lib/python3.12/dist-packages (from curl_cffi>=0.7->yfinance) (2025.11.12)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.12/dist-packages (from pandas>=1.3.0->yfinance) (2.9.0.post0)\n", + "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.12/dist-packages (from pandas>=1.3.0->yfinance) (2025.2)\n", + "Requirement already satisfied: charset_normalizer<4,>=2 in /usr/local/lib/python3.12/dist-packages (from requests>=2.31->yfinance) (3.4.4)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.12/dist-packages (from requests>=2.31->yfinance) (3.11)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.12/dist-packages (from requests>=2.31->yfinance) (2.5.0)\n", + "Requirement already satisfied: pycparser in /usr/local/lib/python3.12/dist-packages (from cffi>=1.12.0->curl_cffi>=0.7->yfinance) (2.23)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.12/dist-packages (from python-dateutil>=2.8.2->pandas>=1.3.0->yfinance) (1.17.0)\n" + ] + } + ], + "source": [ + "!pip install yfinance plotly" + ] + }, + { + "cell_type": "code", + "source": [ + "\n", + "import yfinance as yf\n", + "import pandas as pd\n", + "\n", + "stock = yf.Ticker(\"AAPL\")\n", + "\n", + "data = stock.history(period=\"6mo\")\n", + "\n", + "data = data.reset_index()\n", + "\n", + "data['Date'] = pd.to_datetime(data['Date']).dt.tz_localize(None)\n", + "\n", + "print(data.head())" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "r35REdYN-zx1", + "outputId": "15ed78c0-92ce-408d-9c98-365beb77ded0" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " Date Open High Low Close Volume \\\n", + "0 2025-06-11 203.072450 204.070349 197.993148 198.362366 60989900 \n", + "1 2025-06-12 198.661736 199.260466 196.945348 198.781479 43904600 \n", + "2 2025-06-13 199.310370 199.949024 195.288838 196.037262 51447300 \n", + "3 2025-06-16 196.885486 198.272565 196.147035 198.003128 43020700 \n", + "4 2025-06-17 196.785678 197.973180 194.799869 195.228958 38856200 \n", + "\n", + " Dividends Stock Splits \n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "\n", + "import plotly.graph_objects as go\n", + "\n", + "fig = go.Figure(data=[go.Candlestick(\n", + " x=data['Date'],\n", + " open=data['Open'],\n", + " high=data['High'],\n", + " low=data['Low'],\n", + " close=data['Close']\n", + ")])\n", + "\n", + "fig.update_layout(\n", + " title='Apple Inc(AAPL) Stock Price - Last 6 Months Data',\n", + " yaxis_title='Stock Price(US Dollar)',\n", + " xaxis_title='Date',\n", + " xaxis_rangeslider_visible=False\n", + ")\n", + "\n", + "fig.show()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 542 + }, + "id": "N6I0ETQr_BvV", + "outputId": "3fed2a78-c022-49e4-e73d-6e8fa91861fb" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "SEPTEMBER 10\n", + "\n", + "\n", + "\n", + "* Bullish Engulfing pattern observed\n", + "* The price went UP immediately after this reversal pattern was observed.\n", + "\n", + "\n" + ], + "metadata": { + "id": "_Z1WpK_xDut2" + } + } + ] +} diff --git a/Assignment 3/Rayeshwar_Assignment_3/Assignment_3.py b/Assignment 3/Rayeshwar_Assignment_3/Assignment_3.py new file mode 100644 index 00000000..94846943 --- /dev/null +++ b/Assignment 3/Rayeshwar_Assignment_3/Assignment_3.py @@ -0,0 +1,70 @@ + +import tensorflow as tf +from tensorflow.keras import layers, models +from tensorflow.keras.preprocessing.image import ImageDataGenerator +import matplotlib.pyplot as plt +import numpy as np + +train_dir = r"C:\Users\USER\Desktop\QUANTVISION\archive\train" +test_dir = r"C:\Users\USER\Desktop\QUANTVISION\archive\test" + +IMG_SIZE = (128, 128) +BATCH_SIZE = 32 +train_datagen = ImageDataGenerator( + rescale=1./255, + rotation_range=10, + width_shift_range=0.1, + height_shift_range=0.1, + zoom_range=0.1, + brightness_range=[0.8, 1.2] +) +test_datagen = ImageDataGenerator(rescale=1./255) +train_generator = train_datagen.flow_from_directory( + train_dir, + target_size=IMG_SIZE, + batch_size=BATCH_SIZE, + class_mode="binary" +) +test_generator = test_datagen.flow_from_directory( + test_dir, + target_size=IMG_SIZE, + batch_size=BATCH_SIZE, + class_mode="binary" +) +model = models.Sequential() +model.add(layers.Conv2D(32, (3,3), activation='relu', input_shape=(128,128,3))) +model.add(layers.MaxPooling2D(2,2)) +model.add(layers.Conv2D(64, (3,3), activation='relu')) +model.add(layers.MaxPooling2D(2,2)) +model.add(layers.Conv2D(128, (3,3), activation='relu')) +model.add(layers.MaxPooling2D(2,2)) +model.add(layers.Flatten()) +model.add(layers.Dense(128, activation='relu')) +model.add(layers.Dropout(0.5)) +model.add(layers.Dense(1, activation='sigmoid')) +model.compile( + optimizer='adam', + loss='binary_crossentropy', + metrics=['accuracy'] +) +history = model.fit( + train_generator, + epochs=20, + validation_data=test_generator +) +plt.plot(history.history['accuracy'], label='Train Accuracy') +plt.plot(history.history['val_accuracy'], label='Validation Accuracy') +plt.legend() +plt.xlabel('Epochs') +plt.ylabel('Accuracy') +plt.title('Training vs Validation Accuracy') +plt.show() +plt.plot(history.history['loss'], label='Train Loss') +plt.plot(history.history['val_loss'], label='Validation Loss') +plt.legend() +plt.xlabel('Epochs') +plt.ylabel('Loss') +plt.title('Training vs Validation Loss') +plt.show() + + diff --git a/Assignment 4/Rayeshwar_Assignment4,.py b/Assignment 4/Rayeshwar_Assignment4,.py new file mode 100644 index 00000000..4690d301 --- /dev/null +++ b/Assignment 4/Rayeshwar_Assignment4,.py @@ -0,0 +1,216 @@ +import os +import yfinance as yf +import numpy as np +import pandas as pd +import mplfinance as mpf +import tensorflow as tf +from tensorflow.keras import layers, models, preprocessing +from tensorflow.keras.callbacks import EarlyStopping +from sklearn.metrics import classification_report, confusion_matrix + +# ========================================== +# CONFIG +# ========================================== + +TICKERS = ["RELIANCE.NS", "HDFCBANK.NS", "AAPL", "SBIN.NS", "ABFRL.NS"] +DATA_DIR = "trading_dataset" +IMG_SIZE = (100,100) +WINDOW_SIZE = 20 +STEP_SIZE = 5 + +# ========================================== +# STRICT DATA CLEANER ✅ +# ========================================== + +def normalize_ohlcv(df): + """ + Force dataframe into mplfinance-safe numeric OHLCV format + """ + + # flatten multiindex columns if present + if isinstance(df.columns, pd.MultiIndex): + df.columns = df.columns.get_level_values(0) + + needed = ['Open','High','Low','Close','Volume'] + df = df[needed].copy() + + # force numeric conversion safely + for col in needed: + df[col] = pd.to_numeric(df[col], errors='coerce') + + df = df.dropna() + + # ensure float dtype + df = df.astype(float) + + return df + +# ========================================== +# IMAGE GENERATION +# ========================================== + +def generate_images(): + + print("STEP 1 — Generating candlestick images") + + for label in ['Hammer','Doji','No_Pattern']: + os.makedirs(f"{DATA_DIR}/{label}", exist_ok=True) + + for ticker in TICKERS: + + print("Downloading:", ticker) + df = yf.download(ticker, period="2y", interval="1d", progress=False) + + if df is None or len(df) < WINDOW_SIZE+5: + print("Not enough data — skip") + continue + + df = normalize_ohlcv(df) + + for i in range(0, len(df)-WINDOW_SIZE, STEP_SIZE): + + window = df.iloc[i:i+WINDOW_SIZE] + + if len(window) != WINDOW_SIZE: + continue + + last = window.iloc[-1] + + O = last['Open'] + H = last['High'] + L = last['Low'] + C = last['Close'] + + candle_range = H - L + if candle_range <= 0: + continue + + body = abs(O-C) + lower_wick = min(O,C) - L + upper_wick = H - max(O,C) + + label = "No_Pattern" + + if body > 0 and lower_wick > 2*body and upper_wick < body: + label = "Hammer" + elif body <= 0.05*candle_range: + label = "Doji" + + img_path = f"{DATA_DIR}/{label}/{ticker}_{i}.png" + + if not os.path.exists(img_path): + try: + mpf.plot( + window, + type='candle', + style='charles', + volume=True, + axisoff=True, + savefig=dict(fname=img_path, dpi=60), + closefig=True + ) + except Exception as e: + print("Plot skipped:", e) + + print("Image generation done") + +# ========================================== +# MODEL +# ========================================== + +def build_and_train(): + + print("STEP 2 — Training CNN") + + datagen = preprocessing.image.ImageDataGenerator( + rescale=1./255, + validation_split=0.2 + ) + + train_gen = datagen.flow_from_directory( + DATA_DIR, + target_size=IMG_SIZE, + batch_size=32, + subset='training', + shuffle=True + ) + + val_gen = datagen.flow_from_directory( + DATA_DIR, + target_size=IMG_SIZE, + batch_size=32, + subset='validation', + shuffle=False + ) + + model = models.Sequential([ + layers.Conv2D(32,(3,3),activation='relu',input_shape=(100,100,3)), + layers.MaxPooling2D(2,2), + + layers.Conv2D(64,(3,3),activation='relu'), + layers.MaxPooling2D(2,2), + + layers.Conv2D(128,(3,3),activation='relu'), + layers.MaxPooling2D(2,2), + + layers.Flatten(), + layers.Dense(128,activation='relu'), + layers.Dropout(0.3), + layers.Dense(3,activation='softmax') + ]) + + model.compile( + optimizer='adam', + loss='categorical_crossentropy', + metrics=['accuracy'] + ) + + counts = np.bincount(train_gen.classes) + total = np.sum(counts) + class_weights = {i: total/(len(counts)*c) for i,c in enumerate(counts)} + + es = EarlyStopping(patience=3, restore_best_weights=True) + + model.fit( + train_gen, + validation_data=val_gen, + epochs=20, + callbacks=[es], + class_weight=class_weights + ) + + model.save("candlestick_model.h5") + print("Model saved") + + return model, val_gen + +# ========================================== +# EVALUATION +# ========================================== + +def evaluate_model(model, val_gen): + + print("STEP 3 — Evaluation") + + preds = model.predict(val_gen) + y_pred = np.argmax(preds, axis=1) + y_true = val_gen.classes + + print("\nClassification Report") + print(classification_report(y_true, y_pred, + target_names=list(val_gen.class_indices.keys()))) + + print("\nConfusion Matrix") + print(confusion_matrix(y_true, y_pred)) + + acc = np.mean(y_pred == y_true) + print("\nAccuracy:", acc) + +# ========================================== +# MAIN +# ========================================== + +if __name__ == "__main__": + generate_images() + model, val_data = build_and_train() + evaluate_model(model, val_data) diff --git a/MidEval Code/Rayeshwar_Mideval/Rayeshwar/MIDEVAL.py b/MidEval Code/Rayeshwar_Mideval/Rayeshwar/MIDEVAL.py new file mode 100644 index 00000000..a70faf12 --- /dev/null +++ b/MidEval Code/Rayeshwar_Mideval/Rayeshwar/MIDEVAL.py @@ -0,0 +1,82 @@ +import pandas as pd +import numpy as np + +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import LabelEncoder, StandardScaler +from sklearn.linear_model import LogisticRegression +from sklearn.neural_network import MLPClassifier +from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix + +# dataset +data = pd.read_csv("quantvision_financial_dataset_200.csv") + +# Separate features and target +X = data.drop("future_trend", axis=1) +y = data["future_trend"] + +#Convert Words to Numbers +label_encoder = LabelEncoder() +X["asset_type"] = label_encoder.fit_transform(X["asset_type"]) +X["market_regime"] = label_encoder.fit_transform(X["market_regime"]) + +# Scale features +scaler = StandardScaler() +X_scaled = scaler.fit_transform(X) + +# Train-test split +X_train, X_test, y_train, y_test = train_test_split( + X_scaled, y, test_size=0.2, random_state=42 +) + +# Logistic Regression +log_model = LogisticRegression() +log_model.fit(X_train, y_train) +log_pred = log_model.predict(X_test) + +# Neural Network +nn_model = MLPClassifier( + hidden_layer_sizes=(64, 32), + activation="relu", + max_iter=500, + random_state=42 +) +nn_model.fit(X_train, y_train) +nn_pred = nn_model.predict(X_test) + +# Evaluation +def evaluate_model(name, y_true, y_pred): + print(f"\n{name} Performance:") + print("Accuracy:", accuracy_score(y_true, y_pred)) + print("Precision:", precision_score(y_true, y_pred)) + print("Recall:", recall_score(y_true, y_pred)) + print("F1 Score:", f1_score(y_true, y_pred)) + print("Confusion Matrix:\n", confusion_matrix(y_true, y_pred)) + +# Evaluate +evaluate_model("Logistic Regression", y_test, log_pred) +evaluate_model("Neural Network", y_test, nn_pred) + +def get_metrics(y_true, y_pred): + return { + "accuracy": accuracy_score(y_true, y_pred), + "precision": precision_score(y_true, y_pred), + "recall": recall_score(y_true, y_pred), + "f1_score": f1_score(y_true, y_pred) + } +log_metrics = get_metrics(y_test, log_pred) +nn_metrics = get_metrics(y_test, nn_pred) + + +comparison = pd.DataFrame([ + {"model": "logmodel", **log_metrics}, + {"model": "nn_model", **nn_metrics} +]) + +print(comparison) +if nn_metrics["f1_score"] > log_metrics["f1_score"]: + print("Neuralnetwork model wins") +else: + print("Logistic regression model wins") + + +