{ "metadata": { "name": "", "signature": "sha256:d333fc632c0d5993d2f062313b0f7608b1a48dddca8247f5d8b06b44fc0c3c40" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "from IPython import utils\n", "from IPython.core.display import HTML\n", "import os\n", "def css_styling():\n", " \"\"\"Load default custom.css file from ipython profile\"\"\"\n", " base = utils.path.get_ipython_dir()\n", " styles = \"\" % (open(os.path.join(base,'/home/shanks/Documents/New Folder/base16-ipython-notebook/base16-londontube-light.css'),'r').read())\n", " return HTML(styles)\n", "css_styling()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "" ], "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "#Dive-in to Pandas\n", "Pandas is a Python library for doing data analysis. It's really fast and lets you do exploratory work incredibly quickly. In this post, I will demonstrate basic capabilities of pandas. I also delve into Data Munging aspects of Pandas in a seperate post here. \n", "\n", "NOTE: this notebook is complete with my own examples and illustration but inspired by the amazing Pandas Cookbook. If you're looking for a tutorial, that's the better place to start. \n", "\n", "OK, let's get started!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#Importing required Python packages\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from pprint import pprint\n", "import pandas as pd\n", "import zipfile\n", "import requests\n", "import StringIO\n", "import datetime\n", "import seaborn\n", "\n", "np.random.seed(sum(map(ord, \"aesthetics\")))\n", "seaborn.set_context('notebook')\n", "\n", "pd.set_option('display.mpl_style', 'default') # Make the graphs a bit prettier\n", "plt.rcParams['figure.figsize'] = (15, 5) " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "###Reading from CSV \n", "\n", "It's easy to read CSV files directly in Pandas. Let's read a file from the UCI Machine Learning Repo.\n", "\n", "**Dataset name** - Citi Bike Trip Histories \n", "**Source** - NYC Bike Share/311 calls from NYC Open Data\n", "\n", "The dataset has info about where Citi Bikers ride, When they ride, How far they go and so on. We'll be looking at the Bike Trip dataset for Jan 2014." ] }, { "cell_type": "code", "collapsed": false, "input": [ "#The Dataset is a zip file. So let's first read in the dataset through requests then pass it on to Pandas through the\n", "#read_csv command\n", "url=requests.get('https://s3.amazonaws.com/tripdata/201402-citibike-tripdata.zip')\n", "z=zipfile.ZipFile(StringIO.StringIO(url.content))\n", "\n", "bike=pd.read_csv(z.open('2014-02 - Citi Bike trip data.csv'))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "#Display the Top 5 rows in the dataset\n", "print bike.head()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " tripduration starttime stoptime start station id \\\n", "0 382 2014-02-01 00:00:00 2014-02-01 00:06:22 294 \n", "1 372 2014-02-01 00:00:03 2014-02-01 00:06:15 285 \n", "2 591 2014-02-01 00:00:09 2014-02-01 00:10:00 247 \n", "3 583 2014-02-01 00:00:32 2014-02-01 00:10:15 357 \n", "4 223 2014-02-01 00:00:41 2014-02-01 00:04:24 401 \n", "\n", " start station name start station latitude start station longitude \\\n", "0 Washington Square E 40.730494 -73.995721 \n", "1 Broadway & E 14 St 40.734546 -73.990741 \n", "2 Perry St & Bleecker St 40.735354 -74.004831 \n", "3 E 11 St & Broadway 40.732618 -73.991580 \n", "4 Allen St & Rivington St 40.720196 -73.989978 \n", "\n", " end station id end station name end station latitude \\\n", "0 265 Stanton St & Chrystie St 40.722293 \n", "1 439 E 4 St & 2 Ave 40.726281 \n", "2 251 Mott St & Prince St 40.723180 \n", "3 284 Greenwich Ave & 8 Ave 40.739017 \n", "4 439 E 4 St & 2 Ave 40.726281 \n", "\n", " end station longitude bikeid usertype birth year gender \n", "0 -73.991475 21101 Subscriber 1991 1 \n", "1 -73.989780 15456 Subscriber 1979 2 \n", "2 -73.994800 16281 Subscriber 1948 2 \n", "3 -74.002638 17400 Subscriber 1981 1 \n", "4 -73.989780 19341 Subscriber 1990 1 \n" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "#Let's specify some optional parameters to make the dataset more digestable\n", "bike=pd.read_csv(z.open('2014-02 - Citi Bike trip data.csv'), encoding='utf8', parse_dates=['starttime','stoptime'], \n", " index_col=None)\n", "bike.set_index('bikeid',drop='False')\n", "#Note above, we could've simply said index_cols = bikeid but it would drop the actual column. To retain bikeid in the\n", "#dataset, I set index to None initially then replaced it with bikeid, this time setting the option not to drop the column.\n", "#If this is complicated, skip and continue, I will illustrate in detail later.\n", "print bike.head()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " tripduration starttime stoptime start station id \\\n", "0 382 2014-02-01 00:00:00 2014-02-01 00:06:22 294 \n", "1 372 2014-02-01 00:00:03 2014-02-01 00:06:15 285 \n", "2 591 2014-02-01 00:00:09 2014-02-01 00:10:00 247 \n", "3 583 2014-02-01 00:00:32 2014-02-01 00:10:15 357 \n", "4 223 2014-02-01 00:00:41 2014-02-01 00:04:24 401 \n", "\n", " start station name start station latitude start station longitude \\\n", "0 Washington Square E 40.730494 -73.995721 \n", "1 Broadway & E 14 St 40.734546 -73.990741 \n", "2 Perry St & Bleecker St 40.735354 -74.004831 \n", "3 E 11 St & Broadway 40.732618 -73.991580 \n", "4 Allen St & Rivington St 40.720196 -73.989978 \n", "\n", " end station id end station name end station latitude \\\n", "0 265 Stanton St & Chrystie St 40.722293 \n", "1 439 E 4 St & 2 Ave 40.726281 \n", "2 251 Mott St & Prince St 40.723180 \n", "3 284 Greenwich Ave & 8 Ave 40.739017 \n", "4 439 E 4 St & 2 Ave 40.726281 \n", "\n", " end station longitude bikeid usertype birth year gender \n", "0 -73.991475 21101 Subscriber 1991 1 \n", "1 -73.989780 15456 Subscriber 1979 2 \n", "2 -73.994800 16281 Subscriber 1948 2 \n", "3 -74.002638 17400 Subscriber 1981 1 \n", "4 -73.989780 19341 Subscriber 1990 1 \n" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "#The object we've imported bike is called a DataFrame, and is made up of rows and columns. \n", "#Think of this like excel on wheels.\n", "\n", "#Let's get some info on the columns our dataframe.\n", "bike.info()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\n", "Int64Index: 224736 entries, 0 to 224735\n", "Data columns (total 15 columns):\n", "tripduration 224736 non-null int64\n", "starttime 224736 non-null datetime64[ns]\n", "stoptime 224736 non-null datetime64[ns]\n", "start station id 224736 non-null int64\n", "start station name 224736 non-null object\n", "start station latitude 224736 non-null float64\n", "start station longitude 224736 non-null float64\n", "end station id 224736 non-null int64\n", "end station name 224736 non-null object\n", "end station latitude 224736 non-null float64\n", "end station longitude 224736 non-null float64\n", "bikeid 224736 non-null int64\n", "usertype 224736 non-null object\n", "birth year 224736 non-null object\n", "gender 224736 non-null int64\n", "dtypes: datetime64[ns](2), float64(4), int64(5), object(4)" ] } ], "prompt_number": 326 }, { "cell_type": "code", "collapsed": false, "input": [ "#Some more detail\n", "bike.describe()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
tripdurationstart station idstart station latitudestart station longitudeend station idend station latitudeend station longitudegender
count 224736.000000 224736.000000 224736.000000 224736.000000 224736.000000 224736.000000 224736.000000 224736.000000
mean 874.519810 439.203479 40.734366 -73.990386 440.741995 40.734221 -73.990521 1.154617
std 5486.092219 335.723861 0.019031 0.011853 341.497433 0.019048 0.011920 0.436592
min 60.000000 72.000000 40.680342 -74.017134 72.000000 40.680342 -74.017134 0.000000
25% 360.000000 305.000000 40.721854 -73.998522 305.000000 40.721816 -73.999061 1.000000
50% 544.000000 403.000000 40.736197 -73.990617 403.000000 40.735877 -73.990741 1.000000
75% 845.000000 490.000000 40.749156 -73.981918 488.000000 40.749013 -73.981948 1.000000
max 766108.000000 3002.000000 40.770513 -73.950048 3002.000000 40.770513 -73.950048 2.000000
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 53, "text": [ " tripduration start station id start station latitude \\\n", "count 224736.000000 224736.000000 224736.000000 \n", "mean 874.519810 439.203479 40.734366 \n", "std 5486.092219 335.723861 0.019031 \n", "min 60.000000 72.000000 40.680342 \n", "25% 360.000000 305.000000 40.721854 \n", "50% 544.000000 403.000000 40.736197 \n", "75% 845.000000 490.000000 40.749156 \n", "max 766108.000000 3002.000000 40.770513 \n", "\n", " start station longitude end station id end station latitude \\\n", "count 224736.000000 224736.000000 224736.000000 \n", "mean -73.990386 440.741995 40.734221 \n", "std 0.011853 341.497433 0.019048 \n", "min -74.017134 72.000000 40.680342 \n", "25% -73.998522 305.000000 40.721816 \n", "50% -73.990617 403.000000 40.735877 \n", "75% -73.981918 488.000000 40.749013 \n", "max -73.950048 3002.000000 40.770513 \n", "\n", " end station longitude gender \n", "count 224736.000000 224736.000000 \n", "mean -73.990521 1.154617 \n", "std 0.011920 0.436592 \n", "min -74.017134 0.000000 \n", "25% -73.999061 1.000000 \n", "50% -73.990741 1.000000 \n", "75% -73.981948 1.000000 \n", "max -73.950048 2.000000 " ] } ], "prompt_number": 53 }, { "cell_type": "code", "collapsed": false, "input": [ "#Accessing Columns\n", "print bike['gender'].head() #or just bike.gender" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0 1\n", "1 2\n", "2 2\n", "3 1\n", "4 1\n", "Name: gender, dtype: int64\n" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "#Plenty of functions/transformations available - this below lists the unique values.\n", "print bike.gender.unique()\n", "\n", "#Calling a histogram on a column by using hist()\n", "bike['start station id'].hist()\n", "\n", "#Try hitting tab after bike.colname to see options" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[1 2 0]\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 87, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nptfrpd1up6qqTVkHAABga2woDMfGxvLpT386//qv/5qqqvI3f/M3ue+++3Ls2LGcOHEiSTIxMZEk\nGRwc3JR1AAAAtsaG/xvDL3zhC3+wNj4+nvHx8S1bBwAAYPP5gHsAAIDCCUMAAIDCCUMAAIDCCUMA\nAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDC\nCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMA\nAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDCCUMAAIDC\nDW30gf/1X/+VF198MSsrK3n44Yfz5JNPZn5+PqdPn06STE5OptPpJMmmrQMAALD5NhyGP/7xj/N3\nf/d3+fM///MkSVVVOXXqVKanp5MkMzMz6XQ6m7J+6NChDAwM9HWhAAAA3N6GwrCqqly6dGk1CpOk\n1+tlbGwsw8PDSZLR0dF0u93Udd33+q3vDQAAwObbUBi+9957uXHjRr7//e/n2rVr+du//dt87GMf\nS6vVytzcXJKk1WplcXFx9Xa/62uF4cjIyEYuYdU9v1vs6/FNNegd2jUN3TvU9+uO/s8uO5v5NpfZ\nNpv5Npv5sp4NheHevXvTarXyrW99K1VVZXp6Ol//+teztLSUqamp1HWd2dnZ7Nu3L1VVbcr6Wq5c\nubLhi0+SlZWVvh7fVFVdb/cWdqybyzf7ft2VbmRkxHPYYObbXGbbbObbbObLnWwoDIeGhnL//fdn\nYWEhf/Znf5ahoaG02+10u93Vr+n1emm326mqalPWAQAA2Bob/uUzX/nKV/KjH/0oS0tL+au/+qvc\nd999OXbsWE6cOJEkmZiYSJIMDg5uyjoAAABbY8Nh+PGPfzzf+c53fm9tfHw84+Pjf/C1m7UOAADA\n5vMB9wAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUT\nhgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAA\nAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUThgAAAIUT\nhgAAAIUThgAAAIUThgAAAIUb6ufBy8vL+eY3v5nPfe5zeeyxxzI/P5/Tp08nSSYnJ9PpdJJk09YB\nAADYfH2F4S9/+ct86lOfysDAQOq6zqlTpzI9PZ0kmZmZSafTSVVVfa8fOnQoAwMD/WwVAACANWw4\nDK9fv575+fl85jOfyfvvv59ut5uxsbEMDw8nSUZHR9PtdlPXdd/rvV4vY2Nj/V4rAAAAt7HhMPz5\nz3+exx57LAsLC0mSq1evptVqZW5uLknSarWyuLi4ervfdWEIAACwNTYUhktLS3nrrbfy+c9/Pq++\n+mqSZO/evVlaWsrU1FTqus7s7Gz27duXqqo2ZX0tIyMjG7rwW+753WJfj2+qQT+6u6ahe4f6ft3R\n/9llZzPf5jLbZjPfZjNf1rOhMHzrrbeyvLycF154IZcvX87Kykr+4i/+It1ud/Vrer1e2u12qqra\nlPW1XLlyZSOXsGplZaWvxzdVVdfbvYUd6+byzb5fd6UbGRnxHDaY+TaX2Tab+Tab+XInGwrDI0eO\n5MiRI0mSV199NdevX88nP/nJHDt2LCdOnEiSTExMJEkGBwc3ZR0AAICt0ddvJU2SRx55ZPX2+Ph4\nxsfH/+BrNmsdAACAzecD7gEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAon\nDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEA\nAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAon\nDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAonDAEAAAo3tJEHvfzyy+l2u6mqKs8880xGR0cz\nPz+f06dPJ0kmJyfT6XSSZNPWAQAA2BobCsPjx48nSd5888385Cc/ydTUVE6dOpXp6ekkyczMTDqd\nTqqq6nv90KFDGRgY6PtCAQAAuL0NheEte/bsydDQULrdbsbGxjI8PJwkGR0dTbfbTV3Xfa/3er2M\njY31s00AAADW0VcYvvLKKzl69GiuXr2aVquVubm5JEmr1cri4uLq7X7XhSEAAMDW2XAYvvbaa9m/\nf38OHDiQixcvZmlpKVNTU6nrOrOzs9m3b1+qqtqU9fWMjIxs9BKSJPf8brGvxzfVoB/fXdPQvUN9\nv+7o/+yys5lvc5lts5lvs5kv69lQGL777rs5f/58nnzyySRJu91Ot9td/fNer5d2u52qqjZlfT1X\nrlzZyCWsWllZ6evxTVXV9XZvYce6uXyz79dd6UZGRjyHDWa+zWW2zWa+zWa+3MmGwvCHP/xh7r//\n/jz33HN56KGH8tRTT+XYsWM5ceJEkmRiYiJJMjg4uCnrAAAAbJ0NheGLL774B2vj4+MZHx/fsnUA\nAAC2hg+4BwAAKJwwBAAAKJwwBAAAKJwwBAAAKJwwBAAAKJwwBAAAKJwwBAAAKJwwBAAAKJwwBAAA\nKJwwBAAAKJwwBAAAKJwwBAAAKJwwBAAAKJwwBAAAKJwwBAAAKJwwBAAAKJwwBAAAKJwwBAAAKJww\nBAAAKJwwBAAAKJwwBAAAKJwwBAAAKNzQdm8AAPhvvcXrubR4Y7u3saahy9dyc/nmH/3vHf3ocNof\nve+P/vcClEQYAsAOcWnxRp792TvbvY0d5wdHHxaGAFvMj5ICAAAUThgCAAAUThgCAAAUThgCAAAU\nThgCAAAUThgCAAAUThgCAAAUThgCAAAUbsd+wP38/HxOnz6dJJmcnEyn09nmHQEAADTTjgzDqqpy\n6tSpTE9PJ0lmZmZy6NChDAwMbPPOAAAAmmdHhmGv18vY2FiGh4eTJKOjo6trAACwlt7i9VxavLHd\n29hxHrqejNy33btgJ9uRYXj16tW0Wq3Mzc0lSVqtVhYXF7ckDB/80/vyj395YNO/7243NOjdWQBg\n97m0eCPP/uyd7d7GjvP8//5fGXngI9u9DXawgbqu6+3exIddvHgxZ86cydTUVOq6zuzsbL74xS+m\n3W7/3tedPXt2m3YIAACwMzz66KN9f48d+Y5hu91Ot9tdvd/r9f4gCpPNeQIAAABKtyPfMUySN954\nY/W3kk5MTOTw4cPbvCMAAIBm2rFhCAAAwB+HD7gHAAAonDAEAAAonDAEAAAo3I78raT/E/Pz86u/\nnGZycjKdTmebd8Tdeumll3Lx4sUMDw/nkUceyWc/+9k152reO9+FCxdy8uTJHDx4ME888USStedm\nzrvP7eb7wTP82c9+No888kgS891tXn755XS73VRVlWeeeSajo6POboPcbr7ObjP8+7//e95+++0M\nDg7m+PHjzm7D3G6+W352611oZWWl/u53v1tfv369vn79ev1P//RPdVVV270t7tJLL71UX758efX+\n7ea61rp57zxvvPFG/etf/7o+efJkXdd3N8+11s155/jwfOv6D89wXZvvbvaf//mf9csvv1xXVeXs\nNtCt+da1s9s0Fy5cqH/0ox85uw11a751vfVnd1e+Y9jr9TI2Npbh4eEkyejo6Ooau0v9gV+Ke7u5\ndrvd1HVt3rvA4cOHc/78+dX7dzNPc975PjzfW+oP/WJr53j32rNnT4aGhtLtdp3dBtqzZ0/uvffe\n1fvObnP85je/yYEDB5zdhro131u28uzuyjC8evVqWq1W5ubmkiStViuLi4teyLvMnj178m//9m/5\nkz/5k3zta19bc663bpv37nK381xr3Zx3rg+f4Xa77RzvYq+88kqOHj3q7DbUrfkmzm6TfO9738t7\n772Xf/7nf06323V2G+aD8022/uzuyjDcu3dvlpaWMjU1lbquMzs7m3379m33trhLTz/9dJLkt7/9\nbX784x/ny1/+8m3nWlWVee9Ca53TteZpzrvPh8/ws88+e9dzZ2d47bXXsn///hw4cCAXL150dhvm\ng/NNnN0mee655/LOO+/kxRdfzFe/+lVnt2E+ON/vfOc7W352d2UYttvtdLvd1fu9Xi/tdnsbd0Q/\n7r333txzzz1rzrWqKvPeJT744w13O09z3vk+/OMrt9w6w8ndz53t9+677+b8+fN58sknkzi7TfPh\n+X6Qs9sMH/vYx1JVlbPbULfm+0FbdXYH6rX+l36He+ONN1Z/y87ExEQOHz68zTvibr3wwgu5cuVK\n9uzZk6mpqTzwwANrztW8d74zZ87k9ddfz8LCQg4ePJjjx4/f9TzNeee63Xyff/75LCws5CMf+Uj+\n/u//Pg888EAS891tvvGNb+T+++/P4OBgHnrooTz11FPOboPcbr7ObjM8//zzWVxczNDQUJ566qmM\njY05uw1yu/ne+v/OW3V2d20YAgAAsDl8wD0AAEDhhCEAAEDhhCEAAEDhhCEAAEDhhCEAAEDhhCEA\nAEDhhCEAAEDh/h9jXKOzdN90WAAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 87 }, { "cell_type": "code", "collapsed": false, "input": [ "#Plotting is easy, we could just do a table.colname.plot() but to get something pretty to display, let's do\n", "#a scatter plot\n", "plt.scatter(bike.index[:25], bike['tripduration'][:25], cmap=plt.cm.RdBu)\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n5dChQ0mSWq2WM2fOLN3+tHO/hLfGhg0b8o//+I/ZuHFj/uiP/iiNRkNGJXH69OlcvHgxzz//fM6f\nP59HHnkkX/3qV+VTQmfOnMkHH3yQL3zhC0m8zpXN1q1b8+qrr+bSpUt5+OGHk8ioLDZs2JDHH388\nf/d3f5fPfvazOXfuXM6dOyefEpiamsqjjz56y7K43lxGK3M5n+vxHFp7nTK6ctaNjLpyIpf5+fmc\nPHkyX/7yl6+aDwwMZH5+Pn/4h3+YP/iDP8i5c+cyODh4w3Nujb1792b//v154okn8vLLLyeRUVkM\nDAykVqvl2WefzXe+853827/9Wy5evCifEvr3f//3PPTQQ0tfy6g8Zmdnc/z48Xz729/Od77znfz0\npz/1PCqZr33ta/nud7+bv/iLv0hfX19+/dd/XT5r7M0338ydd96Zu+6665ZlIaNb58p8rkc+a6tT\nRtfOupHRqu3pu3KZ4MmTJ7OwsJAXXngh77//fhYXFzMyMpI777wzzWZz6X6tViuNRiNFUdzQnJW5\ndinnZb/2a7+WO+64I0nSaDRktEauzKevry+bNm3K3NxcPve5zy0tB5DP2rr2ObS4uJjjx4/nueee\nW5rJaG1dmdHi4mIWFxeX5hcvXkwio7V0vb9Dx48fX9pbLp+189577+XEiRN56qmnkty6LGR0a1yb\nz2XXPq88h9ZOp4w6zbqRUU/7eq+4N+GVV17JW2+9lbm5uWzevDn79u1b+t6xY8dy4cKFpWU1b7/9\n9tKZZ3bv3p2tW7euaM6N6ZTRD37wg8zNzeWzn/1s/viP/zi/9Vu/lURGa6FTPv/7v/+bycnJzM/P\n54EHHlhaEiCftdEpo1/84hdptVrZuXPnVfeV0drolNG//uu/5t13301RFNm2bdvSWYpl1H2d8vmn\nf/qnNJvNbNiwIX/2Z3+29Mm1fNbGn/7pn2bTpk3p7e3N5z//+XzrW9+6ZVnI6OZ1yud678HlszY6\nZXTl7J577snevXuTrH5Gq1L6AAAAKAcXZwcAAKgwpQ8AAKDClD4AAIAKU/oAAAAqTOkDAACoMKUP\nAACgwpQ+AACACvt/8mwr8895RN0AAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 91 }, { "cell_type": "code", "collapsed": false, "input": [ "#Slicing - first 5 rows in the DF\n", "bike[:5]" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
tripdurationstarttimestoptimestart station idstart station namestart station latitudestart station longitudeend station idend station nameend station latitudeend station longitudeusertypebirth yeargender
bikeid
21101 3822014-02-01 00:00:002014-02-01 00:06:22 294 Washington Square E 40.730494-73.995721 265 Stanton St & Chrystie St 40.722293-73.991475 Subscriber 1991 1
15456 3722014-02-01 00:00:032014-02-01 00:06:15 285 Broadway & E 14 St 40.734546-73.990741 439 E 4 St & 2 Ave 40.726281-73.989780 Subscriber 1979 2
16281 5912014-02-01 00:00:092014-02-01 00:10:00 247 Perry St & Bleecker St 40.735354-74.004831 251 Mott St & Prince St 40.723180-73.994800 Subscriber 1948 2
17400 5832014-02-01 00:00:322014-02-01 00:10:15 357 E 11 St & Broadway 40.732618-73.991580 284 Greenwich Ave & 8 Ave 40.739017-74.002638 Subscriber 1981 1
19341 2232014-02-01 00:00:412014-02-01 00:04:24 401 Allen St & Rivington St 40.720196-73.989978 439 E 4 St & 2 Ave 40.726281-73.989780 Subscriber 1990 1
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 92, "text": [ " tripduration starttime stoptime \\\n", "bikeid \n", "21101 382 2014-02-01 00:00:00 2014-02-01 00:06:22 \n", "15456 372 2014-02-01 00:00:03 2014-02-01 00:06:15 \n", "16281 591 2014-02-01 00:00:09 2014-02-01 00:10:00 \n", "17400 583 2014-02-01 00:00:32 2014-02-01 00:10:15 \n", "19341 223 2014-02-01 00:00:41 2014-02-01 00:04:24 \n", "\n", " start station id start station name start station latitude \\\n", "bikeid \n", "21101 294 Washington Square E 40.730494 \n", "15456 285 Broadway & E 14 St 40.734546 \n", "16281 247 Perry St & Bleecker St 40.735354 \n", "17400 357 E 11 St & Broadway 40.732618 \n", "19341 401 Allen St & Rivington St 40.720196 \n", "\n", " start station longitude end station id end station name \\\n", "bikeid \n", "21101 -73.995721 265 Stanton St & Chrystie St \n", "15456 -73.990741 439 E 4 St & 2 Ave \n", "16281 -74.004831 251 Mott St & Prince St \n", "17400 -73.991580 284 Greenwich Ave & 8 Ave \n", "19341 -73.989978 439 E 4 St & 2 Ave \n", "\n", " end station latitude end station longitude usertype birth year \\\n", "bikeid \n", "21101 40.722293 -73.991475 Subscriber 1991 \n", "15456 40.726281 -73.989780 Subscriber 1979 \n", "16281 40.723180 -73.994800 Subscriber 1948 \n", "17400 40.739017 -74.002638 Subscriber 1981 \n", "19341 40.726281 -73.989780 Subscriber 1990 \n", "\n", " gender \n", "bikeid \n", "21101 1 \n", "15456 2 \n", "16281 2 \n", "17400 1 \n", "19341 1 " ] } ], "prompt_number": 92 }, { "cell_type": "code", "collapsed": false, "input": [ "#Slicing - first 5 rows of specific column(s)\n", "bike[['gender','tripduration']][:5]\n", "\n", "##Note the 2 sets of [] - list of lists" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
gendertripduration
bikeid
21101 1 382
15456 2 372
16281 2 591
17400 1 583
19341 1 223
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 105, "text": [ " gender tripduration\n", "bikeid \n", "21101 1 382\n", "15456 2 372\n", "16281 2 591\n", "17400 1 583\n", "19341 1 223" ] } ], "prompt_number": 105 }, { "cell_type": "code", "collapsed": false, "input": [ "#Find the startstation id with the maximum trips\n", "bike['start station id'].value_counts()\n", "\n", "#It's station 293 with 2920 trips" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 117, "text": [ "293 2920\n", "519 2719\n", "497 2493\n", "435 2403\n", "521 2171\n", "490 1944\n", "477 1916\n", "382 1808\n", "151 1796\n", "285 1795\n", "402 1694\n", "318 1688\n", "492 1570\n", "444 1562\n", "379 1538\n", "...\n", "298 89\n", "339 82\n", "242 76\n", "218 76\n", "2001 75\n", "216 72\n", "253 69\n", "372 57\n", "119 57\n", "418 56\n", "431 54\n", "278 45\n", "443 41\n", "2005 36\n", "320 4\n", "Length: 329, dtype: int64" ] } ], "prompt_number": 117 }, { "cell_type": "code", "collapsed": false, "input": [ "#Find the start station with the longest trip\n", "\n", "#First find the longest trip\n", "print \"Longest Trip: %.6f\" %bike.tripduration.max()\n", "\n", "#Now retrieve row from DF where duration is the longest\n", "bike[bike.tripduration==bike.tripduration.max()]\n", "\n", "\n", "#bike[bike.tripduration.idxmax()]\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Longest Trip: 766108.000000\n" ] }, { "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", "
tripdurationstarttimestoptimestart station idstart station namestart station latitudestart station longitudeend station idend station nameend station latitudeend station longitudeusertypebirth yeargender
bikeid
15379 7661082014-02-08 15:52:512014-02-17 12:41:19 353 S Portland Ave & Hanson Pl 40.685396-73.974315 281 Grand Army Plaza & Central Park S 40.764397-73.973715 Subscriber 1982 2
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 167, "text": [ " tripduration starttime stoptime \\\n", "bikeid \n", "15379 766108 2014-02-08 15:52:51 2014-02-17 12:41:19 \n", "\n", " start station id start station name start station latitude \\\n", "bikeid \n", "15379 353 S Portland Ave & Hanson Pl 40.685396 \n", "\n", " start station longitude end station id \\\n", "bikeid \n", "15379 -73.974315 281 \n", "\n", " end station name end station latitude \\\n", "bikeid \n", "15379 Grand Army Plaza & Central Park S 40.764397 \n", "\n", " end station longitude usertype birth year gender \n", "bikeid \n", "15379 -73.973715 Subscriber 1982 2 " ] } ], "prompt_number": 167 }, { "cell_type": "code", "collapsed": false, "input": [ "#Find the start station with the longest trip by a Female Biker\n", "\n", "#First find the longest trip by a female biker\n", "print \"Longest Trip by a Female Biker: %.6f\" %bike[bike.gender==1].tripduration.max()\n", "\n", "#Now retrieve row from DF where duration is the longest\n", "bike[bike.tripduration==bike[bike.gender==1].tripduration.max()]\n", "\n", "\n", "#bike[bike.tripduration.idxmax()]\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Longest Trip by a Female Biker: 585281.000000\n" ] }, { "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", "
tripdurationstarttimestoptimestart station idstart station namestart station latitudestart station longitudeend station idend station nameend station latitudeend station longitudeusertypebirth yeargender
bikeid
16149 5852812014-02-13 16:52:232014-02-20 11:27:04 252 MacDougal St & Washington Sq 40.732264-73.998522 348 W Broadway & Spring St 40.72491-74.001547 Subscriber 1973 1
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 171, "text": [ " tripduration starttime stoptime \\\n", "bikeid \n", "16149 585281 2014-02-13 16:52:23 2014-02-20 11:27:04 \n", "\n", " start station id start station name \\\n", "bikeid \n", "16149 252 MacDougal St & Washington Sq \n", "\n", " start station latitude start station longitude end station id \\\n", "bikeid \n", "16149 40.732264 -73.998522 348 \n", "\n", " end station name end station latitude end station longitude \\\n", "bikeid \n", "16149 W Broadway & Spring St 40.72491 -74.001547 \n", "\n", " usertype birth year gender \n", "bikeid \n", "16149 Subscriber 1973 1 " ] } ], "prompt_number": 171 }, { "cell_type": "code", "collapsed": false, "input": [ "#Plot the Top 10 longest trips by Male Subscribers as a Bar Plot\n", "\n", "#Let's first get all Male Subscribers\n", "bike[(bike.usertype==\"Subscriber\") & (bike.gender==2)]\n", "\n", "#Now, valuecounts of tripduration for these subscribers - only the Top 10\n", "print \"Top 10 Male Subscribers with the longest trips\"\n", "print bike[(bike.usertype==\"Subscriber\") & (bike.gender==2)].tripduration.value_counts()[:10]\n", "\n", "#Now we'll just plot this as a bar\n", "bike[(bike.usertype==\"Subscriber\") & (bike.gender==2)].tripduration.value_counts()[:10].plot(kind='bar')\n", "plt.suptitle('Top 10 Longest Trips by Male Subscribers', fontsize=14)\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Top 10 Male Subscribers with the longest trips\n", "427 76\n", "557 71\n", "403 70\n", "385 70\n", "530 68\n", "458 68\n", "372 68\n", "364 67\n", "420 67\n", "531 66\n", "dtype: int64" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAA2QAAAFYCAYAAAA8zz83AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt0FPX9//HXJssCa0iJSrMLIlXhQEkkFKyCgglQQFAs\nYDbEryIIwSrSVqz1ggaEGGu9cRFROcGmomJNPC14Ab5Ki3694PWLKSp44YtA2Y2IoWxMzGV3fn9Q\n9mck5MasH3fzfJzDOdmZ2Zn3vHd2l9fOzWFZliUAAAAAwPcuwXQBAAAAANBeEcgAAAAAwBACGQAA\nAAAYQiADAAAAAEMIZAAAAABgCIEMAAAAAAwhkAE4yosvvqjMzExlZmbqnHPO0YABAyKPb7rppu+1\nlsrKSq1atUrDhg3TbbfddtT4UCiku+66S+eee67OO+883XrrraqpqWnVMm6++WY99NBDdpVs1N69\ne5WWltam515//fWR1/nMM8/UOeecE3n8j3/8o9XzW7NmjVauXNmmWo7X9/Gajhw5UpMnT448Xr16\ntfr166e33367xfO4++67I/1et25dNMqUZVlavny5xo4dq8zMTI0cOVLbtm1r1TxGjhyp9957Lyr1\ntcUtt9yiLVu2HDW8X79+Ki8vN1ARALSd03QBAH54Ro8erdGjR0uS/vrXv+rZZ5/Vo48+aqSW5557\nTp9//rmGDx/e6PjVq1frtdde0/PPP68uXbpowYIFWrJkSauCo8PhkMPhsKvkmHX//fdH/p46dapy\ncnI0YcKENs/v0ksvtaOsNvm+XtMvv/xS27dvV79+/bRu3TqlpKS06vk33nijbrzxRk2dOjVq9T75\n5JPavHmznnrqKaWkpKi2tlYJCbH9e+wf/vAH0yUAgG1i+xMZQNRZlqVj3T/+3Xfflc/n0/nnn6+L\nL75YmzZtajB+6tSpWrx4sa688kqdd955ys3N1eeff96q5efm5mrRokXq0aNHo+PXrFmjGTNmKCUl\nRU6nU7/73e9UWlqq+vr6Vi3nWOt4ZNxDDz2kMWPGKCsrS9dee22DX+H37t2r/v376/XXX5fP59OQ\nIUP0u9/9rsE8Kysr9dvf/lbDhw/X+PHjNXXqVA0bNky7du2KTLNx40ZNmDBBWVlZ+s1vfqN///vf\nDer49NNPNWPGDGVlZSkzM1OzZ89uMP6xxx5Tbm6uQqFQZM/Ws88+26o+tKQnU6dO1RNPPKHZs2cr\nMzNTF110kerq6iLj77vvPmVmZmrw4MGN7tVsyXZRUlKiCy+8UFlZWRoxYoTWrl3b6voDgYDmzJmj\nYcOGacKECdq6dWtk3A033KAlS5Y0mH7y5Mlav359q5YxadIklZaW6oMPPlCPHj3UpUuXBuP/+7//\nW1OnTtUvfvELDRs2TEuXLm31ejS3XTRn9+7dOvPMMyNh0eVyyen8/7/HvvnmmxozZkyD54wePVpv\nvfVWg2HvvvuucnNzde6552rmzJn68ssvG4x/+OGHI++RkSNH6o033mgwvrKyUoWFhRozZowyMzM1\nbty4Btu/dHgP1yuvvKLJkydr+PDhuuWWWxqMnzp1arN7FF966SVNnjxZQ4cO1dy5c/X1119HxoXD\nYS1fvlyjR4/WqFGjtHjxYoXD4QbPf+CBBzRv3jzdd999GjFihIYPH64dO3ZExpeXl2vOnDnKyspS\nVlaWsrOzm/z8AIBmWQDQhGeeecaaPn36UcP37dtn/fznP7feeOMNy7Is64MPPrDOOecc65///Gdk\nmssvv9yaMmWKtX//fiscDlv33HOPlZ2d3aY6HnjgAevWW29tMKympsbq16+ftW3bNisnJ8e69NJL\nLcuyrHPPPdfavXt3i+d98803WytWrDjm+FWrVlk+n886ePCgFQ6HreXLl1sTJ060wuGwZVmWtWfP\nHqtv377WokWLrKqqKuvQoUPWOeecY7355puRedx7773Wb37zG8uyLOvvf/+7NXjwYOvAgQNWKBSy\nLMuytm7dap111lnWRx99FFnf2bNnN6hjypQp1iOPPBJ5XFlZeVSte/futfr379/idT+Wyy+/3Fq3\nbt0xx40YMcJ69dVXLcuyrGAw2Oh0jb1mR57f1Haxc+dOa+DAgdauXbssy7KscDhsVVdXt6r+m266\nyRozZkxkHmvWrLGGDx9u1dTUWJZlWa+99pr1i1/8IjL9Z599Zp199tlWbW1ti5cxYsQI66233rIu\nvvhia968edarr75qjR492nrrrbci02zdutX64osvIssYOHBgg/fIEcfqd0u2i+bs3LnTGjZsmLVo\n0SJrz549R43fsmWLNXr06AbDvrseI0aMsK655horGAxa9fX11g033GD9+te/joz/n//5H2vEiBHW\n/v37LcuyrLq6ukivLevwazh9+nQrPz8/8lr++9//turr6xsst2/fvlZubm6kzmNtW8fqV9++fa35\n8+dbNTU1VnV1tXXFFVdYd911V2T8ypUrrUmTJlkHDhywampqrLy8PKu4uLjBPJYtW2adffbZ1sqV\nKy3LOvp9dv3111u333575L3b2PsQAFqDPWQA2mTdunU6//zzNWTIEElS//795fP5VFJS0mC6yy67\nTCeffLIcDoeuvfZaffTRR7ad43Hw4EFZlhXZK2H951fqTp06qaKiwpZlSNLTTz+t6667Tj/60Y/k\ncDh0zTXX6Msvv1RZWVlkmsTEROXn56tz587q0qWL+vTpo3379kXGb9++XcOGDZMkDR06VJWVlXI6\nnZFDx0pLSzV58mT169dPknTNNdfo9ddfb7A3xOv1atu2bdq+fbssy9IJJ5xwVK3W9/RL/cyZM3Xe\needJkpKSkhqdpqlamtoukpOT5XQ69eqrr+rAgQNyOBzq1KlTq+pzOByaNGmSevXqJenwntaEhITI\nazZkyBDV1tbq/fffl3T40NiLLrpIHTp0aNVyEhISNHr0aL377rs699xzjxqfkZGhbt26SZJ+8pOf\nqG/fvtq5c2eL59+S7aI5p512mp5//nmdcsopmj59um6++WZVVVW1+PlH5OXlKSkpSYmJifr1r3+t\nv//975HXuFu3bqqsrNQbb7yhQ4cOyel0yuVyRZ774Ycf6uOPP9aCBQsir2VycrISExOPWs6iRYt0\nyimnSDr2ttWU2bNny+VyqVOnTrr66qv14osvRsaVlpbq2muv1YknniiXy6XZs2ertLT0qHmcc845\nmjVrliQd9T7zer365JNP9P777ysUCjX6PgSA1iCQAWiTQCAQ+U/TET179pTf7z/mczp37qyuXbvq\nwIEDttTQtWtXORwOff311/rLX/6iNWvWSJIOHTrU6nN5mhIIBNSzZ8/I44SEBJ1yyilNruu3DwmT\npAEDBuill15SXV2dNm7cqDPOOEPJycmR8eXl5Vq7dq1GjhypkSNHavTo0XK5XA2Wceedd2rQoEG6\n4447lJWVpeLiYtvWsbW+XfuxtPScqO9uFyeddJKeeuop/d///Z+mTJmi3NxcffDBB8dVrySlpqZG\ngnpCQoJ++ctf6rnnnpMkPf/885o0aVKr5+lwODRnzhxt2LCh0fXdsWOH5s6dq9zcXE2bNk2ff/75\nUYfINaUl20VLJCcn68orr9T69etVW1uru+66q1XP/67U1FTV19fr0KFDkqS+ffuqqKhIb775piZM\n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\naAscY4wL/QAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 204 }, { "cell_type": "code", "collapsed": false, "input": [ "#The columns of a Data Frame are of type called Series. These are internally just numpy arrays, which we can find out\n", "#by calling the values() method\n", "bike['start station id'].values" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 213, "text": [ "array([294, 285, 247, ..., 497, 353, 252])" ] } ], "prompt_number": 213 }, { "cell_type": "code", "collapsed": false, "input": [ "#OK let's dig into some Time Series functionality. Pandas again is excellent in this area.\n", "\n", "#Say we want to get the day from the timestamp\n", "temp=pd.DatetimeIndex(bike.starttime) \n", "temp.day\n", "#NOTE: the .day, .month.. functions work only if the Date field is indexed. Since in our case it's not we had to\n", "#temporarily index it. Otherwise we could've just done a bike.starttime.day\n", "\n", "#Let's calc and store the weekday. Note we're adding this as a new column to bike\n", "bike['weekday']=temp.weekday" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 327 }, { "cell_type": "code", "collapsed": false, "input": [ "#GROUP BY - now let's say we want to group all bikers by weekday we could do\n", "\n", "#Let's add weekday as an index to the DF. We're choosing to append rather than replace the original index.\n", "bike.set_index('weekday',drop='false', append='true')\n", "test=bike.groupby('weekday').aggregate('count')['bikeid']\n", "print test\n", "\n", "#Say we wanted to plot this, but we want to change the indexes to something meaningful\n", "test.index=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']\n", "test.plot(kind='bar',color='orange')\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "weekday\n", "0 27222\n", "1 35022\n", "2 31020\n", "3 31900\n", "4 30371\n", "5 34062\n", "6 35139\n", "Name: bikeid, dtype: int64\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 336 }, { "cell_type": "code", "collapsed": false, "input": [ "#Let's now group all Customers on working days\n", "female_customers=bike[(bike.usertype=='Customer')]\n", "grouped=female_customers.groupby('weekday').aggregate('count')\n", "grouped=grouped[(grouped.index.values>=1) & (grouped.index.values<=5)]\n", "grouped.index=['Monday','Tuesday','Wednesday','Thursday','Friday']\n", "grouped['bikeid'].plot(kind='bar')\n", "plt.suptitle('Customers biking on Working Days', fontsize=14)\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAA28AAAF9CAYAAACTTlBFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xu8VXWdP/7XwcPhzogXOAcvPRx1NCCYrBQN5eJt8lJo\nQqPmjbyM5lSWfs0KsxA1b5nG5CSmaTk16MNLpmmJaE5oaQ8lNU1NJ9Fz0JFjgNzZ6/cHP06eQDyg\nsvc6PJ+PB4/HPp+19lrvtXlvOK+1PnvtuqIoigAAAFDTulS7AAAAAN6e8AYAAFACwhsAAEAJCG8A\nAAAlILwBAACUgPAGAABQAsIb0Kn89Kc/zQEHHJARI0Zkn332yWmnnZZKpfKu72fMmDH5/e9//65v\nt5YcddRRue222zq07llnnZUHH3xwtfGdd945c+bMedvnL1y4MEcddVTmzp27znXWur/85S/54Ac/\nuMZlF154YS666KJ3bV/r0pcnnXRSnn322Xdt3x01e/bs7Lzzzhk5cmRGjBiRM888M6+88soGrwOg\njOqrXQDAu+WOO+7INddckylTpmT77bfPihUr8uSTT6ZLl/fmPNXG8DWZdXV1HVrv/PPPf0f76dmz\nZ66//vp3tI1aNXDgwCxdujTz5s1L37592y2bM2dOhg8fXpW6/vM//7Mq+02STTbZJPfdd18WLVqU\nK6+8Mocffnhuvvnm1V4fANpz5Q3oNK666qp87Wtfy/bbb59k5S+IH/jAB9qWz549O4MHD273nGOP\nPTY333xz288LFizIWWedldGjR2fUqFH52Mc+lr/+9a9ty2fNmpWRI0dmzpw5+fd///eMHDkykyZN\narfNZ599Nsccc0z22muvfOxjH8t///d/ty176KGHctBBB+Wiiy7K8OHD8/DDD2fChAnZf//9M2/e\nvLb1fve73+XQQw/NyJEjM2HChLz88svt9jF79uwMGjSobXsjRozId77znXbrXHnlldlvv/0yatSo\njBkzJjNnzlzXlzTPPvtsjjvuuHz0ox/Npz71qTz//PPtlh911FEZOXJkPvCBD7ztVbrHH388++67\nb+6///62sblz52bkyJEZOXLkGq/SPfTQQ9l3331z++23Z+zYsRk+fHi+9a1vtVtnzpw5mTBhQkaM\nGJGxY8fmX//1X7Pbbrtl6dKlHT7ORx55JOPGjctee+2Vj3/847nnnntWO85rr702X/rSlzJy5Mgc\neOCBeeaZZzq07fr6+jQ2NqalpSVJ8uqrr7bV1tzcnG222SZJsmTJkpx33nnZe++9M3r06Hz5y19u\n1xNJcsUVV+QrX/lKLrnkkowePTp77rlnnn766TXu98UXX8xBBx2Um266qd34fvvtl5EjR2bw4MF5\n5JFH2i1b1Ve/+c1vMm7cuAwfPjxf+tKX2p2oWLBgQT7/+c9nzz33zAEHHJCjjjoqI0aMyAsvvNCh\n1+PNevTokdNOOy3bbbddrrvuurbx1tbWfPOb38yBBx6YPfbYI+PHj89zzz3Xtvz000/PZZdd1m5b\nhx56aO688862n+fMmZNTTz01o0aNyqhRo3LYYYdtFCdcgE6uAOgEli1bVgwaNKh444033nKdF198\nsRg0aFC7sWOPPba4+eab236+5JJLipNPPrlYsmRJURRFsWDBgjVua/To0cUjjzyy2viCBQuKj370\no8Vtt93Wts8xY8YUd999d1EURfHggw8WQ4YMKR555JHiq1/9ajFmzJjitddeK/bbb7+2dWbPnl3s\nsssuxQMPPFAURVHcfPPNxSGHHLLasey8887FSSedVMydO3e1Wn/9618Xo0ePLl599dW212fVMXXU\npz/96eJTn/pU2zYuueSS4tBDD33LdVcd85vttNNORUtLSzFjxoxin332KR5//PG33N+qdd/swQcf\nLAYPHlxMmTKlWLZsWfHiiy8WgwcPLmbPnt22zmmnnVacf/75RVEUxfXXX1987GMfK1pbWzt8nC+/\n/HLxkY98pJg5c2ZRFEXxxBNPFLvttlvxhz/8od3xHXzwwcWf/vSnoiiK4itf+Urx5S9/ucP7OOaY\nY4oZM2YUc+fOLQYNGlRMnTq1KIqVffTSSy8VRVEU3/zmN4uTTz65WLx4cbFs2bLia1/7WvFv//Zv\n7bZz+eWXF7vuumvx/e9/vyiK1ftzVV8+9thjxT777FPcf//9b1nTmnr4xRdfLHbaaafim9/8ZrFw\n4cJi3rx5xW677VY89NBDbetcfPHFxec+97miKIpi+vTpxYc+9KHitddeK1asWNGh12JN78Np06YV\nRxxxRNvPixYtKn7zm98UlUqlqFQqxcSJE4uTTjqpbfn//M//FPvss0/bz88991yx6667FkuXLm0b\n++IXv1icc845bXW91XsZoExceQM6hddeey2VSiU9e/Z8R9tpamrKiy++mEceeSRLly5Nr1691un5\n9957b7bZZpscfPDBSZKtt946J5xwQn7605+228cuu+ySxsbG7Lrrrtlss83S2NjYdpXlZz/7WXbf\nffd89KMfTZKMHTs2CxcuzBNPPNFuX3V1dbn44ovTr1+/JGlX65ZbbpkFCxZk5syZmTdvXurr69PQ\n0LDOr8eRRx6ZLbbYIkny2c9+Nk8//XTbFaSOmjZtWs4777xcc801q1357IiBAwfmlFNOSX19fbbe\neuv0798/zc3NbcufeuqpjBw5Mkmy++67Z86cOdl00007vP3bbrste+21V9v0xUGDBmXcuHGZNm1a\nu/VOOOGE7LjjjkmSD3/4w6tdDV2bbbfdNi0tLbn33ntz0EEH5Ze//GWKokhra2uamppSqVRy0003\n5cwzz0y3bt1SX1+fL3/5y/n1r3+d1157rd22dtttt5xwwglJssb+nDFjRj7/+c/nO9/5Tvbcc88O\n17jKJptskokTJ6ZHjx7p06dPdtxxx3bH+tRTT2XEiBFJVr7eCxYsSH19/Tuanty/f/+0tra2/dy9\ne/fsvvvuqaurS11dXfbee+/8+c9/bls+fPjwLF26NI899liS5Pbbb89BBx2Url27tq3T1NSUZ555\nJo899lhWrFixzu9lgFokvAGdQq9evVIUxTu+4cXhhx+ek08+OTfccENGjx6ds88+O0uWLOnw85ub\nm7P11lu3G9tmm23ahY1V3vzLbpcuXdqmdM2ZMycPPfRQxowZ0/bnr3/962pTCuvq6tK7d+811rHT\nTjtl6tSpeeihh3LwwQfnM5/5TF588cUOH8eadOvWLZtuuuk6v8b33XdfFixYkAULFryj/a9SX1/f\nbvrb0KFDc+edd6ZSqeSuu+7KLrvssk7ba2lp6dDf2Zv32aVLl3W6Ec7WW2+d5ubm3H333Tn22GNT\nqVTyhz/8If37909dXV1aW1uzePHitimUycqe3myzzdoFp7q6urf9XNj06dOzbNmy1ULf+qqvb//x\n+KFDh+ZXv/pVli1blrvuuivbb7/9O/6s2iuvvNJ2EiJZ+VpfffXVOeKII3L44Yfnu9/9blasWNG2\nvEuXLvnEJz6R22+/PUny85//PIcccki7bZ522mn5xCc+kSlTpmTkyJG59NJL35ObFwFsSMIb0Cn0\n7t072223XX7729++5TpvDkhrc8ABB+SKK67I3XffnZdeeilXXXVVh+sYOHBg/vKXv7Qbe+GFFzJw\n4MAOb2ObbbbJv/zLv2T69Oltf2bOnJkxY8Z0eBvJyl+yzz333MyYMSNDhw7NV77ylXV6fpIsX768\n7fH8+fPT2tqaxsbGddrGd7/73Xz1q1/NiSeeuE5Xqzrq9NNPz/Tp07PXXntl1qxZOffcc9fp+U1N\nTR36O+vozVvWZJtttslzzz2X2bNn5/3vf3/23XffXHfddXnf+96XJOnXr1+6devW7nNj8+fPz9y5\nc9epd5LkG9/4Ri677LKcccYZefLJJ9e75rdywgkn5KWXXsqee+6ZG2+8MZdffvk73uYvf/nLdjdu\n+eEPf5gZM2ZkypQp+a//+q+ceeaZq713x44dmzvvvDOzZs1KQ0NDhgwZ0m75JptsknHjxmXq1Km5\n7bbbcv/99+fWW299x7UCVJPwBnQaEyZMyCWXXNJ2I4mlS5fm7rvvbjtjv/nmm6dLly5tNz6YOXNm\nZs2a1W4bc+fOzcKFC5OsPPtfqVTSrVu31fbVt2/ftl+MX3nllbZ9jBo1Ki+99FJuueWWJCtvE3/1\n1Vdn3Lhxa629KIq2X07Hjh2bGTNm5K677mob+/sbV7ydpUuXtt1+fcWKFVmxYkW6d+++TttIkv/4\nj//ISy+9lEqlkksvvTS77757Nttss3XezgEHHJBPf/rTOeGEE9b5WN7OxIkTc9JJJ+WBBx7IlVde\nmQEDBqzT8w8++ODcf//9+c1vfpNk5Y1Vbrrpphx22GHt1utI8H8rW2+9de6999626Z37779/fvGL\nX2TbbbdNsvLEwic/+clceOGFWbRoUZYtW5bzzjsvI0aMyOabb75ONdTV1eXDH/5wvva1r+Wkk07K\nSy+9tN51r2m/F198cfbcc888+OCDuf7669tuELQ+Fi1alCuuuCLPPPNMjj766LbxV155JQMGDEi/\nfv3S0tKSK664ot2VtyT5x3/8xwwcODDnnHNOPvnJT6627VdeeaXtxjBFUWTFihVrfC8DlImvCgA6\njXHjxmXFihX53Oc+l3nz5qVbt27ZfffdM3z48PTt2zfdunXLl770pZxyyinZbrvtMnjw4AwaNKjd\nNn7729/mwgsvzIoVK1JfX5/99tsvxx133Gr7OvnkkzNp0qT84Ac/yFZbbZXLLrssm2++eXr16pUf\n/OAHmTRpUi699NL07NkzJ554Yvbbb7+25666gvPmKzmrPtuTJJtttlmuueaafOtb38oFF1yQurq6\nNDU15Yc//GG7KWxruxL08ssv59RTT838+fNTV1eXYcOGZfLkyev1mp511ll5+umns/322+eSSy5Z\np+e/ucYTTzwxs2fPzmc/+9lcffXVq30G762O5+2ueL3//e/PJZdckqlTpyZJunbtmj322CPnnHNO\nhz6H1dTUlCuvvDLf+ta3cuaZZ2bTTTfN5MmTV7uS81Z/Xx2x7bbbZsWKFW19sO2222b77bdvN03y\nzDPPzEUXXZQDDzwwlUolu+22Wy688MLVaujofg866KDMnj07J5xwQn7yk590eGrjmrb/5rEdd9wx\nF1xwQe64444kf7ur6wUXXJAePXp0aB8rVqzIyJEjs2zZsowYMSI/+clP8g//8A9ty4899th8/vOf\nz4gRI/K+970vxxxzTL74xS+utp2xY8fmvPPOy8c//vHVlv3iF7/ID37wgyQrp/x+8pOfzAEHHNCh\n+gBqVV3xTk4lAkAVFUWRU089NYceemj23nvvJMnrr7+eMWPG5IYbbsjOO+9c5Qo7n3PPPTfbbbdd\njjzyyCQrr56NHTs2/+///b+2v4MN5Z577smtt976rkzdBCgD0yYBKK033ngjM2fOzD/90z8lSRYv\nXpybbropvXr1avs8Ge+u22+/ve2uocuXL89dd92V119/fbWr2O+loiiycOHCfO9738uECRM22H4B\nqs2VNwBK7ZZbbslVV12VN954I5tsskl23333nHzyydlqq62qXVqndN999+Wyyy5La2trunTpkn/+\n53/OSSedlJ122mmD1TBhwoQ888wzOeaYY3L88cdvsP0CVJvwBgAAUAKmTQIAAJSA8AYAAFACwhsA\nAEAJCG8AAAAlILwBAACUgPAGAABQAsIbAABACQhvAAAAJSC8AQAAlIDwBgAAUALCGwAAQAnUr23h\n97///TQ3N6dSqeSUU07JgAEDMmXKlLz88stpaGjIyJEjM2rUqCTJrFmzcuONNyZJxo8fnyFDhqx1\nHAAAgI5ba3g78cQTkySPP/54brvttpxwwgmpq6vLaaedli222KJtvUqlkmnTpmXixIlJksmTJ2fI\nkCFrHB88eHDq6ureq+MBAADolNYa3lbp3r17unbt2vZzURTtlre0tKSpqSkNDQ1JkgEDBqS5uTlF\nUaw2vmpdAAAAOq5D4e3ee+/NAQcckGRlkLv88svTq1evHHvssWlsbMyCBQvSs2fPXHvttUmSnj17\nZv78+W2P/35ceAMAAFg3bxveHn744QwcODBbbbVVkmTChAlJkhdeeCHXX399zjjjjPTu3TsLFy7M\n8ccfn6IoMnXq1PTt2zeVSmWN4wAAAKybtYa3P//5z3nyySdz9NFHr7asa9eu2WSTTZIkjY2NaW5u\nblvW0tKSxsbGVCqVNY6/lXvuuWedDwAAAKAz2Xvvvdc4Xlf8/QfY3uTUU0/N5ptvni5dumTbbbfN\ncccdl29/+9t5/fXX06NHj3zmM5/JlltumSR57LHH2u4qOW7cuAwdOnSt42tyzz33ZJdddlm/I2Q1\n/fr1S2tra7XLgNXoTWqZ/qRW6U1qmf589/z+979fv/C2oQlv7y5vImqV3qSW6U9qld6klunPd8/a\nwpsv6QYAACgB4Q0AAKAEhDcAAIASEN4AAABKQHgDAAAoAeENAACgBIQ3AACAEhDeAAAASkB4AwAA\nKAHhDQAAoASENwAAgBIQ3gAAAEpAeAMAACgB4Q0AAKAEhDcAAIASEN4AAABKQHgDAAAogfpqFwAA\nAKxZy/wlmTN/abXLeFv1ry7K8mXLq13G2xrQpyGNfbpVu4z1JrwBAECNmjN/ac6449lql9FpXHTA\nDqUOb6ZNAgAAlIDwBgAAUALCGwAAQAkIbwAAACUgvAEAAJSA8AYAAFACwhsAAEAJCG8AAAAlILwB\nAACUgPAGAABQAsIbAABACQhvAAAAJSC8AQAAlIDwBgAAUALCGwAAQAkIbwAAACUgvAEAAJSA8AYA\nAFACwhsAAEAJCG8AAAAlILwBAACUgPAGAABQAsIbAABACQhvAAAAJSC8AQAAlIDwBgAAUALCGwAA\nQAkIbwAAACUgvAEAAJRA/doWfv/7309zc3MqlUpOOeWUDBgwILNmzcqNN96YJBk/fnyGDBmSJOs8\nDgAAQMetNbydeOKJSZLHH388t912W44//vhMmzYtEydOTJJMnjw5Q4YMSaVS6fD44MGDU1dX914e\nEwAAQKez1vC2Svfu3VNfX5/m5uY0NTWloaEhSTJgwIA0NzenKIoOj7e0tKSpqek9OhwAAIDOqUPh\n7d57780BBxyQBQsWpGfPnrn22muTJD179sz8+fPbHnd0XHgDAABYN297w5KHH344AwcOzFZbbZXe\nvXtn4cKFOeKII3L44YfnjTfeSN++fdd5HAAAgHWz1itvf/7zn/Pkk0/m6KOPTpI0Njamubm5bXlL\nS0saGxtTqVTWaXxt+vXrt14Hwpp5PalVepNapj+pVXpz41P/6qJql9Cp1HetL/X7aK3h7dJLL83m\nm2+eb3zjG9l2221z3HHH5bDDDsukSZOSJOPGjUuSdOnSZZ3G16a1tXX9j4Z2+vXr5/WkJulNapn+\npFbpzY3T8mXLq11Cp7J82fJSv4/WGt6++93vrjY2bNiwDBs27B2PAwAA0HG+pBsAAKAEhDcAAIAS\nEN4AAABKQHgDAAAoAeENAACgBIQ3AACAEhDeAAAASkB4AwAAKAHhDQAAoASENwAAgBIQ3gAAAEpA\neAMAACgB4Q0AAKAEhDcAAIASEN4AAABKQHgDAAAoAeENAACgBIQ3AACAEhDeAAAASkB4AwAAKAHh\nDQAAoASENwAAgBIQ3gAAAEpAeAMAACgB4Q0AAKAEhDcAAIASEN4AAABKQHgDAAAoAeENAACgBIQ3\nAACAEhDeAAAASkB4AwAAKAHhDQAAoASENwAAgBIQ3gAAAEpAeAMAACgB4Q0AAKAEhDcAAIASEN4A\nAABKQHgDAAAoAeENAACgBIQ3AACAEhDeAAAASkB4AwAAKAHhDQAAoASENwAAgBIQ3gAAAEpAeAMA\nACiB+rUt/OMf/5jrrrsugwYNylFHHZUkmTJlSl5++eU0NDRk5MiRGTVqVJJk1qxZufHGG5Mk48eP\nz5AhQ9Y6DgAAQMetNbwtW7YshxxySJ5++um2sbq6upx22mnZYost2sYqlUqmTZuWiRMnJkkmT56c\nIUOGrHF88ODBqaurey+OBQAAoNNa67TJoUOHpnfv3quNF0XR7ueWlpY0NTWloaEhDQ0NGTBgQJqb\nm9c43tLS8u4eAQAAwEZgrVfe1qR79+65/PLL06tXrxx77LFpbGzMggUL0rNnz1x77bVJkp49e2b+\n/Pltj/9+vKmp6V07AAAAgI3BOoe3CRMmJEleeOGFXH/99TnjjDPSu3fvLFy4MMcff3yKosjUqVPT\nt2/fVCqVNY6vTb9+/dbvSFgjrye1Sm9Sy/QntUpvbnzqX11U7RI6lfqu9aV+H71tePv7KZKrdO3a\nNZtsskmSpLGxMc3NzW3LWlpa0tjYmEqlssbxtWltbe1Q4by9fv36eT2pSXqTWqY/qVV6c+O0fNny\napfQqSxftrzU76O1hrdbbrkljz76aF5//fUsWrQoJ554Yr797W/n9ddfT48ePfKZz3wmSdKlS5cc\n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\nJVWuBv7m708s7LTTTtUuCZLoTWqb/qRW6c3qcMMSAACAEnDlrZM466yzkiSLFy/O0qVL07dv37S2\ntqZXr16uwAEAQCfgylsnM2XKlEyYMCE9evTIvHnz8qMf/SinnHJKtctiI+bEArVKb1LL9Ce1Sm9W\nlytvnczs2bPTrVu3JEnv3r3z4osvVrkiNnbnn39+kjWfWIBq0pvUMv1JrdKb1SW8dTK77rprJk6c\nmO233z7PP/98hg8fXu2SIIkTC9QuvUkt05/UKr1ZHaZNdkKtra35v//7vwwYMCB9+/atdjmQJLn5\n5pvz8MMPt51Y+PCHP5xPfOIT1S4L9CY1TX9Sq/RmdQhvwAbT2tqa1157Lf3793digZqiN6ll+pNa\npTc3POGtk7nhhhvyyCOPpKGhoW1s1dxkAACgvHzmrZN54oknctFFF6VLly7VLgXamT59esaMGZOn\nnnoq11xzTfbff/+MGTOm2mWB3qSm6U/gzfyG38nstNNOmTdvXrXLgNXMmDEjSfK73/0ukyZNyl13\n3VXdguD/pzepZfqTWnPTTTclWfmVAX//h/eeK2+dzKxZszJz5sxsuummbWOmTVILKpVK3njjjfTp\n0ycNDQ3p2bNntUuCJHqT2qY/qTUHHnhgkqR79+75+te/XuVqNj7CWydz8cUXV7sEWKM999wzF198\ncU499dQkyfve974qVwQr6U1qmf6k1nTv3j1JMnLkyCpXsnFyw5JOaO7cuWlpaUlTU1P69etX7XIA\nAIB3gfDWyfzqV7/KAw88kB133DF/+tOfstdee2XvvfeudlmQJFm+fHnmzp2b/v37V7sUaEdvUqsq\nlYqbkFGT9GZ1eMU7mXvvvTdnn312jjzyyJx99tmZPn16tUuCJMmDDz6YSZMm5cILL0ySXH755VWu\nCFbSm9Syb3zjG9UuAdZIb1aH8NbJ1NXVZdXF1KIoUldXV+WKYKWf//znOfvss9OnT58kK7/YE2qB\n3qSWdenSJZVKpdplwGr0ZnW4YUkns88+++Tss8/O9ttvn+eeey777rtvtUuCJCtPJixbtixJsnDh\nwpixTa3Qm9SypqamXHzxxRk6dGiSlSdp999//ypXBXqzWnzmrZN48skn2x7Pmzcvr7zySvr375++\nfftm0KBBVawMVnr00Ufz4x//OHPnzs1WW22VI444IjvvvHO1ywK9SU1b9T1vbzZq1KgNXgf8Pb1Z\nHcJbJ3H00UdnwIABGTJkyGofHj3qqKOqVBW0V6lUMn/+/PTt29eUXmqK3gSgDIS3TmLJkiV5+OGH\n8/jjj6dfv34ZP358tUsCAKCTufjii3P66acnSW6++eYccsghVa5o4+Izb53EggUL8tprr6VSqWSz\nzTardjmwmrPOOqvt8ZIlS1JXV5dLLrmkihXBSjfccEMeeeSRNDQ0tI2df/75VawI/sa/ndSaN954\no+3xrFmzhLcNTHjrJE455ZRss802GThwYGbNmpVZs2a1LfviF79YxcpgpTf/MrxkyZLceuutVawG\n/uaJJ57IRRdd5PuKqEn+7aTWVCqVLFmyJEVRtHtcV1eXbt26Vbu8Tk946ySuuOKKJGn7rMaq2bA+\nu0Et6tatWxYvXlztMiBJstNOO2XevHnZdNNNq10KrJV/O6kFdXV1ueCCC5Ks/LqAVY+T5Otf/3q1\nytpoCG+dRP/+/atdAqzVm6f+VCqV7LDDDlWsBv5m1qxZmTlzZrvwZtoktcK/ndSac845p9olbNTc\nsAR4T919993Zb7/9ql0GAEDpmeAPvKdmzpxZ7RIAADoF0yaB99TcuXNz11135e8v8tfV1WX//fev\nUlXwt+loixcvztKlS9O3b9+0tramV69e7uZHzXA3VODNhDfgPdWlSxd3n6ImrfoFeMqUKZkwYUJ6\n9OiRefPm5Uc/+lGVK4O/cTdU4M2EN+A9temmm2bUqFHVLgPe0uzZs9tOMPTu3TsvvvhilSuCv3E3\nVODNhDfgPbXnnntWuwRYq1133TUTJ07M9ttvn+effz7Dhw+vdknQNq13+fLl7oYKtHG3SQA2eq2t\nrXnttdfSv3//9O3bt9rlgDv1AmtkAjUAG70+ffqkT58+ghs1w516gTUxbRKAjdqDDz6YO++8M2+8\n8UYuvvjiXH755fnc5z5X7bLYyLlTL7AmrrwBsFH7+c9/nrPPPjt9+vRJsnIKJVTbqjv1du/evd0f\nd++FjZsrbwBs1IqiyLJly5IkCxcuXO1KB1SDO/UCa+KGJQBs1B599NH8+Mc/zty5c7PVVlvliCOO\nyM4771ztstjITZ8+PWPGjKl2GUCNEd4A2Cide+656d+/f7bccstsueWW2WyzzTJw4EDfpwVAzRLe\nANgoLV26NHPnzs3cuXPT2tqa//3f/819992XSqWSq666qtrlAcBqhDcANmrTp0/PE088kT59+uSD\nH/xgBg0alK5du1a7LABYjbtNArDRK4oidXV1qaurS5cu/msEoDa58gbARmnx4sVtUyZXTZu8//77\ns3z58lx99dXVLg8AViO8AbBROu+887LFFlu03bBk1Z9NN93U1TcAapLwBgAAUAJOLQIAAJSA8AYA\nAFACwhsAAEAJCG8AAAAlILwBAACUwP8HMtoO0IUvIlgAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 369 }, { "cell_type": "code", "collapsed": false, "input": [ "#OK great let's now grab some weather data from San Francisco from Weather Underground. Firstly we'll define a custom URL\n", "#to grab specific months of data.\n", "\n", "#The URL template will have placeholders for dates so we can fill them up as we like.\n", "url_template='http://www.wunderground.com/history/airport/KSFO/{start_year}/{start_month}/{start_day}' \\\n", " '/CustomHistory.html?dayend={end_day}&monthend={end_month}&yearend={end_year}' \\\n", " '&req_city=NA&req_state=NA&req_statename=NA&MR=1&format=1'\n", "\n", "#Let's generate the URL to retrieve data from Sep 1, 2014 to Dec 10,2014\n", "url=url_template.format(start_year=2014, start_month=9, start_day=1, end_year=2014, end_month=12, end_day=10)\n", "\n", "#Great, let's now open the URL and read it in as a CSV.\n", "sfo=pd.read_csv(url, header=1, parse_dates=True, index_col='PST')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "print sfo.head()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " MaxTemperatureF MeanTemperatureF MinTemperatureF MaxDewPointF \\\n", "2014-08-01 72 66 59 58 \n", "2014-08-02 69 64 59 57 \n", "2014-08-03 70 65 60 57 \n", "2014-08-04 75 68 60 59 \n", "2014-08-05 74 68 62 62 \n", "\n", " MeanDewPointF MinDewpointF MaxHumidity MeanHumidity \\\n", "2014-08-01 57 57 90 76 \n", "2014-08-02 56 55 93 78 \n", "2014-08-03 56 55 84 73 \n", "2014-08-04 57 55 84 73 \n", "2014-08-05 58 57 84 75 \n", "\n", " MinHumidity MaxSeaLevelPressureIn ... \\\n", "2014-08-01 61 29.93 ... \n", "2014-08-02 63 29.96 ... \n", "2014-08-03 61 29.98 ... \n", "2014-08-04 61 30.01 ... \n", "2014-08-05 66 30.08 ... \n", "\n", " MaxVisibilityMiles MeanVisibilityMiles MinVisibilityMiles \\\n", "2014-08-01 10 10 10 \n", "2014-08-02 10 10 10 \n", "2014-08-03 10 10 10 \n", "2014-08-04 10 10 10 \n", "2014-08-05 10 10 10 \n", "\n", " MaxWindSpeedMPH MeanWindSpeedMPH MaxGustSpeedMPH \\\n", "2014-08-01 24 15 29 \n", "2014-08-02 27 16 33 \n", "2014-08-03 22 11 28 \n", "2014-08-04 16 9 22 \n", "2014-08-05 23 11 26 \n", "\n", " PrecipitationIn CloudCover Events WindDirDegrees
\n", "2014-08-01 0.00 3 NaN 297
\n", "2014-08-02 0.00 4 NaN 286
\n", "2014-08-03 0.00 6 NaN 254
\n", "2014-08-04 0.00 6 NaN 261
\n", "2014-08-05 0.00 6 NaN 296
\n", "\n", "[5 rows x 22 columns]\n" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "#Let's remove spaces in column names to make things easier down the line.\n", "sfo = sfo.rename(columns=lambda x: x.replace(' ', ''))\n", "sfo.columns" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "Index([u'MaxTemperatureF', u'MeanTemperatureF', u'MinTemperatureF', u'MaxDewPointF', u'MeanDewPointF', u'MinDewpointF', u'MaxHumidity', u'MeanHumidity', u'MinHumidity', u'MaxSeaLevelPressureIn', u'MeanSeaLevelPressureIn', u'MinSeaLevelPressureIn', u'MaxVisibilityMiles', u'MeanVisibilityMiles', u'MinVisibilityMiles', u'MaxWindSpeedMPH', u'MeanWindSpeedMPH', u'MaxGustSpeedMPH', u'PrecipitationIn', u'CloudCover', u'Events', u'WindDirDegrees
'], dtype='object')" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "#Great, now let's plot the mean temp\n", "with seaborn.axes_style('darkgrid'):\n", " sfo.MeanTemperatureF.plot(figsize=(15,5), color='brown')\n", "plt.suptitle('San Francisco - Mean Temperatures in Fahrenheit',fontsize=15)\n", "plt.show()\n", "\n", "#That was as easy as it could get." ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAA2MAAAFqCAYAAACXoYLoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcW2W+P/BPErZAQsISCtiWFkoXCLSlK5Q6jlqvM9qx\n6rTWah3X6yzOHUfv1WrHXTs6zuIdnXsdt+tvtNa6tDqLM47j3kJbazeWbuxQtrAkJCEBQs7vDwpC\ngZCEnHMCfN6vl6+XJM85zzdwkuZ7nuf5PgpBEAQQERERERGRpJRyB0BERERERDQVMRkjIiIiIiKS\nAZMxIiIiIiIiGTAZIyIiIiIikgGTMSIiIiIiIhkwGSMiIiIiIpIBkzEiCRUXF+PGG2/E0qVLkZOT\ngzvvvFO2WOrq6jB//vxh/33wwQeyxeSL3/zmN/j1r38tdxiS2bx5MxYtWoTOzk4AgMvlwsqVK7Fu\n3TqZIxvZ/v37R7y++v9777335A6Rxkns92CgPqN27doVVO8TMeKZap+HRJNJiNwBEE0VbW1tuOWW\nW3D77bfj97//PQRBQFNTk9xhYf/+/dBqtQM/K5UT4x7N3XffLXcIsvj0009x2WWXYd++fXA4HFAo\nFHKHNKIVK1agtLQUANDR0YGVK1fio48+wnnnnQdg4lxn47V582ZcddVVuPLKK+UOJeCkeg9O1M8o\nKY31t5jM1yHRRMdPNCKJHDp0CFqtFjfffDOio6Oh0+kwd+5cucOCSqWCUqkc+I+C1+rVq/H3v/8d\nAPDBBx/g/PPPhyAIMkc1unOvq8HXGpG3+BlFRJMZP9WIJBIbG4vm5macOHHCY7t33nkH1113HZYt\nW4b8/Hw899xzQ57vn+KyZ88erF27FosXL8Zdd92F3t5eUeLesmULtm3bhhdffBErV67EypUrsWvX\nLlFirqurw89+9jMsX74cCxcuxNq1a3H69OkhbS6//PKB6Urbtm0bMeYvvvgC11xzDXJycpCTk4Pb\nb799WBtv+nr77bexZs0aZGVlYe3atfjss8+8/bWJYsmSJTh16hTMZjP279+P/Pz8YW2+/vprXH31\n1cjKysLll1+OwsLCYW2C7RobK+b58+fj7bffRn5+Ph588EF8/vnnWLlyJZ5++ukhMV9xxRV4/fXX\n8e1vfxuLFy/GAw88MCxmb34/gbjm+6dpfvXVV7jvvvswf/58XHTRRUPaPPvss/jJT34y5LErrrgC\nu3fv9jkeb16XN+8Lb4z1HpT6+hnrb9FvrHgC8Xv25bWP1cabv+lYfwtvrkMikplARJK5//77hYUL\nFwq/+c1vhLa2thHbvPrqq8KxY8cEq9UqfPzxx0JGRoZw4MCBgeffffddYfHixcJ//Md/CHV1dcKp\nU6eERYsWCf/85z99iqW2tlaYN2+e0NHR4bHdli1bhIsuukjYsmWL0NLSItTU1Ajt7e0Bj7m1tVXI\nz88XfvGLXwg1NTWC3W4Xjhw5IjgcjiF9ud1uweVyCffee6+wbdu2YfE2NzcLmZmZwrvvvitYrVbB\nYrEIJ06cGNLGm74++eQTYenSpcKnn34qWCwW4d133xUWLlwonDp1auxfrgiuv/564dVXXxW2bdsm\n3HXXXcKWLVuEXbt2CVdcccVAm+bmZmHZsmXCrl27hI6ODuHvf/+7sHTpUqGxsXHIuaS6xvpZLBZh\n3rx5wpkzZ4Y9503M8+bNE+68807hk08+EebPny88/PDDwnvvvScsWrRoSMyZmZnC448/LrS1tQlH\njx4VVq1aJbz66qs+/34Ccc0LgiC4XC7h+uuvF959912ht7dXcLvdQ55/9tlnhR//+MdDHrviiiuE\n3bt3+xSPN6/Lm/eFt8Z6D0r9GRWo6zkQv2dv+vKmjbfX6lh/C0EY+zokInlxzRiRhJ544gmsWbMG\nv//977F9+3Zs27YN//Zv/zakzQ9+8IOB/7/wwguRk5OD4uJiLFu2bODx+Ph4PPPMMwPrhRYvXozK\nykq/Yrr00ksHzhMeHo6PP/54yPOCICAxMRG//OUvAQBxcXHDzhGImF9//XUkJyfjscceG3hs4cKF\nw/pSKBRQqVRQKBQjTtHr6OgA0DeKpNFoAADR0dFD2njT1wsvvIBbb70VF1xwAQDgqquuwtdff42X\nX34ZTz755LB+paBQKHDZZZdhw4YNePHFF2EymYY8//rrryMvL29gXcill16Kzz//HG+//TbuuOOO\ngXZSX2OeeBvzTTfdhOnTp0MQBNxwww1wu91wOBzo7OxEZGQkAGD69OnYunUrACAmJga33nordu/e\nPfB6ve0rUNe8SqUC0Pd3G2l63UjX70jGiseb1+XN+8JbY70HAWk/owJ1PQfi9+xtX958HnrTlzd/\ni7GuQyKSF5MxIoldcMEFuOCCC/DKK6/gnnvuQVZWFpKTk4e0OXjwIIqLi1FXV4e6ujrY7fYhz0dG\nRg4p3KBWq9Hd3e1XPG+88cbAl7ORikEoFApkZmaOeZ7xxlxSUoJVq1b59RoGS0tLww9/+ENcccUV\nyM7OxsUXX4wrr7xySAEAb/qqqKgYtih+yZIleP31132O6Uc/+hEOHz488PPll1+OX/ziFz6fBwCy\ns7Oxb98+6HS6YdPZysrKUFBQMGT6ot1ux8UXXzzsPFJeY554G3NYWBhCQvr+yQoPD0dPTw8AwO12\nD7SJiIgYcozRaMSzzz7rc1+BuuYHn288xorHm9flzfsikKT8jAICcz0H4vfsbV9jtfHlveytYC32\nQzTVMRkjksnNN9+MXbt2Yf/+/QN3P7u6unDbbbeho6MD69atQ15e3phrzMYrLi5u4IvOaDzdwQ9k\nzIFaU3LHHXfgxhtvHLiT/OKLL2LXrl0wGAw+9XXu6xYEwa8vNE8++SRcLtfAz+Hh4T6fYzC9Xj/i\n4z09Pdi4cSNuvfXWIY+HhYUN/L8c15gn3sTsr97e3oEEzte+pLrmveUpHm9flzfvi2Dk6TMq0H+L\nQPyeA0HKvohIXhyvJpJRV1cX1Gr1wM/79u1DVVUV3n33Xdx444248MILg/5uZqBiNhqN+Oyzz4aM\ndIyHRqPBZZddhldffRXR0dEoKCjwqa/09HQcOHBgyGP79u3zqwKmTqdDXFzcwH9jJb/+MhqN+Prr\nr4f0FRcXN2T0I9iuMW9i9pbZbB4yunDkyBGkpaUFvC9ffocKhWJIIj5YWFjYsBGT0dp64svr8vS+\nmIikvJ4Dea1K3Zen65CI5MVkjEgiNpsN77//Ptra2tDS0oKnnnoKvb29OP/88wfaREVFwWq14vTp\n0zCZTHjsscdw/PhxdHV1eTy3t2tP/DHWuQMV83XXXYfW1lbcfffdqKqqgt1uR3FxMdra2nyO69NP\nP0V7eztsNhv+8Y9/oL6+Hunp6T71ddttt+GVV17Bv/71L5jNZuzcuRMffvjhsDvVUhrrb7Fp0ybU\n1dVh69atOHPmDGw2G0pKStDa2jrQJtiuMW9i9lZbWxvuuecetLa24sCBA3jllVewceNGn/sK5DWf\nkJCAzz//HDabDSdPnsSZM2cGnps9ezZKS0tht9vR09ODp59+esR1VYH4uwNjvy985cs1Idb1E8jr\nOVC/Z1/PO1IbX/saqw9P1yERyYvJGJFEzGYz3nrrLaxZswaXX345mpqasH379oHiAwCwdOlSbN68\nGddddx2uvvpqJCYm4qqrrhpSqEGhUAy78+vvnWBvjhupv8ECFXNsbCx27NgBt9uNDRs2IC8vDw88\n8ACam5t9istms+Hll1/GmjVrsHr1arz88st4+umnkZGR4VNf3/rWt7BlyxY89dRTyM/Px+uvv45n\nn312yEiL1Eb6HQ5+LD4+Htu3b0dbWxvWrl2L1atX44EHHkB9ff1AG6mvsbGO9ybm0c5z7jlTU1Ox\nbNkyrFu3Dj/60Y+wfv16fO973/O5r0Bc8/1uvfVWlJWVIT8/H1u3bh2y0ftFF12E5cuX47vf/S42\nb96M9PT0EUdex4rHm9flzfvCV6PFJeVnVCCv50D8nr3py5s2/rwvPMXu6TokInkpBDFvqRMREUlg\n165d+NOf/oT33ntP7lCIiIi8xpExIiIiIiIiGTAZIyKiCW+saVpERETBiNMUiYiIiIiIZMCRMSIi\nIiIiIhkwGSMiIiIiIpIBkzEiIiIiIiIZMBkjIiIiIiKSAZMxIiIiIiIiGTAZIyIiIiIikgGTMSIi\nIiIiIhkwGSMiIiIiIpIBkzEiIiIiIiIZhHh60u12Y+vWraiqqoJSqcRjjz0Gp9OJ22+/HbNmzQIA\nXHvttfjud78rRaxERERERESThkIQBGG0J7/44gvs2rULzzzzDAoKCvDmm29i9erVsNlsuOmmm6SM\nk4iIiIiIaFLxODIWEREBq9UKQRBgtVoREhKCkpISVFZW4uOPP0ZKSgruv/9+REVFSRUvERERERHR\npOBxZMzlcuGmm25Cc3MzzGYznn/+eVRWVmL+/PnIyMjA888/D4vFgnvvvVfKmImIiIiIiCY8jwU8\nXnrpJeTk5ODDDz/E+++/jy1btuD8889HRkYGAODiiy/G8ePHPXbgIdcjIiIiIiKasjxOU3Q4HANT\nEKOjo9HT04Mf/vCHePDBB5GdnY3CwkIYjUaPHSgUCphM1sBFTERByWDQ8r1ORPwsIJoi+F73jcGg\nHfFxj9MUOzo6cN9996G9vR0ulws/+MEPkJaWhkceeQQhISFISEjAo48+OuaaMf6hiCY/figTEcDP\nAqKpgu913/iVjAUK/1BEkx8/lIkI4GcB0VTB97pvRkvGuOkzERERERGRDJiMERERERERyYDJGBER\nERERkQyYjBEREREREcmAyRgREREREZEMmIwRERERERHJgMkYERERERGRDJiMERERERERyYDJGBER\nERERkQyYjBEREREREcmAyRgREREREZEMmIwRERERERHJgMkYERERERGRDJiMERERERERyYDJGBER\nERERkQyYjBEREREREcmAyRgREREREZEMmIwRERERERHJgMkYERERERGRDJiMERERERERyYDJGBER\nERERkQyYjBEREREREcmAyRgREREREZEMmIwRERERERHJgMkYERERERGRDJiMERERERERyYDJGBER\nERERkQyYjBEREREREcmAyRgREREREZEMmIwRERERERHJgMkYERERERGRDJiMERERERERyYDJGBER\nERERkQyYjBGR7FydnTh454/hdrnkDoWIiIhIMkzGiEh2tooytB85BEtpsdyhEBEREUmGyRgRyc5a\nXgYolTAVfCl3KERERESSYTJGRLKzVZQh8cI1aCnYI3coRERERJJhMkZEsrOVl+G8765Fj82Gzrpa\nucMhIiIikgSTMSKSlSAIsFWWQ5OWjviVeTAV7pU7JCIiIiJJhHh60u12Y+vWraiqqoJSqcRjjz0G\nlUqFLVu2QKlUIj09HQ899BAUCoVU8RLRJONsbIBKHYkwnQ6G3HzU7n4bKes3yh0WERERkeg8jozt\n2bMHDocDO3bswE9+8hP87ne/w5NPPom77roL27dvhyAI+Pjjj6WKlYgmIWtFGbRz0gEAcUuXw3K8\nFD02m8xREREREYnPYzIWEREBq9UKQRBgtVoRGhqKkpISLFu2DABw/vnno6CgQJJAiWhyspWXQZM6\nBwCgUquhz16I1gOFMkdFREREJD6PyVhOTg66u7tx6aWX4sEHH8TmzZshCMLA85GRkbBaraIHSUST\nl7W8DJq0OQM/G/Ly0cJ1Y0RERDQFeFwz9tJLLyEnJwc///nP0djYiBtuuAEul2vgebvdjujo6DE7\nMRi044+UiIKeP+91R3UFZi79GfRnj4287N/wj/97EXExaihDPH5EEVGQ4r/7RFMD3+vj5/GbjsPh\nQFRUFAAgOjoaLpcLGRkZOHDgAJYvX44vvvgCubm5Y3ZiMnH0jGiyMxi0Pr/Xe51O2Bsa0BUV982x\nIRqExSeg7PNCxGQvEiFSIhKTP58FRDTx8L3um9ESV4/J2C233IL77rsPmzZtgsvlwt13343MzEw8\n8MAD6OnpQVpaGi699FJRAiaiyc9WVYGoGSnDRsDic1fBVPAlkzEiIiKa1DwmY9HR0fjDH/4w7PHX\n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\np+PPf/4zVq1a5aywichKAoEA+/btw9y5cyESiaDX6/HYY49h/PjxWLVqFebMmYPa2lpMmDABEokE\nK1aswNKlSyEUChEaGop58+Y5+0twCwJjF+0j2r9/P3bs2IHnnnuuK6YjIiIiIiJyaV3W9PnKT9KI\niIiIiIiuZ122MkZERERERES/s2llTKfTYdGiRZgzZw6mT5+OH374ASqVCrNmzcKcOXPw/PPPt6mi\nVllZiVtuuQWNjY1t3pOfn4+hQ4dedZ2IiIiIiOhaZ1MBj6+++gpBQUF49dVXodFoMGXKFPTr1w8L\nFy7EsGHDsHz5cuzcuRPjx4/H7t278frrr6OioqLNO7RaLV5++WV4e3vb5QshIiIiIiJyJzatjE2c\nOBGPPvooAMBgMMDDwwO5ubkYNmwYAGD06NHIzMwEAIhEInzyyScICAhofd5oNGLZsmVYuHAhkzEi\nIiIiIrou2ZSMicViSCQSaLVaPPbYY3j88cfb9BMSi8Worq4GACQnJ0Mmk7V5/p133sGYMWMQGxvb\nidCJiIiIiIjcl83VFIuLizFv3jxMnToVt99+O4TC319VU1PTZiXsSl999RU2b96MuXPnory8HPff\nf7+tYRAREREREbklm86MlZeX47777sPy5csxcuRIAEC/fv1w4MABDB8+HD///DOSkpI6fH7Hjh2t\n/3vcuHH46KOPbAmDiIiIiIjIbdmUjK1evRrV1dV499138e677wIAnnnmGbz00kvQ6XTo1asXJk6c\n2OaZjnqMsfcYERERERFdj9hnjIiIiIiIyAlsPjNGREREREREtmMyRkRERERE5ARMxoiIiIiIiJyA\nyRgREREREZETMBkjIiIiIiJyAiZjRERERERETmBTnzEiIiJnKiwsxIQJExATE9N6zWg04u6770Zq\naip27dqF1atXo66uDnq9Hr1798bTTz+NsLAwPProo1Cr1QCAvLw89OnTByKRCFKpFP/+97+d9SUR\nEdF1iH3GiIjI7RQWFmLy5Mk4cuRI67WSkhJMnjwZ7733Hh5++GFs3boV3bp1AwCsXr0au3btwoYN\nG9q8JzY2Fvv27YNMJuvS+ImIiACujBER0TUiLCwMSqUS+/fvh06nQ01NTeu9efPmoV+/fk6MjoiI\n6GpMxoiI6Jpw5MgRqNVqpKWlQavVYurUqVAqlRg8eDCSkpJwyy23ODtEIiKiNrhNkYiI3E5hYSFu\nvvlm9O3bFwCg1+shk8kwf/58jBo1CgCg0Wiwf/9+HDhwAN9//z26deuGzz77DELh77WruE2RiIic\nickYERG5nfbOjLX4/vvvodFokJqa2nqttrYWN954I9asWYP4+PjW60zGiIjImVjanoiIrin+/v54\n8803cerUqdZrarUa3t7eUCgUToyMiIioLZ4ZIyIityQQCNq9PmLECDz33HNYunQpNBoNPDw8EBYW\nhvfeew/+/v4WvYOIiKgrcJsiERERERGRE3CbIhERERERkRMwGSMiIiIiInICJmNEREREREROwGSM\niIiIiIjICZiMEREREREROQGTMSIiIiIiIidgMkZEREREROQETMaIiIiIiIic4P8BVK/7TfRJthAA\nAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "sfo.describe()" ], "language": "python", "metadata": {}, "outputs": [ { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MaxTemperatureFMeanTemperatureFMinTemperatureFMaxDewPointFMeanDewPointFMinDewpointFMaxHumidityMeanHumidityMinHumidityMaxSeaLevelPressureInMeanSeaLevelPressureInMinSeaLevelPressureInMaxVisibilityMilesMeanVisibilityMilesMinVisibilityMilesMaxWindSpeedMPHMeanWindSpeedMPHMaxGustSpeedMPHCloudCoverhour
count 101.000000 101.000000 101.000000 101.000000 101.000000 101.000000 101.000000 101.000000 101.000000 101.000000 101.000000 101.000000 101 101.000000 101.000000 101.000000 101.000000 101.000000 101.000000 101
mean 72.495050 65.405941 57.831683 59.316832 55.722772 51.821782 91.009901 73.871287 56.237624 30.047327 29.989208 29.931188 10 9.465347 7.445545 19.990099 7.831683 24.821782 3.801980 0
std 7.315222 5.312585 4.406970 3.679486 4.343084 6.358295 7.686996 10.905653 15.820966 0.134907 0.134964 0.138818 0 0.975339 3.579037 5.148777 3.307777 6.219961 2.135508 0
min 60.000000 55.000000 46.000000 49.000000 38.000000 28.000000 67.000000 43.000000 13.000000 29.810000 29.750000 29.680000 10 5.000000 0.000000 8.000000 1.000000 12.000000 0.000000 0
25% 67.000000 61.000000 56.000000 57.000000 54.000000 49.000000 87.000000 69.000000 48.000000 29.950000 29.900000 29.840000 10 9.000000 4.000000 16.000000 5.000000 21.000000 2.000000 0
50% 72.000000 66.000000 58.000000 60.000000 57.000000 54.000000 90.000000 74.000000 57.000000 30.020000 29.970000 29.910000 10 10.000000 10.000000 21.000000 8.000000 25.000000 4.000000 0
75% 76.000000 69.000000 61.000000 61.000000 58.000000 56.000000 100.000000 80.000000 66.000000 30.130000 30.070000 30.020000 10 10.000000 10.000000 24.000000 10.000000 29.000000 6.000000 0
max 95.000000 81.000000 66.000000 66.000000 64.000000 62.000000 100.000000 95.000000 90.000000 30.460000 30.390000 30.330000 10 10.000000 10.000000 32.000000 14.000000 50.000000 8.000000 0
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 65, "text": [ " MaxTemperatureF MeanTemperatureF MinTemperatureF MaxDewPointF \\\n", "count 101.000000 101.000000 101.000000 101.000000 \n", "mean 72.495050 65.405941 57.831683 59.316832 \n", "std 7.315222 5.312585 4.406970 3.679486 \n", "min 60.000000 55.000000 46.000000 49.000000 \n", "25% 67.000000 61.000000 56.000000 57.000000 \n", "50% 72.000000 66.000000 58.000000 60.000000 \n", "75% 76.000000 69.000000 61.000000 61.000000 \n", "max 95.000000 81.000000 66.000000 66.000000 \n", "\n", " MeanDewPointF MinDewpointF MaxHumidity MeanHumidity MinHumidity \\\n", "count 101.000000 101.000000 101.000000 101.000000 101.000000 \n", "mean 55.722772 51.821782 91.009901 73.871287 56.237624 \n", "std 4.343084 6.358295 7.686996 10.905653 15.820966 \n", "min 38.000000 28.000000 67.000000 43.000000 13.000000 \n", "25% 54.000000 49.000000 87.000000 69.000000 48.000000 \n", "50% 57.000000 54.000000 90.000000 74.000000 57.000000 \n", "75% 58.000000 56.000000 100.000000 80.000000 66.000000 \n", "max 64.000000 62.000000 100.000000 95.000000 90.000000 \n", "\n", " MaxSeaLevelPressureIn MeanSeaLevelPressureIn MinSeaLevelPressureIn \\\n", "count 101.000000 101.000000 101.000000 \n", "mean 30.047327 29.989208 29.931188 \n", "std 0.134907 0.134964 0.138818 \n", "min 29.810000 29.750000 29.680000 \n", "25% 29.950000 29.900000 29.840000 \n", "50% 30.020000 29.970000 29.910000 \n", "75% 30.130000 30.070000 30.020000 \n", "max 30.460000 30.390000 30.330000 \n", "\n", " MaxVisibilityMiles MeanVisibilityMiles MinVisibilityMiles \\\n", "count 101 101.000000 101.000000 \n", "mean 10 9.465347 7.445545 \n", "std 0 0.975339 3.579037 \n", "min 10 5.000000 0.000000 \n", "25% 10 9.000000 4.000000 \n", "50% 10 10.000000 10.000000 \n", "75% 10 10.000000 10.000000 \n", "max 10 10.000000 10.000000 \n", "\n", " MaxWindSpeedMPH MeanWindSpeedMPH MaxGustSpeedMPH CloudCover hour \n", "count 101.000000 101.000000 101.000000 101.000000 101 \n", "mean 19.990099 7.831683 24.821782 3.801980 0 \n", "std 5.148777 3.307777 6.219961 2.135508 0 \n", "min 8.000000 1.000000 12.000000 0.000000 0 \n", "25% 16.000000 5.000000 21.000000 2.000000 0 \n", "50% 21.000000 8.000000 25.000000 4.000000 0 \n", "75% 24.000000 10.000000 29.000000 6.000000 0 \n", "max 32.000000 14.000000 50.000000 8.000000 0 " ] } ], "prompt_number": 65 }, { "cell_type": "code", "collapsed": false, "input": [ "#It's easy to concactenate dataframes\n", "\n", "#Let's generate the URL to retrieve data from Aug 1, 2014 to Aug 31,2014\n", "url=url_template.format(start_year=2014, start_month=8, start_day=1, end_year=2014, end_month=8, end_day=31)\n", "\n", "#Great, let's now open the URL and read it in as a CSV.\n", "sfo_aug=pd.read_csv(url, header=1, parse_dates=True, index_col='PDT')\n", "\n", "#Renaming columns\n", "sfo_aug = sfo_aug.rename(columns=lambda x: x.replace(' ', ''))\n", "\n", "#Concatenate Aug and Sep months\n", "sfo = pd.concat([sfo_aug,sfo])\n", "\n", "sfo.index.get_values" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "\n", "[2014-08-01, ..., 2014-12-10]\n", "Length: 194, Freq: None, Timezone: None>" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "#Saving back to CSV\n", "sfo.to_csv('SFO_Weather_Aug_to_Dec_14.csv')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 } ], "metadata": {} } ] }