{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 5 lesser-known pandas tricks - part 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is part 2 of the 5 lesser-known pandas tricks series, where I show 5 pandas tricks that will help you boost your productivity.\n", "This part is more focused on the Exploratory Data Analysis, which is an approach to analyzing data sets to summarize their main characteristics, often with visual methods.\n", "\n", "In case you've missed [5 lesser-known pandas tricks part 1](https://towardsdatascience.com/5-lesser-known-pandas-tricks-e8ab1dd21431)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from platform import python_version\n", "\n", "import matplotlib as mpl\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "python version==3.7.3\n", "pandas==0.25.0\n", "matplotlib==3.0.3\n" ] } ], "source": [ "print(\"python version==%s\" % python_version())\n", "print(\"pandas==%s\" % pd.__version__)\n", "print(\"matplotlib==%s\" % mpl.__version__)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "pd.np.random.seed(42)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create a pandas DataFrame with 5 columns and 1000 rows:\n", "- a1 and a2 have random samples drawn from a normal (Gaussian) distribution,\n", "- a3 has randomly distributed integers from a set of (0, 1, 2, 3, 4),\n", "- y1 has numbers spaced evenly on a log scale from 0 to 1,\n", "- y2 has randomly distributed integers from a set of (0, 1)." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "mu1, sigma1 = 0, 0.1\n", "mu2, sigma2 = 0.2, 0.2\n", "n = 1000\n", "\n", "df = pd.DataFrame(\n", " {\n", " \"a1\": pd.np.random.normal(mu1, sigma1, n),\n", " \"a2\": pd.np.random.normal(mu2, sigma2, n),\n", " \"a3\": pd.np.random.randint(0, 5, n),\n", " \"y1\": pd.np.logspace(0, 1, num=n),\n", " \"y2\": pd.np.random.randint(0, 2, n),\n", " }\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Readers with Machine Learning background will recognize the notation where a1, a2 and a3 represent attributes and y1 and y2 represent target variables.\n", "In short, Machine Learning algorithms try to find patterns in the attributes and use them to predict the unseen target variable - but this is not the main focus of this blog post.\n", "The reason that we have two target variables (y1 and y2) in the DataFrame (one binary and one continuous) is to make examples easier to follow." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We reset the index, which adds the index column to the DataFrame to enumerates the rows." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "df.reset_index(inplace=True)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "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", "
indexa1a2a3y1y2
000.0496710.47987121.0000001
11-0.0138260.38492721.0023080
220.0647690.21192621.0046200
330.1523030.07061331.0069390
44-0.0234150.33964541.0092620
\n", "
" ], "text/plain": [ " index a1 a2 a3 y1 y2\n", "0 0 0.049671 0.479871 2 1.000000 1\n", "1 1 -0.013826 0.384927 2 1.002308 0\n", "2 2 0.064769 0.211926 2 1.004620 0\n", "3 3 0.152303 0.070613 3 1.006939 0\n", "4 4 -0.023415 0.339645 4 1.009262 0" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Plot Customizations\n", "\n", "When I first started working with pandas, the plotting functionality seemed clunky.\n", "I was so wrong on this one because pandas exposes full matplotlib functionality." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.1 Customize axes on the output" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pandas plot function returns matplotlib.axes.Axes or numpy.ndarray of them so we can additionally customize our plots.\n", "In the example below, we add a horizontal and a vertical red line to pandas line plot.\n", "This is useful if we need to: \n", "- add the average line to a histogram,\n", "- mark an important point on the plot, etc." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAD8CAYAAACb4nSYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl4FFW+//H3ISSEEEgCiUBC2CGybxERHUTBHcYFBZ3rgjqDwjjKXLyOOs5P7+hV544ojndccB/cQFxGEDdQ3FA0Yd9CQthCCAkQkpAQsp3fH93sKpB0qjpdn9fz1FPdVd1d31SKD5XTp04Zay0iIuINjdwuQEREnKPQFxHxEIW+iIiHKPRFRDxEoS8i4iEKfRERD1Hoi4h4iEJfRMRDFPoiIh7S2MmNxcfH244dOzq5SREJRhkZvnlKirt1NBDp6ek7rbUJgfgsR0O/Y8eOpKWlOblJEQlGw4f75gsXullFg2GM2Ryoz1LzjoiIhzh6pi8iAsB997ldgWcp9EXEeSNHul2BZ6l5R0Sct2yZbxLH6UxfRJw3ebJvri9yHXfcM31jzEvGmHxjzKrDlrU0xnxmjMn0z+Pqt0wREQmEE2neeQW48KhldwMLrLXdgAX+5yIiEuSOG/rW2q+A3UctvhR41f/4VeCyANclIuJ51TWWB+euCehn1vaL3NbW2u3+x3lA6597oTFmgjEmzRiTVlBQUMvNiYh4z0vfbOTFbzYG9DPr/EWutdYaY3727urW2unAdIDU1FTdhV1E4OGH3a4g6GXl7+Xvn2ZwXs/WvBDAz63tmf4OY0xbAP88P3AliUjIGzrUN8lPqqquYcrby2kWEcbDl/cJ6GfXNvQ/AG7wP74B+HdgyhERT1i0yDfJT3r+640s37qHv17am4TmTQL62cdt3jHGvAkMB+KNMTnA/cCjwCxjzM3AZmBsQKsSkdB2772+ufrpH2P9jhKe+Gw9F/Vuw6i+bQP++ccNfWvtNT+zakSAaxER8bSq6hrufHs50ZGNefCy3hhjAr4NXZErIhIk/u+LLFbkFPH0fwwkPjqwzToHaOwdEZEgsGzrHp76PIvLByRxcZ/AN+scoNAXEXFZWUUVf5y5jNbNm/DAr3vV67bUvCMizps2ze0Kgsoj89axcWcpb/zudGKahtfrthT6IuK8/v3driBofJGRz4zvN/PbszoxtEt8vW9PzTsi4rz5832Tx+0ureCu2Svo3jqaOy9w5ibxOtMXEec99JBv7uE7aFlruffdlewpq+DVGwcTGR7myHZ1pi8i4oJ3l2zj49V5TDk/hZ6JLRzbrkJfRMRhOYVl3P/BagZ3bMnvftXZ0W0r9EVEHFRVXcMfZ/ruDzx1bD/CGgX+qttfojZ9EREHPfV5Fj9uKmTauP4kt4xyfPsKfRFx3nPPuV2BKxZn7+KpzzO5YmASlw1IcqUGhb6IOC/Fme6JwWRPWQWTZy6jfcso/nppb9fqUOiLiPPmzPHNR492tw6HWGu5a/YKdu7dz7sTzyS6iXvRq9AXEedNneqbeyT0X1u8hU/X7OC+S3rQp12Mq7Wo946ISD1al1fMg3PXcHb3BG46s5Pb5Sj0RUTqy76Kam5/cyktIsN57Kp+NHK4e+ZPUfOOiEg9eejDNazfsZd/3TQ44Pe6rS2d6YuI1IMPlufy+uIt3DKsM8O6J7hdzkE60xcR582Y4XYF9Sorfy93v7OC1A5xjo2eeaIU+iLivORktyuoN/sqqvn960uIDA/jqd8MIDwsuBpUFPoi4ryZM33zcePcraMe/OXfq1ifX8KrNw6mbUxTt8s5hkJfRJz3zDO+eYiF/qy0rcxOz+H2Ed2Cqh3/cMH1d4eISAO1dnsxf3l/FUO7tOKOEd3cLudnKfRFROqopLySSa8vIaZpOE9ePcDx4ZJPhpp3RETqwFrLPe+uZPOuUt783ZCg6Y//c3SmLyJSBy9/u4m5K7Yz5fwUTu/cyu1yjktn+iLivNmz3a4gIL7P3sX/zFvLyB6tmXh2F7fLOSEKfRFxXny82xXU2faifdz2xhI6tIzi8XHBMa7OiVDoi4jzXnnFNx8/3s0qam1/VTW3vraEfRXVvDVhCC0iw90u6YQp9EXEeQ089O//92qWb93Ds9cOpOspzd0u56Toi1wRkZPwxuItvPXjViYN78KFvdu6Xc5JU+iLiJygJVsKuf+DVQzrnsCU84NrILUTpdAXETkBBSX7mfTaEtrERPKPq/sH9QVYv0Rt+iIix7G/qpqJr6WzZ18F7048k9ioCLdLqrU6hb4x5o/AbwELrARutNaWB6IwEQlh8+a5XcEJs9Zy33urSNtcyP/9ZgA9E1u4XVKd1Lp5xxiTBNwOpFprewNhwNWBKkxEQlhUlG9qAF74eiNv+0fOHNU30e1y6qyubfqNgabGmMZAFJBb95JEJOQ9/bRvCnJfrMvn4Y/WcnGfNkwO4pEzT0atQ99auw14DNgCbAeKrLWfHv06Y8wEY0yaMSatoKCg9pWKSOiYNcs3BbHMHSX84c2l9GzbgseuajhX3B5PXZp34oBLgU5AItDMGHPt0a+z1k631qZaa1MTEoLzpgIiIocrLK3g5lfTiAwP4/nrU4mKCJ0+L3Vp3hkJbLTWFlhrK4F3gaGBKUtExB0VVTVMfD2dvOJypl8/iMTY4LvlYV3UJfS3AEOMMVHGGAOMANYGpiwREedZa3lgzmq+z97N38b0YWD7OLdLCri6tOkvBmYDS/B112wETA9QXSIijnvh6428sXgLt57dhcsHtHO7nHpRp4Yqa+39wP0BqkVEvGLhQrcrOMZHK7fzP/N8PXXuuqBhDrFwIjQMg4h43pIthUyeuYyB7WN5fGz/kOmp81MU+iLivMce801BYMuuMn73ahqtW0Ty/PWpRIaHuV1SvVLoi4jz5s71TS7bU1bB+Fd+oKrG8vKNp9EqOrhvah4ICn0R8aT9VdVMmJFOzu59TL9uEF0Sot0uyRGhc8WBiMgJstZy1+wV/LBxN09e3Z/TO7dyuyTH6ExfRDzn759k8O9ludx5fncu7Z/kdjmO0pm+iDivqXtXub70zUaeXriBawa35/fndHWtDrco9EXEeR995MpmP1iey1/nruGCXq156LLe+AYT8BY174iIJ3ydWcCUWcsY3KklT149oMHe7rCuFPoi4rwHH/RNDlmRs4dbZ6TTJSHaE33xf4lCX0Sct2CBb3LAxp2l3Pjyj8RGRfDqTYOJaRruyHaDlUJfREJWfkk517+0GAvMuHkwrVtEul2S6xT6IhKSivZVMv6lH9m1t4KXxp9GZ49cfHU8Cn0RCTml+6u48eUfyMwv4ZlrB9E/OdbtkoKGumyKiPNa1d8VsOWV1UyYkcayrXv4528GcnZ33ab1cAp9EXHeO+/Uy8dWVtdw2xtL+DZrF1Ov6sdFfdrWy3YaMjXviEhIqK6x/Oes5cxfm8+Dl/ZizKDQvPNVXSn0RcR599zjmwLEWsuf31vJnOW5/OnCU7nujI4B++xQo+YdEXHed98F7KOstTw4dy1v/biV287pysThXQL22aFIZ/oi0qA9/tl6Xvp2I+OHdmTK+d3dLifoKfRFpMGaNn89T32exdjUdvy/UT09OYDayVLoi0iD9OT8TKbNz+TKQe149Iq+IX0z80BSm76IOK9d3XrWPLUgkyfmr+eKgUn8bYwC/2Qo9EXEea+9Vuu3/vOLLKZ+tp7LByTx9yv7eXaI5NpS846INBhPL8zi759kcFn/RB67SoFfGwp9EXHe5Mm+6SQ8++UG/vfjDC7tn8jUsf0V+LWk5h0Rcd6yZSf18mcWbuBvH69jdL9EpuoMv04U+iIStKy1PDE/k38syOTX/RJ5fGw/GoepgaIuFPoiEpSstTz60Tqe+yqbqwa149ExfXWGHwAKfREJOjU1lgfmrOZf323m+jM68MDoXuqWGSAKfRFxXvefHy6husZyz7srmJWWw4RhnbnnolN1pW0AKfRFxHnTp//k4srqGqbMWs4Hy3O5fUQ3/jiymwI/wBT6IhIU9ldVc/ubS/lk9Q7uujCFScO7ul1SSFLoi4jzJkzwzf1n/Hv3V3HLjDS+zdrF/xvVk5vO6uRicaGtTqFvjIkFXgB6Axa4yVobuIGyRSQ0rV9/8OGuvfu58ZUfWZ1bzNSr+umOV/Wsrmf6TwIfW2uvNMZEAFEBqElEPGLbnn1c9+JithXu47lrBzGyZ2u3Swp5tQ59Y0wMMAwYD2CtrQAqAlOWiIS6sopqxjy9iNKKKl777emc1rGl2yV5Ql3O9DsBBcDLxph+QDpwh7W29GffkZEBw4cfuWzsWJg0CcrK4OKLj33P+PG+aedOuPLKY9dPnAjjxsHWrXDddceunzIFRo/2bfuWW45df999MHKk77LwnxoL5OGHYehQWLQI7r332PXTpkH//jB/Pjz00LHrn3sOUlJgzhyYOvXY9TNmQHIyzJwJzzxz7PrZsyE+Hl55xTcdbd48iIqCp5+GWbOOXb9woW/+2GMwd+6R65o2hY8+8j1+8EFYsODI9a1awTvv+B7fc8+xt7hr1+7QaImTJx97aX337od6aUyYcMSf9IBvv02b5nt87bWQk3Pk+jPOgEce8T0eMwZ27Tpy/YgR8Je/+B5fdBHs23fk+lGj4M47fY+PPu5Ax56Lx17VsuWsjm1PtbV8XvY1CeMfOfK9OvZ++dirg7pcz9wYGAg8Y60dAJQCdx/9ImPMBGNMmjEmrbKysg6bE5FQsKeskjwi2JTclXcnDiWheRO3S/IUY62t3RuNaQN8b63t6H/+K+Bua+0lP/ee1NRUm5aWVqvtiUjD9056Dn96ZwXdWzfn1ZsGK/BPkDEm3VqbGojPqvWZvrU2D9hqjEnxLxoBrAlEUSISWqy1PDk/kylvL2dwp5a8dcsQBb5L6tp75w/A6/6eO9nAjXUvSURCSWV1DX9+byWz0nK4YmASj17Rl4jx1/tW1uEOWlI7dQp9a+0yICB/cohI6Ckpr2TS60v4OnPnkcMqHP3FqThGV+SKSL3IKypn/Ms/kJW/l/8d05expyW7XZKg0BeRerAur5gbX/6R4n2VvDT+NIZ1T3C7JPFT6ItIQC3MyOcPbywlqkkYs249g16JMW6XJIdR6ItIQFhrefnbTTz04RpS2rTgxRtSSYxt+tMvPuMMZ4uTgxT6IlJnFVU13P/BKt78YSvn92zNE+P606zJL8TLI4/8/DqpVwp9EamTwtIKbn0tncUbd/P7c7ow5bwU3dowiCn0RaTWMneUcPOraeQVlzNtXH8uG5B0Ym8cM8Y3PzC+jjhGoS8itfJFRj63v7GUJuFhvDVhCAPbx534m48ewEwco9AXkZNirWX6V9n87eN1nNqmBS/80he2EnQU+iJywkr3V3HX7BV8uHI7l/Rpy9+v6ktUhGKkIdFvS0ROyMadpdwyI42s/L3cc9GpTBjW2TekgjQoCn0ROa4Fa3cweeYyGjcy/Oum0zmrW3zdPnDEiMAUJidNoS8iP6umxvLU51k8MX89vRJb8Oy1g0huGYBbYR+465Q4TqEvIj+paF8lU2YtZ/7aHVwxIImHr+hDZHiY22VJHSn0ReQYK3OKmPRGOtv3lPPA6J7cMLRjYNvvL7rINz9wj2ZxjEJfRA6y1jLj+808NHct8dERzLzlDAZ1OIn+9yfq6BuJi2MU+iIC+G54cve7K/lwxXbOSUng8bH9iWsW4XZZEmAKfRFhdW4Rt72xlC27y/jThadyy7DOGj8nRCn0RTzMWsubP2zlgTmriYsK583fDWFwp5ZulyX1SKEv4lHF5ZXc994qPliey6+6xfPEuP7ERzdxZuOjRjmzHTmGQl/Eg9I37+aOt5axvaicO8/vzqThXZ1tzrnzTue2JUdQ6It4SFV1Df/8YgP/+DyTxNhI3r71jJMbHVMaPIW+iEfkFJbxx5nL+HFTIZcPSOKvl/aieWS4O8UMH+6bL1zozvY9TKEv4gFzludy73srsRaeGNePywe0c7skcYlCXySElZRX8t9z1jA7PYcB7WN5ctwA2rcKwNg50mAp9EVC1KKsnfzX7BVsL9rHH87tyu0juhEe1sjtssRlCn2RELOvopq/fbyOVxZtolN8M96+dWj9DKUgDZJCXySELNlSyJ2zlpO9s5TxQzvypwtPpWlEEI6MOXas2xV4lkJfJATsr6rmyfmZPPvlBtrGNOWN357O0K51vNFJfZo0ye0KPEuhL9LArc4tYsqs5azLK2FcajL3jerhXlfME1VW5ptH6Utlpyn0RRqo8spqnvo8k+e+zCauWQQv3pDKiB6t3S7rxFx8sW+ufvqOU+iLNEA/btrNn95ZQXZBKWMGtuMvo3oQG6VhkOX4FPoiDUhJeSX/+3EGM77fTLu4pvzrpsEM657gdlnSgCj0RRqIL9bl8+f3VrK9uJybzuzElPO706yJ/gnLydERIxLkdu3dz4Nz1/D+sly6nRLNOxOHapA0qbU6h74xJgxIA7ZZazVItkiA1NRYZqZt5dGP1lFWUcUdI7ox6ZwuNGkchP3uT9b48W5X4FmBONO/A1gLtAjAZ4kIvm6Y972/iqVb9nB6p5Y8dFlvurVu7nZZgaPQd02dQt8Y0w64BPgf4D8DUpGIh+3dX8Xjn67nlUUbiYuKYOpV/bhiYBLGhNj9anfu9M3jg/gCshBV1zP9acBdQAidgog4z1rLvJV5/HXuavJL9vObwe2564JTiYkK8ousauvKK31z9dN3XK1D3xgzCsi31qYbY4b/wusmABMA2rdvX9vNiYSsDQV7+e85a/hqfQG9Elvw7LWDGKAvaqWe1OVM/0zg18aYi4FIoIUx5jVr7bWHv8haOx2YDpCammrrsD2RkFJcXsk/5mfyyqJNRIaHcf/onlw3pAONNfyx1KNah7619h7gHgD/mf6dRwe+iByrusYyO30rf/8kg12lFYwdlMydF6SQ0LyJ26WJB6ifvoiD0jbt5oE5q1m1rZjUDnG8PH4wfdrFuF2WeEhAQt9auxBYGIjPEglF24v28ci8dXywPJc2LSJ58ur+/LpfYuj1yjlREye6XYFn6UxfpB7t3V/F9K+yef6rbKqt5fZzu3Lr8C5ERXj8n964cW5X4FkeP/JE6kdldQ0zf9zKtPmZ7Ny7n0v6tuXuC08luaXGjwdg61bfPDnZ3To8SKEvEkDWWj5bs4NHP15HdkEpgzu25Pnr1QXzGNdd55urn77jFPoiAbJ0SyGPzFvHD5t20yWhGc9fn8rIHqd4t91egpJCX6SOsgv2MvWz9Xy4Yjvx0RE8dFlvrj4tWf3tJSgp9EVqKaewjH8syOSdJduICGvE7SO6MWFYZ6I1xr0EMR2dIicpv7icf36RxRs/bMFguP6MDkwa3lUXV0mDoNAXOUGFpRU8++UGXv1uE5XVlrGp7fjDud1IjG3qdmkNz5QpblfgWQp9keMoKa/kxW828sLXGymtqOLSfolMHtmdjvHN3C6t4Ro92u0KPEuhL/IzisoqeXnRRl76ZiPF5VVc2KsN/3l+d7qH0s1M3JKR4ZunpLhbhwcp9EWOsru0ghe/yeZfizZTsr+K83q25vZzu2mMnEC65RbfXP30HafQF/ErKNnPC19nM+P7zeyrrOai3m247Zxu9EzUnUAldCj0xfN2FJfz7JcbePOHLVRU1TC6XyK3ndM1tO5JK+Kn0BfPyi7Yy/Nfb+SdJTlU11guH5DEpOFd6JwQ7XZpIvVGoS+es3RLIc99mc0na/IID2vEmIHtmHh2F9q30mBoEvoU+uIJNTWWhevzefbLbH7YuJsWkY35/fCu3DC0oy6qcsN997ldgWcp9CWkVVTV8MHyXKZ/tYH1O/bSNiaS+y7pwdWD22u4BDeNHOl2BZ6lo15CUmFpBW/8sIUZ320mr7iclNbNeXxsP0b3SyRcA6G5b9ky37x/f3fr8CCFvoSUjLwSXv52I+8t3cb+qhrO7NqKR8b0YXj3BA1xHEwmT/bN1U/fcQp9afCqayyfr8vn5W83smjDLpo0bsQVA5MYP7QTKW3U7VLkcAp9abBKyiuZlZbDq4s2sWV3GW1jIrnrwhSuOa09cc0i3C5PJCgp9KXBWZNbzOuLN/P+0m2UVlQzqEMcd12YwgW92qi9XuQ4FPrSIJRXVvPhiu28vngzS7bsoUnjRozqm8gNQzvQt12s2+WJNBgKfQlqGwr28sbiLcxOz6FoXyWdE5rxl1E9GTMwidgoNeE0WA8/7HYFnqXQl6BTUVXDZ2t28Nr3m/kuexfhYYYLerXhP07vwJDOLdULJxQMHep2BZ6l0JegsS6vmFk/5vD+sm3sLq2gXVxT/uuCFMamJuuq2VCzaJFvrvB3nEJfXFVUVskHy7cxKy2HlduKCA8znNezNVelJjOsWwJhjXRWH5Luvdc3Vz99xyn0xXHVNZZFG3YyKy2HT1bnUVFVQ4+2Lbh/dE8u7Z9ES3W3FKk3Cn1xTHbBXt5fuo3Z6TnkFpUT0zSca05L5qrUZHon6a5UIk5Q6Eu9KijZz5zlufx72TaW5xRhDPyqWwL3XtKDkT1aExke5naJIp6i0JeAK91fxSer83h/WS7fZu2kusbSK7EFf764B6P7JdImJtLtEkU8S6EvAVFZXcPXmQW8vzSXT9fkUV5ZQ7u4ptx6dmcu65+kWw/KkaZNc7sCz1LoS61VVdfwXfYuPlyxnU9W51FYVklsVDhjBrbj8gFJDOoQpz718tM0pLJrFPpyUiqra/huwy7mrTwU9M0iwhjZszWj+iZydvcEIhpr/Bs5jvnzfXPdTMVxCn05rl8K+ov7tOXs7gn6QlZOzkMP+eYKfcfVOvSNMcnAv4DWgAWmW2ufDFRh4q7yymq+zdrJp6t38OmaI4P+kj5tGaagF2mQ6nKmXwVMsdYuMcY0B9KNMZ9Za9cEqDZxWGFpBZ+vy+ezNTv4KrOAsopqops0ZkSPUxT0IiGi1qFvrd0ObPc/LjHGrAWSAIV+A7J1dxmfrfGdzf+4qZDqGkubFpFcMTCJ83u2YUjnVmqjFwkhAWnTN8Z0BAYAiwPxeVJ/amosK7cVsWBdPp+uzmNdXgkA3VtHM/HsLpzXszV9kmJopDFvREJSnUPfGBMNvANMttYW/8T6CcAEgPbt29d1c1ILRWWVfJVZwBcZ+XyZUcCu0goaGUjt0JI/X9yD83q2pmN8M7fLFC957jm3K/AsY62t/ZuNCQfmAp9Yax8/3utTU1NtWlparbcnJ8Zay9rtJXyRkc/CjHzSNxdSYyE2KpyzuydwTsopDOueoIHNRBoIY0y6tTY1EJ9Vl947BngRWHsigS/1q2hfJd9t2MnCDN8Z/Y7i/QD0SYrh9+d0ZXjKKfRPjtVQxRIc5szxzUePdrcOD6pL886ZwHXASmPMMv+ye6218+pelhxPRVUNS7YU8k3mTr7J2smKnD3UWGjepDHDuicwPCWBs1MSOKW5xrmRIDR1qm+u0HdcXXrvfAPotNEh1loydpQcDPnF2bvZV1lNWCNDv3Yx3HZuN87qGs+A9rGEh6m3jYj8NF2RG8S27i7j++xdfJu1k2+ydrFzr6/JpnNCM8amtuPMrvEM6dKKFpHhLlcqIg2FQj9IWGvZunsf32/cxffZu1icvZtte/YB0KpZBGd2jeesbvGc1TWexNimLlcrIg2VQt8l1lo27/KdyS/euJvF2bvILSoHoGWzCE7v1JLf/aoTp3duRUrr5uo3LyIBodB3SE2NJTN/L2mbd/PDxt18n73rYA+b+OgITu/Uils7t2RI51Z0TYhWyEtomzHD7Qo8S6FfT0r3V7F86x7SNheSvrmQJVsKKSmvAiCheRNO7+QL+CGdW9IlIVrjzou3JCe7XYFnKfQDZNuefaRvLiR9027StxSydnsJ1TUWY6D7Kc0Z1TeRQR3iSO0QR4dWUQp58baZM33zcePcrcODFPq1ULq/ilXbilies4flW4tYsqWQ7f72+KiIMPonxzJpeBcGdYhjQPs4Ypqqd43IEZ55xjdX6DtOoX8cldU1ZOSVsGzrHlb4Qz4zv4Qa/+gVSbFNSe3YkkHtY0nt2JJT2zSnsfrJi0iQUugfpqbGsmlX6cEz+OU5e1idW0xFVQ0AcVHh9EuO5cLebeiXHEPfdrHERzdxuWoRkRPn2dCvrK4hK38vq3OLWZ1bxOrcYtbmFlOy3/dla9PwMPokxXD9kA70S46lf3Is7eKaqi1eRBo0T4T+vopq1uYVszq3mDW5RazaVkzGjpKDZ/CR4Y3o0bYFlw5IpHdiDP2SY+l2SrSaaUQk5IRU6Ftr2VG8n3V5xWTklbB2ezGrcovJLth7sA0+pmk4vZNaMH5oR3oltqBXYgs6xUdr9EkRJ82e7XYFntVgQ79oXyXrd5SQkXfYtKOEon2VB1/TNiaSXoktuLhP24MBnxSrJhoR18XHu12BZwV96JdXVpNdUErGjmLW5ZWw3h/wB4YsAN9wwiltmnNJ37ac2qY5Ka2bk9KmObFRukmISFB65RXffPx4N6vwpKAJ/aKySrIKStiQX0pWwV6y8veyoWAvW3eXHWyaCQ8zdEmIZnCnlnRv09wX8G1akBgTqbN3kYZEoe8ax0M/d8++g4GelX8g3EsPDhsMENG4EZ3jm9E7KYZL+yfR9ZRoTm3TnE7xzTRWvIhIHTga+qtzixn66OcHn7eIbEzXU6I599QEuiRE0/UU39QuLkpfrIqI1ANHQz8uKpwHL+tNV3/Ax0dHqFlGRMRBjoZ+YmxTrhvSwclNiojIYYLmi1wR8ZB589yuwLMU+iLivKgotyvwLHWFERHnPf20bxLHKfRFxHmzZvkmcZxCX0TEQxT6IiIeotAXEfEQhb6IiIcYa61zGzOmBMhwbIPBLR7Y6XYRQUL74hDti0O0Lw5JsdY2D8QHOd1PP8Nam+rwNoOSMSZN+8JH++IQ7YtDtC8OMcakBeqz1LwjIuIhCn0REQ9xOvSnO7y9YKZ9cYj2xSHaF4doXxwSsH3h6Be5IiLiLjXviIh4iCOhb4y50BiTYYzJMsbc7cQ23WSMSTbGfGGMWWOMWW2MucO/vKUx5jNjTKZ/Hudfbowx//DvnxXGmIHu/gSBZ4wJM8Zy076nAAADxUlEQVQsNcbM9T/vZIxZ7P+ZZxpjIvzLm/ifZ/nXd3Sz7kAzxsQaY2YbY9YZY9YaY87w6nFhjPmj/9/HKmPMm8aYSC8dF8aYl4wx+caYVYctO+ljwRhzg//1mcaYG4633XoPfWNMGPBP4CKgJ3CNMaZnfW/XZVXAFGttT2AI8Hv/z3w3sMBa2w1Y4H8Ovn3TzT9NAJ5xvuR6dwew9rDnfwOesNZ2BQqBm/3LbwYK/cuf8L8ulDwJfGytPRXoh2+feO64MMYkAbcDqdba3kAYcDXeOi5eAS48atlJHQvGmJbA/cDpwGDg/gP/Ufwsa229TsAZwCeHPb8HuKe+txtME/Bv4Dx8F6a19S9ri++6BYDngGsOe/3B14XCBLTzH8DnAnMBg++im8ZHHyPAJ8AZ/seN/a8zbv8MAdoPMcDGo38eLx4XQBKwFWjp/z3PBS7w2nEBdARW1fZYAK4Bnjts+RGv+6nJieadA7/cA3L8yzzB/2foAGAx0Npau92/Kg9o7X8c6vtoGnAXUON/3grYY62t8j8//Oc9uC/864v8rw8FnYAC4GV/U9cLxphmePC4sNZuAx4DtgDb8f2e0/HmcXG4kz0WTvoY0Re59cgYEw28A0y21hYfvs76/lsO+a5TxphRQL61Nt3tWoJAY2Ag8Iy1dgBQyqE/3wFPHRdxwKX4/iNMBJpxbFOHp9XXseBE6G8Dkg973s6/LKQZY8LxBf7r1tp3/Yt3GGPa+te3BfL9y0N5H50J/NoYswl4C18Tz5NArDHmwDAgh/+8B/eFf30MsMvJgutRDpBjrV3sfz4b338CXjwuRgIbrbUF1tpK4F18x4oXj4vDneyxcNLHiBOh/yPQzf+tfAS+L2s+cGC7rjHGGOBFYK219vHDVn0AHPh2/QZ8bf0Hll/v/4Z+CFB02J94DZq19h5rbTtrbUd8v/vPrbX/AXwBXOl/2dH74sA+utL/+pA487XW5gFbjTEp/kUjgDV48LjA16wzxBgT5f/3cmBfeO64OMrJHgufAOcbY+L8fz2d71/28xz6suJiYD2wAfiz21+eOPDznoXvz7IVwDL/dDG+NsgFQCYwH2jpf73B18NpA7ASX48G13+Oetgvw4G5/sedgR+ALOBtoIl/eaT/eZZ/fWe36w7wPugPpPmPjfeBOK8eF8B/A+uAVcAMoImXjgvgTXzfZ1Ti+yvw5tocC8BN/v2SBdx4vO3qilwREQ/RF7kiIh6i0BcR8RCFvoiIhyj0RUQ8RKEvIuIhCn0REQ9R6IuIeIhCX0TEQ/4/umXsMn6VDJQAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax = df.y1.plot()\n", "ax.axhline(6, color=\"red\", linestyle=\"--\")\n", "ax.axvline(775, color=\"red\", linestyle=\"--\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.2 Customize axes on the input" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pandas plot function also takes Axes argument on the input. \n", "This enables us to customize plots to our liking.\n", "In the example below, we create a two-by-two grid with different types of plots." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0MAAAGtCAYAAADUEa80AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl8XVW99/HP75zMc5p0zNCBhg4U2kKglEmwCFWZVOCCAwJi1auCei8oFx9AvPd1UbwqPuLQRxBBtBeqIAIKKiCiDG1pKR1pOiZp06YZmnk6Zz1/nHPiSdp0SHOyT3K+79crr56999p7//ba62Tl17332uacQ0REREREJNH4vA5ARERERETEC0qGREREREQkISkZEhERERGRhKRkSEREREREEpKSIRERERERSUhKhkREREREJCEpGRIRERERkYSkZEhERERERBKSkiEREREREUlISV4HEK2wsNBNmTLF6zBERBLaqlWr9jvnxnodRzxSPyUi4r2h7KfiKhmaMmUKK1eu9DoMEZGEZmY7vY4hXqmfEhHx3lD2U7pNTkREREREEpKSIRERERERSUhKhkREREREJCEd9zNDZvYQcAmwzzk3JzxvDPC/wBRgB3C1c65hMNvv7u6mqqqKjo6O4w112KWlpVFcXExycrLXoYiIiIiISD9DMYDCw8APgUei5n0N+Itz7l4z+1p4+quD2XhVVRXZ2dlMmTIFMzvuYIeLc466ujqqqqqYOnWq1+GIiIiIiEg/x50MOedeMbMp/WZfDpwf/vwL4GUGmQx1dHSMuEQIwMwoKCigtrbW61BERI5KZ0+A25av9TqMIXGouxb6LTfgfuADQBtwvXPurVjGVNfSyfrdTTS1dwHQ3NFDfWsnYzJTyU5LYs+BDnbWteLDaOrsZtb4bGpbu5mQk4oD1laGbrCYPi6brkCA9q4g7d0BWjp6GJudStn4bLLTkmju6KGqoRUw8jJSSPYbJfkZvLWrgV11bWSlJTEmM4W8jBS6egJMLsgiPdnHc+tqaG7voiArtXd5Y1snYCT7fVQ1tDE+J40LZoyjrTsIOCblprP7QEfv5001zeysayElyc+exjZqm7sYm53KxLx0unoCvceak57cu251Qxv1rZ2kJPl745mQk8ob2+upamijO+CYOSGbCblp7DnQwb7mDs6c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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = mpl.pyplot.subplots(2, 2, figsize=(14,7))\n", "df.plot(x=\"index\", y=\"y1\", ax=ax[0, 0])\n", "df.plot.scatter(x=\"index\", y=\"y2\", ax=ax[0, 1])\n", "df.plot.scatter(x=\"index\", y=\"a3\", ax=ax[1, 0])\n", "df.plot(x=\"index\", y=\"a1\", ax=ax[1, 1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Histograms\n", "\n", "A histogram is an accurate representation of the distribution of numerical data. \n", "It is an estimate of the probability distribution of a continuous variable and was first introduced by Karl Pearson[[1]](https://en.wikipedia.org/wiki/Histogram)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.1 Stacked Histograms" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pandas enables us to compare distributions of multiple variables on a single histogram with a single function call." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df[[\"a1\", \"a2\"]].plot(bins=30, kind=\"hist\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To create two separate plots, we set `subplots=True`." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([,\n", " ],\n", " dtype=object)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df[[\"a1\", \"a2\"]].plot(bins=30, kind=\"hist\", subplots=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2 Probability Density Function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A Probability density function (PDF) is a function whose value at any given sample in the set of possible values can be interpreted as a relative likelihood that the value of the random variable would equal that sample [[2]](https://en.wikipedia.org/wiki/Probability_density_function).\n", "In other words, the value of the PDF at two different samples can be used to infer, in any particular draw of the random variable, how much more likely it is that the random variable would equal one sample compared to the other sample." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that in pandas, there is a `density=1` argument that we can pass to `hist` function, but with it, we don't get a PDF, because the y-axis is not on the scale from 0 to 1 as can be seen on the plot below.\n", "The reason for this is explained in [numpy documentation](https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html): \"Note that the sum of the histogram values will not be equal to 1 unless bins of unity width are chosen; it is not a probability mass function.\"." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.a1.hist(bins=30, density=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To calculate a PDF for a variable, we use the `weights` argument of a `hist` function.\n", "We can observe on the plot below, that the maximum value of the y-axis is less than 1." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "weights = pd.np.ones_like(df.a1.values) / len(df.a1.values)\n", "df.a1.hist(bins=30, weights=weights)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.3 Cumulative Distribution Function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A cumulative histogram is a mapping that counts the cumulative number of observations in all of the bins up to the specified bin.\n", "\n", "Let's make a cumulative histogram for a1 column.\n", "We can observe on the plot below that there are approximately 500 data points where the x is smaller or equal to 0.0." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.a1.hist(bins=30, cumulative=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A normalized cumulative histogram is what we call Cumulative distribution function (CDF) in statistics.\n", "The CDF is the probability that the variable takes a value less than or equal to x.\n", "In the example below, the probability that x <= 0.0 is 0.5 and x <= 0.2 is cca. 0.98.\n", "Note that `densitiy=1` argument works as expected with cumulative histograms." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.a1.hist(bins=30, cumulative=True, density=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Plots for separate groups" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pandas enables us to visualize data separated by the value of the specified column.\n", "Separating data by certain columns and observing differences in distributions is a common step in Exploratory Data Analysis.\n", "Let's separate distributions of a1 and a2 columns by the y2 column and plot histograms." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([,\n", " ],\n", " dtype=object)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df[['a1', 'a2']].hist(by=df.y2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is not much difference between separated distributions as the data was randomly generated. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can do the same for the line plot." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([,\n", " ],\n", " dtype=object)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df[['a1', 'a2']].plot(by=df.y2, subplots=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Dummy variables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some Machine Learning algorithms don't work with multivariate attributes, like a3 column in our example.\n", "a3 column has 5 distinct values (0, 1, 2, 3, 4 and 5). \n", "To transform a multivariate attribute to multiple binary attributes, we can binarize the column, so that we get 5 attributes with 0 and 1 values.\n", "\n", "Let's look at the example below. \n", "The first three rows of a3 column have value 2. \n", "So a3_2 attribute has the first three rows marked with 1 and all other attributes are 0.\n", "The fourth row in a3 has a value 3, so a3_3 is 1 and all others are 0, etc." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 2\n", "1 2\n", "2 2\n", "3 3\n", "4 4\n", "Name: a3, dtype: int64" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.a3.head()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "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", "
a3__0a3__1a3__2a3__3a3__4
000100
100100
200100
300010
400001
\n", "
" ], "text/plain": [ " a3__0 a3__1 a3__2 a3__3 a3__4\n", "0 0 0 1 0 0\n", "1 0 0 1 0 0\n", "2 0 0 1 0 0\n", "3 0 0 0 1 0\n", "4 0 0 0 0 1" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_a4_dummy = pd.get_dummies(df.a3, prefix='a3_')\n", "df_a4_dummy.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`get_dummies` function also enables us to drop the first column, so that we don't store redundant information.\n", "Eg. when a3_1, a3_2, a3_3, a3_4 are all 0 we can assume that a3_0 should be 1 and we don't need to store it." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "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", "
a3__1a3__2a3__3a3__4
00100
10100
20100
30010
40001
\n", "
" ], "text/plain": [ " a3__1 a3__2 a3__3 a3__4\n", "0 0 1 0 0\n", "1 0 1 0 0\n", "2 0 1 0 0\n", "3 0 0 1 0\n", "4 0 0 0 1" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.get_dummies(df.a3, prefix='a3_', drop_first=True).head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have binarized the a3 column, let's remove it from the DataFrame and add binarized attributes to it." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "df = df.drop('a3', axis=1)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1000, 10)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.concat([df, df_a4_dummy], axis=1)\n", "df.shape" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "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", "
indexa1a2y1y2a3__0a3__1a3__2a3__3a3__4
000.0496710.4798711.000000100100
11-0.0138260.3849271.002308000100
220.0647690.2119261.004620000100
330.1523030.0706131.006939000010
44-0.0234150.3396451.009262000001
\n", "
" ], "text/plain": [ " index a1 a2 y1 y2 a3__0 a3__1 a3__2 a3__3 a3__4\n", "0 0 0.049671 0.479871 1.000000 1 0 0 1 0 0\n", "1 1 -0.013826 0.384927 1.002308 0 0 0 1 0 0\n", "2 2 0.064769 0.211926 1.004620 0 0 0 1 0 0\n", "3 3 0.152303 0.070613 1.006939 0 0 0 0 1 0\n", "4 4 -0.023415 0.339645 1.009262 0 0 0 0 0 1" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. Fitting lines" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sometimes we would like to compare a certain distribution with a linear line.\n", "Eg. To determine if monthly sales growth is higher than linear.\n", "When we observe that our data is linear, we can predict future values.\n", "\n", "Pandas (with the help of numpy) enables us to fit a linear line to our data.\n", "This is a Linear Regression algorithm in Machine Learning, which tries to make the vertical distance between the line and the data points as small as possible. \n", "This is called “fitting the line to the data.” " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The plot below shows the y1 column. \n", "Let's draw a linear line that closely matches data points of the y1 column." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.plot.scatter(x='index', y='y1', s=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The code below calculates the least-squares solution to a linear equation. \n", "The output of the function that we are interested in is the least-squares solution." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "df['ones'] = pd.np.ones(len(df))\n", "m, c = pd.np.linalg.lstsq(df[['index', 'ones']], df['y1'], rcond=None)[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Equation for a line is `y = m * x + c`. \n", "Let's use the equation and calculate the values for the line `y` that closely fits the `y1` line." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "df['y'] = df['index'].apply(lambda x: x * m + c)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df[['y', 'y1']].plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion\n", "\n", "In this part, I've shown a few tricks that help me to be more productive when working on Exploratory Data Analysis.\n", "\n", "Have you learned any way to make visualizations with pandas? Let me know in the comments below." ] } ], "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.3" } }, "nbformat": 4, "nbformat_minor": 4 }