Skip to content

Instantly share code, notes, and snippets.

@BartBaddeley
Created October 31, 2013 16:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BartBaddeley/7252847 to your computer and use it in GitHub Desktop.
Save BartBaddeley/7252847 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pandas as pd\n",
"from pandas import Series, DataFrame, Panel\n",
"import numpy as np\n",
"import datetime\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"COLUMN_NAMES = [\"amount paid\", \"paid duration mins\", \"start date\", \\\n",
" \"start day\", \"end date\", \"end day\", \"start time\", \"end time\", \\\n",
" \"DesignationType\", \"Hours of Control\", \"Tariff\", \"Max Stay\", \\\n",
" \"Spaces\", \"Street\", \"x coordinate\", \"y coordinate\", \"latitude\", \\\n",
" \"longitude\"]\n",
"PARKING_DATA = 'ParkingCashlessDenorm.csv'"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"raw_data = pd.read_csv(PARKING_DATA, names=COLUMN_NAMES, header=None)\n",
"raw_data.head()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>amount paid</th>\n",
" <th>paid duration mins</th>\n",
" <th>start date</th>\n",
" <th>start day</th>\n",
" <th>end date</th>\n",
" <th>end day</th>\n",
" <th>start time</th>\n",
" <th>end time</th>\n",
" <th>DesignationType</th>\n",
" <th>Hours of Control</th>\n",
" <th>Tariff</th>\n",
" <th>Max Stay</th>\n",
" <th>Spaces</th>\n",
" <th>Street</th>\n",
" <th>x coordinate</th>\n",
" <th>y coordinate</th>\n",
" <th>latitude</th>\n",
" <th>longitude</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 3.3</td>\n",
" <td> 45</td>\n",
" <td> 2013-02-06 00:00:00</td>\n",
" <td> Wednesday</td>\n",
" <td> 2013-02-06 00:00:00</td>\n",
" <td> Wednesday</td>\n",
" <td> 10:58</td>\n",
" <td> 11:43</td>\n",
" <td> Shared Use P&amp;D</td>\n",
" <td> Mon - Sat 8.30am - 6.30pm</td>\n",
" <td> 4.4</td>\n",
" <td> 4 hours</td>\n",
" <td> 13</td>\n",
" <td> Hyde Park Square</td>\n",
" <td> 527154.134706</td>\n",
" <td> 181061.021077</td>\n",
" <td> 51.514183</td>\n",
" <td>-0.168964</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 4.4</td>\n",
" <td> 60</td>\n",
" <td> 2013-02-06 00:00:00</td>\n",
" <td> Wednesday</td>\n",
" <td> 2013-02-06 00:00:00</td>\n",
" <td> Wednesday</td>\n",
" <td> 12:44</td>\n",
" <td> 13:44</td>\n",
" <td> Shared Use P&amp;D</td>\n",
" <td> Mon - Sat 8.30am - 6.30pm</td>\n",
" <td> 4.4</td>\n",
" <td> 4 hours</td>\n",
" <td> 13</td>\n",
" <td> Hyde Park Square</td>\n",
" <td> 527154.134706</td>\n",
" <td> 181061.021077</td>\n",
" <td> 51.514183</td>\n",
" <td>-0.168964</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> 2.4</td>\n",
" <td> 60</td>\n",
" <td> 2013-02-06 00:00:00</td>\n",
" <td> Wednesday</td>\n",
" <td> 2013-02-06 00:00:00</td>\n",
" <td> Wednesday</td>\n",
" <td> 13:44</td>\n",
" <td> 14:44</td>\n",
" <td> P&amp;D + PbP</td>\n",
" <td> Mon - Fri 8.30-6.30 Sat 8.30 - 1.30</td>\n",
" <td> 2.4</td>\n",
" <td> 4 Hours</td>\n",
" <td> 13</td>\n",
" <td> Queensborough Terrace</td>\n",
" <td> 526036.819680</td>\n",
" <td> 180730.025823</td>\n",
" <td> 51.511458</td>\n",
" <td>-0.185176</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> 2.4</td>\n",
" <td> 60</td>\n",
" <td> 2013-06-08 00:00:00</td>\n",
" <td> Saturday</td>\n",
" <td> 2013-06-08 00:00:00</td>\n",
" <td> Saturday</td>\n",
" <td> 08:43</td>\n",
" <td> 09:43</td>\n",
" <td> P&amp;D + PbP</td>\n",
" <td> Mon - Sat 8.30am - 6.30pm</td>\n",
" <td> 2.4</td>\n",
" <td> 4 Hours</td>\n",
" <td> 15</td>\n",
" <td> Winsland Street</td>\n",
" <td> 526709.888753</td>\n",
" <td> 181367.836585</td>\n",
" <td> 51.517040</td>\n",
" <td>-0.175253</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> 7.0</td>\n",
" <td> 105</td>\n",
" <td> 2013-06-08 00:00:00</td>\n",
" <td> Saturday</td>\n",
" <td> 2013-06-08 00:00:00</td>\n",
" <td> Saturday</td>\n",
" <td> 15:44</td>\n",
" <td> 17:29</td>\n",
" <td> P&amp;D + PbP</td>\n",
" <td> Mon - Sat 8.30am - 6.30pm</td>\n",
" <td> 4</td>\n",
" <td> 4 hours</td>\n",
" <td> 5</td>\n",
" <td> Wigmore Street</td>\n",
" <td> 528210.089071</td>\n",
" <td> 181233.842719</td>\n",
" <td> 51.515498</td>\n",
" <td>-0.153692</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": [
" amount paid paid duration mins start date start day \\\n",
"0 3.3 45 2013-02-06 00:00:00 Wednesday \n",
"1 4.4 60 2013-02-06 00:00:00 Wednesday \n",
"2 2.4 60 2013-02-06 00:00:00 Wednesday \n",
"3 2.4 60 2013-06-08 00:00:00 Saturday \n",
"4 7.0 105 2013-06-08 00:00:00 Saturday \n",
"\n",
" end date end day start time end time DesignationType \\\n",
"0 2013-02-06 00:00:00 Wednesday 10:58 11:43 Shared Use P&D \n",
"1 2013-02-06 00:00:00 Wednesday 12:44 13:44 Shared Use P&D \n",
"2 2013-02-06 00:00:00 Wednesday 13:44 14:44 P&D + PbP \n",
"3 2013-06-08 00:00:00 Saturday 08:43 09:43 P&D + PbP \n",
"4 2013-06-08 00:00:00 Saturday 15:44 17:29 P&D + PbP \n",
"\n",
" Hours of Control Tariff Max Stay Spaces \\\n",
"0 Mon - Sat 8.30am - 6.30pm 4.4 4 hours 13 \n",
"1 Mon - Sat 8.30am - 6.30pm 4.4 4 hours 13 \n",
"2 Mon - Fri 8.30-6.30 Sat 8.30 - 1.30 2.4 4 Hours 13 \n",
"3 Mon - Sat 8.30am - 6.30pm 2.4 4 Hours 15 \n",
"4 Mon - Sat 8.30am - 6.30pm 4 4 hours 5 \n",
"\n",
" Street x coordinate y coordinate latitude longitude \n",
"0 Hyde Park Square 527154.134706 181061.021077 51.514183 -0.168964 \n",
"1 Hyde Park Square 527154.134706 181061.021077 51.514183 -0.168964 \n",
"2 Queensborough Terrace 526036.819680 180730.025823 51.511458 -0.185176 \n",
"3 Winsland Street 526709.888753 181367.836585 51.517040 -0.175253 \n",
"4 Wigmore Street 528210.089071 181233.842719 51.515498 -0.153692 "
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# pandas will usually do a good job of interpretting time and date information.\n",
"# However, rather annoyingly the date and time data has been stored in separate columns\n",
"# so we need to do a bit of work to get consistent timestamps to work with.\n",
"\n",
"# First we convert the date information into timestamp format\n",
"# Since no time information is given pandas assumes the time as 00:00:00\n",
"raw_data['start date'] = pd.to_datetime(raw_data['start date']) \n",
"raw_data['end date'] = pd.to_datetime(raw_data['end date'])\n",
"\n",
"# Next convert the time information into timestamp format\n",
"# Since the time information has no date associated with it pandas assumes \n",
"# the date is today, so we'll need to subtract today's date to get the time on its own \n",
"raw_data['start time'] = pd.to_datetime(raw_data['start time'])\n",
"raw_data['end time'] = pd.to_datetime(raw_data['end time'])\n",
"\n",
"# We can now construct a proper timestamp for each of the records by adding \n",
"# the date and time and subtracting today's date \n",
"ts_today = pd.to_datetime('00:00:00')\n",
"raw_data['start time'] = raw_data['start time'] - ts_today\n",
"raw_data['end time'] = raw_data['end time'] - ts_today\n",
"raw_data['start datetime'] = raw_data['start date'] + raw_data['start time']\n",
"raw_data['end datetime'] = raw_data['end date'] + raw_data['end time']"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# i've subsequently realised that the whole of the above code can be replaced with this \n",
"rows = pd.read_csv(PARKING_CASHLESS,\n",
"\t\t\t\t\t names=COLUMN_NAMES, \n",
"\t\t\t\t\t header=None,\n",
"\t\t\t\t\t parse_dates={'end datetime': ['end date','end time'] , 'start datetime':['start date','start time']})\n",
"\n",
"# How nice is that!"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Now we want to group together all records for each parking location based on\n",
"# the latitude and longitude, the 'Street' is ambiguous since some streets have \n",
"# more than one parking location\n",
"parking_locations = raw_data.groupby(by = ['latitude', 'longitude'])\n",
"\n",
"# get a single location\n",
"df1 = raw_data.ix[parking_locations.indices[parking_locations.indices.keys()[3]]]\n",
"\n",
"\n",
"arrivals = Series(np.ones(df1.shape[0]), index = df1['start datetime'])\n",
"departures = Series(-1*np.ones(df1.shape[0]), index = df1['end datetime'])\n",
"arr_dep = arrivals.append(departures)\n",
"occupancy = arr_dep.resample('10Min', how ='sum').fillna(0).cumsum()\n",
"occupancy.plot(xlim =(occupancy.index[15000],occupancy.index[15200]))\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 6,
"text": [
"<matplotlib.axes.AxesSubplot at 0x3da5f470>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x1b6dce48>"
]
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# We now construct a Panel object containing the average occupancy for each day of the week\n",
"first_time = 1\n",
"for j, k in enumerate(parking_locations.indices.keys()):\n",
" # print j\n",
" # look at one location at a time\n",
" df1 = raw_data.ix[parking_locations.indices[k]]\n",
" # Calculate occupancy by incrementing a count for every arrival and decrementing the \n",
" # same count for every departure\n",
" arrivals = Series(np.ones(df1.shape[0]), index = df1['start datetime'])\n",
" departures = Series(-1*np.ones(df1.shape[0]), index = df1['end datetime']) \n",
" occupancy = arrivals.append(departures) \n",
" occupancy = occupancy.resample('10Min', how = 'sum').fillna(0).cumsum()\n",
" \n",
" # split the data by day of the week\n",
" mon = occupancy.ix[occupancy.index.dayoftheweek == 0]\n",
" tue = occupancy.ix[occupancy.index.dayoftheweek == 1]\n",
" wed = occupancy.ix[occupancy.index.dayoftheweek == 2]\n",
" thu = occupancy.ix[occupancy.index.dayoftheweek == 3]\n",
" fri = occupancy.ix[occupancy.index.dayoftheweek == 4]\n",
" \n",
" df2 = DataFrame(mon.groupby(mon.index.time).mean(), columns =['Monday'])\n",
"\tdf2['Tuesday']=tues.groupby(tues.index.time).mean()\n",
" \tdf2['Wednesday']=weds.groupby(weds.index.time).mean()\n",
"\tdf2['Thursday']=thur.groupby(thur.index.time).mean()\n",
" \tdf2['Friday']=fri.groupby(fri.index.time).mean()\n",
" # store some other information for each location for ease of access\n",
"\tdf2['Street'] = df['Street'].values[0]\n",
" \tdf2['Spaces'] = df['Spaces'].values[0]\n",
" \tdf2['Tariff'] = df['Tariff'].values[0]\n",
" \n",
" # Add this newly created DataFrame containing occupancy information to a Panel object\n",
" if first_time:\n",
" first_time = 0\n",
" p = Panel(data = [df2.values], items = [k], major_axis = df2.index, minor_axis = df2.columns)\n",
" else:\n",
" p[k] = df2"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# save/load the panel object\n",
"# pd.save(p,'parking_data_panel.pkl')\n",
"p = pd.read_pickle('parking_data_panel.pkl')\n",
"p"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 12,
"text": [
"<class 'pandas.core.panel.Panel'>\n",
"Dimensions: 1342 (items) x 1440 (major_axis) x 8 (minor_axis)\n",
"Items axis: (51.51394676, -0.14329589) to (51.5202289, -0.14500824)\n",
"Major_axis axis: 00:00:00 to 23:59:00\n",
"Minor_axis axis: Monday to Tariff"
]
}
],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# We can now interrogate the panel object to look at different aspects of the data\n",
"# let's look at the number of free spaces at 12:30 for an average monday\n",
"\n",
"h, m = 12, 30\n",
"# get the total number of spaces at each location\n",
"spaces = p.minor_xs( u'Spaces')\n",
"mon_occupancy = p.minor_xs( u'Monday')\n",
"mon_free_spaces = spaces - mon_occupancy\n",
"\n",
"# Use the Tariff to set an alpha value so we can see which parking locations are more expensive\n",
"tariff = p.minor_xs( u'Tariff').ix[datetime.time(h,m)]\n",
"\n",
"# get the free spaces for 12:30\n",
"free_space_0 = mon_free_spaces.ix[datetime.time(h,m)]\n",
"\n",
"# plot free space for each location using a the size of a circle to indicate the number of free spaces\n",
"for tup in free_space_0.keys():\n",
"\tplt.plot(tup[1], tup[0], 'bo', ms = np.max([0,free_space_0[tup]/2]),alpha = (1 + float(tariff[tup]))/5.4)\n",
"\t\t\n",
"plt.title('Westminster \\n Unoccupied Parking Spaces')\n",
"plt.text(- 0.13, 51.53,'Mon ' + str(h).zfill(2) + ':' + str(m).zfill(2))\n",
"plt.xlabel('Longitude')\n",
"plt.ylabel('Latitude')\n",
"\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nkEgkQk1NjVBaWirIZDKhvb3dUL506VLD7zR06FDhp59+6tfv119/Ldxyyy0Djmn+/PnC//3f/xm+\n//rrr4K7u7vhu7e3t7Bq1SrD961btwp+fn796iYmJgqenp5Gbb/++uvCI488IgiCIPj6+go7duww\nlK1evdqon7ORSCSClZWVYGtrK/j5+Qkvv/yyoNPp+tX7/vvvhfDwcKPxfvrpp0Z1vL29hb/97W+C\nu7u7sHfv3n5lu3btEgRBEF555RVh8uTJhrLMzEzBzMxMEARB2Lt3r+Dm5mZ079ixYw2/29lotVrh\n/fffF2JjYwWFQiG4uroKa9asMep3sOd6NqmpqYKtra0gCIJQWVkpSKVSobm5uV+9xx9/vN94AgMD\nhb179wr5+fmCk5OT8Msvvwi9vb0D9iNy/XFDaCaDvXEJFxApJi4uDltb2wHL/vznP/Pmm28aXXNx\ncaGjowOtVktHRwempqZYWVkBsHPnTmJiYoiIiGDOnDl0dHQAMHLkSLy8vC5mStecvv17tVptdF2t\nVmNiYmL4fnYIdYD29nYqKyuxs7PDwsLCUO7p6UllZSUA5eXl+Pn59eu3rKzssiL0nrmVdWZ/Z1JS\nUkJlZaUhZLutrS3Lly+ntrYW0G+Bnd3O+UhNTaWxsZH8/Hxee+01JBIJNTU1zJs3D3d3d6ytrXnw\nwQdpaGgYdLyg/5tdtWoVsbGx5zW2nxnq3tzcnO7ubnQ6HZWVlbi5ufXrZ7D/D1KplCeeeIIDBw7Q\n0tLCSy+9xIIFCwyJus4e55nPtbOzk8WLF+Pt7Y21tTXjx4+npaUFQRAoKyvDzs4Oa2vrfn2WlJTw\n9ttvG/0G5eXlVFVV4efnx7vvvsuyZctwdnYmISGBqqqqcz4LkWvPDSFMBvtP8p///IewsDAWLlxI\nc3PzRbX5448/4u7uTmhoqNH1KVOmYGVlhYuLC97e3jz//PPY2NhQX1/PP/7xD3bt2sWxY8eIiIhg\nxYoVlzyna42LiwsmJiYUFRUZXS8sLLwgwejq6kpjY6NRLo/S0lLDIufh4UF+fn6/+zw9PSksLByw\nTQsLCzo7Ow3f+4IznsmZ6WpLS0txdXXtV8fDwwMfHx+ampoM/1pbW9m8eTOgn/vZ7VwKf/3rX5HJ\nZGRkZNDS0sIXX3zRz8troECRq1atoqSkxLAldLG4uLgY2S1AP4cLcZxQKBQ88cQT2NraGmVlPPt5\n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\nQSgysyaT8PBw6tSpg7e3N8HBwbkeM2rUKLy9vfHz8yMyMrJQ5wqCIAhlg9mSiV6vZ8SIEYSHh3P2\n7FlWrFjBuXPnTI7Zvn07ly5dIjo6mu+//56goKACn/s82Lt3b2mHYFaifE+3Z7l8z3LZzMVsyeTw\n4cN4eXnh4eGBpaUlgYGBbNq0yeSYzZs3M2DAAACaNWuGRqPh5s2bBTr3efCs/0KL8j3dnuXyPctl\nMxezJZMbN25QrVo143d3d3du3LhRoGNiY2Mfe64gCIJQdpgtmSgUigIdJ+bWEgRBePqZbdneqlWr\ncu3aNeP3a9eu4e7unu8x169fx93dnaysrMeeC+Dp6VngpPW0mjZtWmmHYFaifE+3Z7l8z3LZPD09\ni/2aZksmTZo0ITo6mpiYGNzc3Fi1ahUrVqwwOaZr164sXryYwMBAIiIicHR0xMXFhYoVKz72XIBL\nly6ZK3xBEAShEMyWTCwsLFi8eDEdOnRAr9czZMgQfHx8WLp0KQDDhg2jc+fObN++HS8vL8qVK0do\naGi+5wqCIAhl01O9nokgCIJQNpT5EfAJCQkEBARQq1Yt2rdvj0ajyXHMtWvXaNOmDXXr1qVevXos\nXLjQuG/ChAn4+Pjg5+dHz549SUpKKsnwH6uo5SvI+aWloLENHjwYFxcX6tevb7L98OHDvPjii/j7\n+9O0aVOOHDlSEmEXWFHLB7Bo0SJ8fHyoV68ekyZNMnfIhVIc5QP45ptvUCqVJCQkmDPcQitq+Z6F\nZwvkXb7CPlvKfDKZPXs2AQEBXLx4kXbt2jF79uwcx1haWjJv3jyioqKIiIjg22+/NQ5ybN++PVFR\nUZw8eZJatWoxa9aski5Cvp60fOfPny/w+aWloLENGjSI8PDwHNsnTpzIjBkziIyMZPr06UycONHc\nIRdKUcv3119/sXnzZk6dOsWZM2f46KOPzB1yoRS1fCD/IbRr1y6qV69uzlCfSFHL9yw8WyDv8hX6\n2SKVcbVr15Zu3rwpSZIkxcXFSbVr137sOd26dZN2796dY/v69euld955p9hjLIqilu9Jzi8phYnt\n6tWrUr169Uy2BQYGSqtWrZIkSZL++OOPp/rfLrfy9e7dW9qzZ49ZYyyKopZPkiSpV69e0smTJyUP\nDw/p7t27Zov1SRRH+e572p8tuZWvsM+WMl8ziY+Px8XFBQAXFxfi4+PzPT4mJobIyEiaNWuWY9/P\n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\n",
"text": [
"<matplotlib.figure.Figure at 0x60665400>"
]
}
],
"prompt_number": 21
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Finally, we can loop through different times to create a series of images for creating an animation\n",
"\n",
"\n",
"# set the time step for visualising occupancy\n",
"ts = 5\n",
"cnt = 0\n",
"for h in np.arange(0,24):\n",
"\tfor m in np.arange(0,60,ts):\n",
"\n",
" # Use the Tariff to set an alpha value so we can see which parking locations are more expensive\n",
" tariff = p.minor_xs( u'Tariff').ix[datetime.time(h,m)]\n",
" \n",
" # get the free spaces for 12:30\n",
" free_space_0 = mon_free_spaces.ix[datetime.time(h,m)]\n",
" \n",
" # plot free space for each location using a the size of a circle to indicate the number of free spaces\n",
" for tup in free_space_0.keys():\n",
" plt.plot(tup[1], tup[0], 'bo', ms = np.max([0,free_space_0[tup]/2]),alpha = (1 + float(tariff[tup]))/5.4)\n",
" \n",
" plt.title('Westminster \\n Unoccupied Parking Spaces')\n",
" plt.text(- 0.13, 51.53,'Mon ' + str(h).zfill(2) + ':' + str(m).zfill(2))\n",
" plt.xlabel('Longitude')\n",
" plt.ylabel('Latitude')\n",
"\n",
"\t\tcnt = cnt + 1\n",
"\t\tfname = 'image' + str(cnt).zfill(5) + '.png'\n",
"\n",
"\t\t#print fname\n",
"\n",
"\t\tplt.savefig(fname)\n",
"\t\tplt.clf()"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.display import YouTubeVideo\n",
"YouTubeVideo('tW8o14Th8hw')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"\n",
" <iframe\n",
" width=\"400\"\n",
" height=300\"\n",
" src=\"http://www.youtube.com/embed/tW8o14Th8hw\"\n",
" frameborder=\"0\"\n",
" allowfullscreen\n",
" ></iframe>\n",
" "
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 26,
"text": [
"<IPython.lib.display.YouTubeVideo at 0x4498ceb8>"
]
}
],
"prompt_number": 26
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# QGIS (visualisation of shapefiles backed by OpenLayers maps from Google and OSM)\n",
"from IPython.display import Image\n",
"\n",
"Image(url = 'http://ianozsvald.com/wp-content/uploads/2013/10/whitehall_1to36_capacity_1341parkingbays_bytarrif.png')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"<img src=\"http://ianozsvald.com/wp-content/uploads/2013/10/whitehall_1to36_capacity_1341parkingbays_bytarrif.png\"/>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 23,
"text": [
"<IPython.core.display.Image at 0x2637d898>"
]
}
],
"prompt_number": 23
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment