In [1]:
import sys
from pathlib import Path
import json

import pandas as pd
import numpy as np
import shapely.geometry as sg
import matplotlib

DIR = Path('..')
sys.path.append(str(DIR))

import gtfstk as gt

DATA_DIR = DIR/'data/'

%load_ext autoreload
%autoreload 2
%matplotlib inline

In [2]:
# List feed

path = DATA_DIR/'cairns_gtfs.zip'
gt.list_gtfs(path)


Out[2]:
file_name file_size
0 calendar_dates.txt 387
1 routes.txt 1478
2 trips.txt 143081
3 stops.txt 26183
4 agency.txt 199
5 stop_times.txt 2561019
6 shapes.txt 864694
7 calendar.txt 337

In [3]:
# Read and print feed

feed = gt.read_gtfs(path, dist_units='km')
print(feed)


* agency --------------------
	                                         agency_name  \
0  Department of Transport and Main Roads - Trans...   

                 agency_url     agency_timezone agency_lang  agency_phone  
0  http://www.sunbus.com.au  Australia/Brisbane          en  (07)40576411  
* calendar --------------------
	                           service_id  monday  tuesday  wednesday  thursday  \
0          CNS2014-CNS_MUL-Weekday-00       1        1          1         1   
1  CNS2014-CNS_MUL-Weekday-00-0000100       0        0          0         0   
2         CNS2014-CNS_MUL-Saturday-00       0        0          0         0   
3           CNS2014-CNS_MUL-Sunday-00       0        0          0         0   

   friday  saturday  sunday start_date  end_date  
0       1         0       0   20140526  20141226  
1       1         0       0   20140530  20141226  
2       0         1       0   20140531  20141227  
3       0         0       1   20140601  20141228  
* calendar_dates --------------------
	                           service_id      date  exception_type
0          CNS2014-CNS_MUL-Weekday-00  20140609               2
1          CNS2014-CNS_MUL-Weekday-00  20141006               2
2          CNS2014-CNS_MUL-Weekday-00  20141225               2
3          CNS2014-CNS_MUL-Weekday-00  20141226               2
4  CNS2014-CNS_MUL-Weekday-00-0000100  20141226               2
* fare_attributes --------------------
	None
* fare_rules --------------------
	None
* feed_info --------------------
	None
* frequencies --------------------
	None
* routes --------------------
	   route_id route_short_name                    route_long_name route_desc  \
0   110-423              110                   City - Palm Cove        NaN   
1  110N-423             110N                   City - Palm Cove        NaN   
2   111-423              111               City - Kewarra Beach        NaN   
3   112-423              112  Yorkeys Knob - Smithfield via JCU        NaN   
4   113-423              113    Sunbus Depot - Cairns City Mall        NaN   

   route_type route_url route_color route_text_color  
0           3       NaN      7BC142           000000  
1           3       NaN      7BC142           000000  
2           3       NaN      7BC142           000000  
3           3       NaN      7BC142           000000  
4           3       NaN      7BC142           000000  
* shapes --------------------
	  shape_id  shape_pt_lat  shape_pt_lon  shape_pt_sequence
0  1100015    -16.743632    145.668255              10001
1  1100015    -16.743522    145.668394              10002
2  1100015    -16.741258    145.671277              10003
3  1100015    -16.744007    145.671074              10004
4  1100015    -16.744015    145.671074              10005
* stops --------------------
	  stop_id stop_code                                      stop_name stop_desc  \
0  750000       NaN  Cedar Rd (Palm Cove) - Hail and Ride Location       NaN   
1  750001       NaN                        Williams Esplanade N201       NaN   
2  750002       NaN           Talpa Close - Hail and Ride Location       NaN   
3  750003       NaN                              Veivers Road N203       NaN   
4  750004       NaN      Captain Cook Hwy N3 (Cairns Tropical Zoo)       NaN   

    stop_lat    stop_lon zone_id stop_url  location_type parent_station  
0 -16.743590  145.668217     NaN      NaN              0            NaN  
1 -16.744015  145.671110     NaN      NaN              0            NaN  
2 -16.749258  145.667893     NaN      NaN              0            NaN  
3 -16.748213  145.663675     NaN      NaN              0            NaN  
4 -16.757931  145.663283     NaN      NaN              0            NaN  
* stop_times --------------------
	                              trip_id arrival_time departure_time stop_id  \
0  CNS2014-CNS_MUL-Weekday-00-4165878     05:50:00       05:50:00  750337   
1  CNS2014-CNS_MUL-Weekday-00-4165878     05:50:00       05:50:00  750000   
2  CNS2014-CNS_MUL-Weekday-00-4165878     05:52:00       05:52:00  750001   
3  CNS2014-CNS_MUL-Weekday-00-4165878     05:54:00       05:54:00  750002   
4  CNS2014-CNS_MUL-Weekday-00-4165878     05:55:00       05:55:00  750003   

   stop_sequence  pickup_type  drop_off_type  
0              1            0              0  
1              2            0              0  
2              3            0              0  
3              4            0              0  
4              5            0              0  
* transfers --------------------
	None
* trips --------------------
	  route_id                  service_id                             trip_id  \
0  110-423  CNS2014-CNS_MUL-Weekday-00  CNS2014-CNS_MUL-Weekday-00-4165878   
1  110-423  CNS2014-CNS_MUL-Weekday-00  CNS2014-CNS_MUL-Weekday-00-4165879   
2  110-423  CNS2014-CNS_MUL-Weekday-00  CNS2014-CNS_MUL-Weekday-00-4165880   
3  110-423  CNS2014-CNS_MUL-Weekday-00  CNS2014-CNS_MUL-Weekday-00-4165881   
4  110-423  CNS2014-CNS_MUL-Weekday-00  CNS2014-CNS_MUL-Weekday-00-4165882   

              trip_headsign  direction_id block_id shape_id  
0  The Pier Cairns Terminus             0      NaN  1100023  
1  The Pier Cairns Terminus             0      NaN  1100023  
2  The Pier Cairns Terminus             0      NaN  1100023  
3  The Pier Cairns Terminus             0      NaN  1100023  
4  The Pier Cairns Terminus             0      NaN  1100023  
* dist_units --------------------
	km

In [4]:
feed.describe()


Out[4]:
indicator value
0 agencies [Department of Transport and Main Roads - Tran...
1 timezone Australia/Brisbane
2 start_date 20140526
3 end_date 20141228
4 num_routes 22
5 num_trips 1339
6 num_stops 416
7 num_shapes 54
8 sample_date 20140529
9 num_routes_active_on_sample_date 20
10 num_trips_active_on_sample_date 622
11 num_stops_active_on_sample_date 416

In [5]:
# Validate

feed.validate()


Out[5]:
type message table rows
0 warning Feed expired calendar/calendar_dates []
1 warning Repeated pair (trip_id, departure_time) stop_times [17710, 17722, 17730, 17732, 17736, 17739, 177...

In [6]:
# Compute trip stats

trip_stats = feed.compute_trip_stats()
trip_stats.head().T


Out[6]:
703 0 704 705 706
trip_id CNS2014-CNS_MUL-Weekday-00-4165878 CNS2014-CNS_MUL-Saturday-00-4165937 CNS2014-CNS_MUL-Weekday-00-4165879 CNS2014-CNS_MUL-Weekday-00-4165880 CNS2014-CNS_MUL-Weekday-00-4165881
route_id 110-423 110-423 110-423 110-423 110-423
route_short_name 110 110 110 110 110
route_type 3 3 3 3 3
direction_id 0 0 0 0 0
shape_id 1100023 1100023 1100023 1100023 1100023
num_stops 35 35 35 35 35
start_time 05:50:00 06:16:00 06:20:00 06:50:00 07:15:00
end_time 06:50:00 07:10:00 07:20:00 07:50:00 08:20:00
start_stop_id 750337 750337 750337 750337 750337
end_stop_id 750449 750449 750449 750449 750449
is_loop 0 0 0 0 0
duration 1 0.9 1 1 1.08333
distance 32.5071 32.5071 32.5071 32.5071 32.5071
speed 32.5071 36.119 32.5071 32.5071 30.0066

In [7]:
# Add shape_dist_traveled column to stop times

feed = feed.append_dist_to_stop_times(trip_stats)
feed.stop_times.head().T


Out[7]:
17709 17710 17711 17712 17713
trip_id CNS2014-CNS_MUL-Saturday-00-4165937 CNS2014-CNS_MUL-Saturday-00-4165937 CNS2014-CNS_MUL-Saturday-00-4165937 CNS2014-CNS_MUL-Saturday-00-4165937 CNS2014-CNS_MUL-Saturday-00-4165937
arrival_time 06:16:00 06:16:00 06:18:00 06:20:00 06:21:00
departure_time 06:16:00 06:16:00 06:18:00 06:20:00 06:21:00
stop_id 750337 750000 750001 750002 750003
stop_sequence 1 2 3 4 5
pickup_type 0 0 0 0 0
drop_off_type 0 0 0 0 0
shape_dist_traveled 0 0.46864 1.19038 2.15478 2.619

In [8]:
# Choose study dates

week = feed.get_first_week()
dates = [week[4], week[6]]  # First Friday and Sunday
dates


Out[8]:
['20140530', '20140601']

In [9]:
# Compute feed time series

fts = feed.compute_feed_time_series(trip_stats, dates, freq='6H')
fts


Out[9]:
indicator num_trip_ends num_trip_starts num_trips service_distance service_duration service_speed
datetime
2014-05-30 00:00:00 14.0 17.0 17.0 582.579000 12.450000 46.793494
2014-05-30 06:00:00 214.0 240.0 242.0 4954.224929 173.800000 28.505322
2014-05-30 12:00:00 248.0 253.0 281.0 5505.336088 193.216667 28.493070
2014-05-30 18:00:00 155.0 126.0 160.0 3248.283810 103.550000 31.369230
2014-05-31 00:00:00 NaN NaN NaN NaN NaN NaN
2014-05-31 06:00:00 NaN NaN NaN NaN NaN NaN
2014-05-31 12:00:00 NaN NaN NaN NaN NaN NaN
2014-05-31 18:00:00 NaN NaN NaN NaN NaN NaN
2014-06-01 00:00:00 0.0 0.0 0.0 26.198832 0.766667 34.172389
2014-06-01 06:00:00 68.0 80.0 80.0 1794.087189 55.766667 32.171318
2014-06-01 12:00:00 111.0 110.0 122.0 2615.694132 81.516667 32.087845
2014-06-01 18:00:00 84.0 76.0 87.0 1954.866162 59.633333 32.781434

In [10]:
gt.downsample(fts, freq='12H')


Out[10]:
indicator num_trip_ends num_trip_starts num_trips service_distance service_duration service_speed
datetime
2014-05-30 00:00:00 228.0 257.0 256.0 5536.803929 186.250000 29.727806
2014-05-30 12:00:00 403.0 379.0 408.0 8753.619898 296.766667 29.496641
2014-05-31 00:00:00 NaN NaN NaN NaN NaN NaN
2014-05-31 12:00:00 NaN NaN NaN NaN NaN NaN
2014-06-01 00:00:00 68.0 80.0 80.0 1820.286021 56.533333 32.198456
2014-06-01 12:00:00 195.0 186.0 198.0 4570.560294 141.150000 32.380873

In [11]:
# Compute feed stats for first week

feed_stats = feed.compute_feed_stats(trip_stats, week)
feed_stats


Out[11]:
num_stops num_routes num_trips num_trip_starts num_trip_ends service_distance service_duration service_speed peak_num_trips peak_start_time peak_end_time date
0 416 20 622 622 617 13774.027234 472.600000 29.145212 39 08:16:00 08:18:00 20140526
1 416 20 622 622 617 13774.027234 472.600000 29.145212 39 08:16:00 08:18:00 20140527
2 416 20 622 622 617 13774.027234 472.600000 29.145212 39 08:16:00 08:18:00 20140528
3 416 20 622 622 617 13774.027234 472.600000 29.145212 39 08:16:00 08:18:00 20140529
4 416 22 636 636 617 14290.423827 483.016667 29.585778 39 08:16:00 08:18:00 20140530
5 415 22 437 437 415 9911.526097 310.400000 31.931463 23 17:28:00 17:37:00 20140531
6 411 14 266 266 263 6390.846315 197.683333 32.328706 17 14:31:00 14:37:00 20140601

In [11]:
# Compute route time series

rts = feed.compute_route_time_series(trip_stats, dates, freq='12H')
rts


Out[11]:
indicator num_trip_ends ... service_speed
route_id 110-423 110N-423 111-423 112-423 113-423 120-423 120N-423 121-423 122-423 123-423 ... 131N-423 133-423 140-423 140N-423 141-423 142-423 143-423 143W-423 150-423 150E-423
datetime
2014-05-30 00:00:00 19.0 9.0 18.0 4.0 3.0 11.0 0.0 13.0 13.0 21.0 ... 0.000000 25.035081 25.634669 46.755126 20.802088 26.021598 24.366138 0.000000 31.565566 0.000000
2014-05-30 12:00:00 39.0 0.0 39.0 11.0 3.0 21.0 2.0 21.0 20.0 38.0 ... 24.067374 26.439134 25.832253 0.000000 20.828188 26.417789 24.307749 30.331218 31.547064 34.121380
2014-05-31 00:00:00 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-05-31 12:00:00 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2014-06-01 00:00:00 7.0 NaN 8.0 3.0 NaN 4.0 NaN 4.0 3.0 5.0 ... 0.000000 27.937311 NaN NaN NaN 28.218140 NaN 29.759761 NaN 33.270085
2014-06-01 12:00:00 24.0 NaN 24.0 5.0 NaN 12.0 NaN 10.0 11.0 16.0 ... 25.503394 27.917299 NaN NaN NaN 28.163040 NaN 29.717174 NaN 33.242294

6 rows × 132 columns


In [13]:
# Slice time series

inds = ['service_distance', 'service_duration', 'service_speed']
rids = ['110-423', '110N-423']

rts.loc[:, (inds, rids)]


Out[13]:
indicator service_distance service_duration service_speed
route_id 110-423 110N-423 110-423 110N-423 110-423 110N-423
datetime
2014-05-30 00:00:00 677.652816 399.508778 21.016667 7.916667 32.243592 50.464267
2014-05-30 12:00:00 1216.570247 0.000000 36.333333 0.000000 33.483585 0.000000
2014-05-31 00:00:00 NaN NaN NaN NaN NaN NaN
2014-05-31 12:00:00 NaN NaN NaN NaN NaN NaN
2014-06-01 00:00:00 279.005147 NaN 8.066667 NaN 34.587415 NaN
2014-06-01 12:00:00 732.594405 NaN 21.266667 NaN 34.448013 NaN

In [14]:
# Slice again by cross-section

rts.xs(rids[0], axis="columns", level=1)


Out[14]:
indicator num_trip_ends num_trip_starts num_trips service_distance service_duration service_speed
datetime
2014-05-30 00:00:00 19.0 23.0 23.0 677.652816 21.016667 32.243592
2014-05-30 12:00:00 39.0 36.0 40.0 1216.570247 36.333333 33.483585
2014-05-31 00:00:00 NaN NaN NaN NaN NaN NaN
2014-05-31 12:00:00 NaN NaN NaN NaN NaN NaN
2014-06-01 00:00:00 7.0 9.0 9.0 279.005147 8.066667 34.587415
2014-06-01 12:00:00 24.0 23.0 25.0 732.594405 21.266667 34.448013

In [15]:
# Compute trip locations for every hour

rng = pd.date_range('1/1/2000', periods=24, freq='H')
times = [t.strftime('%H:%M:%S') for t in rng]
loc = feed.locate_trips(dates[0], times)
loc.head()


Out[15]:
trip_id time rel_dist route_id direction_id shape_id lon lat
0 CNS2014-CNS_MUL-Weekday-00-4165878 06:00:00 0.152945 110-423 0 1100023 145.669490 -16.762839
1 CNS2014-CNS_MUL-Weekday-00-4165879 07:00:00 0.720587 110-423 0 1100023 145.732413 -16.865060
2 CNS2014-CNS_MUL-Weekday-00-4165880 07:00:00 0.152945 110-423 0 1100023 145.669490 -16.762839
3 CNS2014-CNS_MUL-Weekday-00-4165881 08:00:00 0.720587 110-423 0 1100023 145.732413 -16.865060
4 CNS2014-CNS_MUL-Weekday-00-4165882 08:00:00 0.202283 110-423 0 1100023 145.675422 -16.768954

In [16]:
# Build a route timetable

route_id = feed.routes['route_id'].iat[0]
feed.build_route_timetable(route_id, dates).T


Out[16]:
0 1 2 3 4 5 6 7 8 9 ... 30963 30964 30965 30966 30967 30968 30969 30970 30971 30972
route_id 110-423 110-423 110-423 110-423 110-423 110-423 110-423 110-423 110-423 110-423 ... 110-423 110-423 110-423 110-423 110-423 110-423 110-423 110-423 110-423 110-423
service_id CNS2014-CNS_MUL-Weekday-00 CNS2014-CNS_MUL-Weekday-00 CNS2014-CNS_MUL-Weekday-00 CNS2014-CNS_MUL-Weekday-00 CNS2014-CNS_MUL-Weekday-00 CNS2014-CNS_MUL-Weekday-00 CNS2014-CNS_MUL-Weekday-00 CNS2014-CNS_MUL-Weekday-00 CNS2014-CNS_MUL-Weekday-00 CNS2014-CNS_MUL-Weekday-00 ... CNS2014-CNS_MUL-Sunday-00 CNS2014-CNS_MUL-Sunday-00 CNS2014-CNS_MUL-Sunday-00 CNS2014-CNS_MUL-Sunday-00 CNS2014-CNS_MUL-Sunday-00 CNS2014-CNS_MUL-Sunday-00 CNS2014-CNS_MUL-Sunday-00 CNS2014-CNS_MUL-Sunday-00 CNS2014-CNS_MUL-Sunday-00 CNS2014-CNS_MUL-Sunday-00
trip_id CNS2014-CNS_MUL-Weekday-00-4165878 CNS2014-CNS_MUL-Weekday-00-4165878 CNS2014-CNS_MUL-Weekday-00-4165878 CNS2014-CNS_MUL-Weekday-00-4165878 CNS2014-CNS_MUL-Weekday-00-4165878 CNS2014-CNS_MUL-Weekday-00-4165878 CNS2014-CNS_MUL-Weekday-00-4165878 CNS2014-CNS_MUL-Weekday-00-4165878 CNS2014-CNS_MUL-Weekday-00-4165878 CNS2014-CNS_MUL-Weekday-00-4165878 ... CNS2014-CNS_MUL-Sunday-00-4166102 CNS2014-CNS_MUL-Sunday-00-4166102 CNS2014-CNS_MUL-Sunday-00-4166102 CNS2014-CNS_MUL-Sunday-00-4166102 CNS2014-CNS_MUL-Sunday-00-4166102 CNS2014-CNS_MUL-Sunday-00-4166102 CNS2014-CNS_MUL-Sunday-00-4166102 CNS2014-CNS_MUL-Sunday-00-4166102 CNS2014-CNS_MUL-Sunday-00-4166102 CNS2014-CNS_MUL-Sunday-00-4166102
trip_headsign The Pier Cairns Terminus The Pier Cairns Terminus The Pier Cairns Terminus The Pier Cairns Terminus The Pier Cairns Terminus The Pier Cairns Terminus The Pier Cairns Terminus The Pier Cairns Terminus The Pier Cairns Terminus The Pier Cairns Terminus ... Palm Cove Palm Cove Palm Cove Palm Cove Palm Cove Palm Cove Palm Cove Palm Cove Palm Cove Palm Cove
direction_id 0 0 0 0 0 0 0 0 0 0 ... 1 1 1 1 1 1 1 1 1 1
block_id NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
shape_id 1100023 1100023 1100023 1100023 1100023 1100023 1100023 1100023 1100023 1100023 ... 1100016 1100016 1100016 1100016 1100016 1100016 1100016 1100016 1100016 1100016
arrival_time 05:50:00 05:50:00 05:52:00 05:54:00 05:55:00 05:57:00 05:59:00 06:00:00 06:01:00 06:02:00 ... 23:50:00 23:51:00 23:52:00 23:54:00 23:54:00 23:56:00 23:59:00 24:01:00 24:02:00 24:04:00
departure_time 05:50:00 05:50:00 05:52:00 05:54:00 05:55:00 05:57:00 05:59:00 06:00:00 06:01:00 06:02:00 ... 23:50:00 23:51:00 23:52:00 23:54:00 23:54:00 23:56:00 23:59:00 24:01:00 24:02:00 24:04:00
stop_id 750337 750000 750001 750002 750003 750004 750005 750006 750007 750008 ... 750344 750343 750342 750036 750037 750038 750339 750039 750040 750338
stop_sequence 1 2 3 4 5 6 7 8 9 10 ... 23 24 25 26 27 28 29 30 31 32
pickup_type 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
drop_off_type 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
shape_dist_traveled 0 0.46864 1.19038 2.15478 2.619 3.85331 4.76089 4.97181 5.38468 5.91894 ... 23.39 23.9469 24.5038 25.6176 25.6176 26.7315 28.4022 29.516 30.0729 31.1867
date 20140530 20140530 20140530 20140530 20140530 20140530 20140530 20140530 20140530 20140530 ... 20140601 20140601 20140601 20140601 20140601 20140601 20140601 20140601 20140601 20140601

15 rows × 3050 columns


In [17]:
# Compute screen line counts

path = DATA_DIR/'cairns_screen_line.geojson'
with path.open() as src:
    line = json.load(src)
    line = sg.shape(line['features'][0]['geometry'])
print(line)

feed.compute_screen_line_counts(line, dates)


LINESTRING (145.7326126098633 -16.84915165200684, 145.7393932342529 -16.84999364745065)
Out[17]:
date trip_id route_id route_short_name crossing_time orientation
0 20140530 CNS2014-CNS_MUL-Weekday-00-4166383 120-423 120 05:42:28 -1
1 20140530 CNS2014-CNS_MUL-Weekday-00-4166383 120-423 120 05:50:28 1
2 20140530 CNS2014-CNS_MUL-Weekday-00-4166384 120-423 120 06:42:28 -1
3 20140530 CNS2014-CNS_MUL-Weekday-00-4166384 120-423 120 06:50:28 1
34 20140530 CNS2014-CNS_MUL-Weekday-00-4166400 120-423 120 07:31:32 -1
35 20140530 CNS2014-CNS_MUL-Weekday-00-4166400 120-423 120 07:39:28 1
4 20140530 CNS2014-CNS_MUL-Weekday-00-4166385 120-423 120 07:42:28 -1
5 20140530 CNS2014-CNS_MUL-Weekday-00-4166385 120-423 120 07:50:28 1
36 20140530 CNS2014-CNS_MUL-Weekday-00-4166401 120-423 120 08:31:32 -1
37 20140530 CNS2014-CNS_MUL-Weekday-00-4166401 120-423 120 08:39:28 1
6 20140530 CNS2014-CNS_MUL-Weekday-00-4166386 120-423 120 08:42:28 -1
7 20140530 CNS2014-CNS_MUL-Weekday-00-4166386 120-423 120 08:50:28 1
38 20140530 CNS2014-CNS_MUL-Weekday-00-4166402 120-423 120 09:31:32 -1
39 20140530 CNS2014-CNS_MUL-Weekday-00-4166402 120-423 120 09:39:28 1
8 20140530 CNS2014-CNS_MUL-Weekday-00-4166387 120-423 120 09:42:28 -1
9 20140530 CNS2014-CNS_MUL-Weekday-00-4166387 120-423 120 09:50:28 1
40 20140530 CNS2014-CNS_MUL-Weekday-00-4166403 120-423 120 10:31:32 -1
41 20140530 CNS2014-CNS_MUL-Weekday-00-4166403 120-423 120 10:39:28 1
10 20140530 CNS2014-CNS_MUL-Weekday-00-4166388 120-423 120 10:42:28 -1
11 20140530 CNS2014-CNS_MUL-Weekday-00-4166388 120-423 120 10:50:28 1
42 20140530 CNS2014-CNS_MUL-Weekday-00-4166404 120-423 120 11:31:32 -1
43 20140530 CNS2014-CNS_MUL-Weekday-00-4166404 120-423 120 11:39:28 1
12 20140530 CNS2014-CNS_MUL-Weekday-00-4166389 120-423 120 11:42:28 -1
13 20140530 CNS2014-CNS_MUL-Weekday-00-4166389 120-423 120 11:50:28 1
44 20140530 CNS2014-CNS_MUL-Weekday-00-4166405 120-423 120 12:31:32 -1
45 20140530 CNS2014-CNS_MUL-Weekday-00-4166405 120-423 120 12:39:28 1
14 20140530 CNS2014-CNS_MUL-Weekday-00-4166390 120-423 120 12:42:28 -1
15 20140530 CNS2014-CNS_MUL-Weekday-00-4166390 120-423 120 12:50:28 1
46 20140530 CNS2014-CNS_MUL-Weekday-00-4166406 120-423 120 13:31:32 -1
47 20140530 CNS2014-CNS_MUL-Weekday-00-4166406 120-423 120 13:39:28 1
... ... ... ... ... ... ...
84 20140601 CNS2014-CNS_MUL-Sunday-00-4166450 120-423 120 08:47:32 -1
85 20140601 CNS2014-CNS_MUL-Sunday-00-4166450 120-423 120 08:55:28 1
70 20140601 CNS2014-CNS_MUL-Sunday-00-4166443 120-423 120 09:58:28 -1
71 20140601 CNS2014-CNS_MUL-Sunday-00-4166443 120-423 120 10:06:28 1
86 20140601 CNS2014-CNS_MUL-Sunday-00-4166451 120-423 120 10:47:32 -1
87 20140601 CNS2014-CNS_MUL-Sunday-00-4166451 120-423 120 10:55:28 1
72 20140601 CNS2014-CNS_MUL-Sunday-00-4166444 120-423 120 11:58:28 -1
73 20140601 CNS2014-CNS_MUL-Sunday-00-4166444 120-423 120 12:06:28 1
88 20140601 CNS2014-CNS_MUL-Sunday-00-4166452 120-423 120 12:47:32 -1
89 20140601 CNS2014-CNS_MUL-Sunday-00-4166452 120-423 120 12:55:28 1
74 20140601 CNS2014-CNS_MUL-Sunday-00-4166445 120-423 120 13:58:28 -1
75 20140601 CNS2014-CNS_MUL-Sunday-00-4166445 120-423 120 14:06:28 1
90 20140601 CNS2014-CNS_MUL-Sunday-00-4166453 120-423 120 14:47:32 -1
91 20140601 CNS2014-CNS_MUL-Sunday-00-4166453 120-423 120 14:55:28 1
76 20140601 CNS2014-CNS_MUL-Sunday-00-4166446 120-423 120 15:58:28 -1
77 20140601 CNS2014-CNS_MUL-Sunday-00-4166446 120-423 120 16:06:28 1
92 20140601 CNS2014-CNS_MUL-Sunday-00-4166454 120-423 120 16:47:32 -1
93 20140601 CNS2014-CNS_MUL-Sunday-00-4166454 120-423 120 16:55:28 1
78 20140601 CNS2014-CNS_MUL-Sunday-00-4166447 120-423 120 17:58:28 -1
79 20140601 CNS2014-CNS_MUL-Sunday-00-4166447 120-423 120 18:06:28 1
94 20140601 CNS2014-CNS_MUL-Sunday-00-4166455 120-423 120 18:47:32 -1
95 20140601 CNS2014-CNS_MUL-Sunday-00-4166455 120-423 120 18:55:28 1
80 20140601 CNS2014-CNS_MUL-Sunday-00-4166448 120-423 120 19:58:28 -1
81 20140601 CNS2014-CNS_MUL-Sunday-00-4166448 120-423 120 20:06:28 1
96 20140601 CNS2014-CNS_MUL-Sunday-00-4166456 120-423 120 20:47:32 -1
97 20140601 CNS2014-CNS_MUL-Sunday-00-4166456 120-423 120 20:55:28 1
82 20140601 CNS2014-CNS_MUL-Sunday-00-4166449 120-423 120 21:58:28 -1
83 20140601 CNS2014-CNS_MUL-Sunday-00-4166449 120-423 120 22:06:28 1
98 20140601 CNS2014-CNS_MUL-Sunday-00-4166457 120-423 120 22:47:32 -1
99 20140601 CNS2014-CNS_MUL-Sunday-00-4166457 120-423 120 22:55:28 1

100 rows × 6 columns


In [18]:
# You need to install Folium for this to work

rids = feed.routes.route_id.loc[2:4]
feed.map_routes(rids)


Out[18]:

In [ ]: