In [1]:
import dask.distributed
import dask.dataframe as dd
import pandas as pd
import numpy as np

In [2]:
client = dask.distributed.Client('localhost:8786')

In [16]:
client.restart()


Out[16]:
<Client: scheduler='tcp://localhost:8786' processes=4 cores=4>

In [17]:
df = dd.read_parquet('/bigdata/citibike.parquet')
# df = client.persist(df.repartition(npartitions=20))

In [18]:
df.head()


Out[18]:
trip_duration start_time stop_time start_station_id start_station_name start_station_latitude start_station_longitude end_station_id end_station_name end_station_latitude end_station_longitude bike_id user_type birth_year gender
0 634 2013-07-01 00:00:00 2013-07-01 00:10:34 164 E 47 St & 2 Ave 40.753231 -73.970322 504 1 Ave & E 15 St 40.732220 -73.981659 16950 Customer NaN 0
1 1547 2013-07-01 00:00:02 2013-07-01 00:25:49 388 W 26 St & 10 Ave 40.749718 -74.002953 459 W 20 St & 11 Ave 40.746746 -74.007759 19816 Customer NaN 0
2 178 2013-07-01 00:01:04 2013-07-01 00:04:02 293 Lafayette St & E 8 St 40.730286 -73.990768 237 E 11 St & 2 Ave 40.730473 -73.986725 14548 Subscriber 1980.0 2
3 1580 2013-07-01 00:01:06 2013-07-01 00:27:26 531 Forsyth St & Broome St 40.718941 -73.992661 499 Broadway & W 60 St 40.769154 -73.981918 16063 Customer NaN 0
4 757 2013-07-01 00:01:10 2013-07-01 00:13:47 382 University Pl & E 14 St 40.734928 -73.992004 410 Suffolk St & Stanton St 40.720665 -73.985176 19213 Subscriber 1986.0 1

In [7]:
all_ids_in_dataset = df.start_station_id.unique().compute().values.tolist() + df.end_station_id.unique().compute().values.tolist()
all_ids_in_dataset.sort()

In [8]:
import urllib, json

In [9]:
zz = pd.DataFrame(json.loads(
        (urllib.request.urlopen('https://feeds.citibikenyc.com/stations/stations.json').read()).decode('utf-8')
    )['stationBeanList'])
zz.head()


Out[9]:
altitude availableBikes availableDocks city id landMark lastCommunicationTime latitude location longitude postalCode stAddress1 stAddress2 stationName statusKey statusValue testStation totalDocks
0 1 37 72 2017-04-19 12:56:59 PM 40.767272 -73.993929 W 52 St & 11 Ave W 52 St & 11 Ave 1 In Service False 39
1 27 6 79 2017-04-19 12:56:18 PM 40.719116 -74.006667 Franklin St & W Broadway Franklin St & W Broadway 1 In Service False 33
2 0 0 82 2017-04-13 12:05:52 PM 40.711174 -74.000165 St James Pl & Pearl St St James Pl & Pearl St 3 Not In Service False 0
3 33 26 83 2017-04-19 12:58:16 PM 40.683826 -73.976323 Atlantic Ave & Fort Greene Pl Atlantic Ave & Fort Greene Pl 1 In Service False 62
4 12 26 116 2017-04-19 12:58:08 PM 40.741776 -74.001497 W 17 St & 8 Ave W 17 St & 8 Ave 1 In Service False 39

In [20]:
df.start_station_id.compute().shape


Out[20]:
(36902025,)

In [21]:
df_s = df[['start_station_id', 'start_station_name', 'start_station_latitude', 'start_station_longitude']]
df_e = df[['end_station_id', 'end_station_name', 'end_station_latitude', 'end_station_longitude']]

In [22]:
df_s = df_s[(df_s.start_station_latitude > 40.) & (df_s.start_station_latitude < 41.)]
df_s = df_s[(df_s.start_station_longitude + 74.0 > -0.25) & (df_s.start_station_longitude + 74.0 < 0.25)]

df_e = df_e[(df_e.end_station_latitude > 40.) & (df_e.end_station_latitude < 41.)]
df_e = df_e[(df_e.end_station_longitude + 74.0 > -0.25) & (df_e.end_station_longitude + 74.0 < 0.25)]

In [23]:
df_s.head()


Out[23]:
start_station_id start_station_name start_station_latitude start_station_longitude
0 164 E 47 St & 2 Ave 40.753231 -73.970322
1 388 W 26 St & 10 Ave 40.749718 -74.002953
2 293 Lafayette St & E 8 St 40.730286 -73.990768
3 531 Forsyth St & Broome St 40.718941 -73.992661
4 382 University Pl & E 14 St 40.734928 -73.992004

In [26]:
a1 = df_s.groupby(['start_station_id', 'start_station_name']).mean().compute()
a2 = df_e.groupby(['end_station_id', 'end_station_name']).mean().compute()

In [27]:
b1 = a1.copy()
b2 = a2.copy()

In [28]:
b1.index = b1.index.rename(['id', 'name'])
b1.columns = ['lat', 'lon']
b2.index = b2.index.rename(['id', 'name'])
b2.columns = ['lat', 'lon']

In [83]:
c = b1.append(b2).drop_duplicates().reset_index().sort_values('id').reset_index(drop=True)

In [106]:
mm = (df[['start_station_id', 'start_station_name', 'end_station_id', 'end_station_name']])[(df.start_station_id==3239) | (df.end_station_id == 3239)].compute()
mm


Out[106]:
start_station_id start_station_name end_station_id end_station_name
266052 3239 Bressler 3239 Bressler
268611 3239 Bressler 3239 Bressler
268802 3239 Bressler 3239 Bressler
269195 3239 Bressler 3239 Bressler
341927 3239 Bressler 3239 Bressler
343318 3239 Bressler 3239 Bressler
347861 3239 Bressler 3239 Bressler
365081 3239 Bressler 3239 Bressler
373718 3239 Bressler 3239 Bressler
374793 3239 Bressler 3239 Bressler
375450 3239 Bressler 3239 Bressler
6667 3239 Bressler 3239 Bressler
20079 3239 Bressler 3239 Bressler
21458 3239 Bressler 3239 Bressler
23007 3239 Bressler 3239 Bressler
23382 3239 Bressler 3239 Bressler
24112 3239 Bressler 3239 Bressler
25791 3239 Bressler 3239 Bressler

In [85]:
c.sort_values(['lat', 'lon'])


Out[85]:
id name lat lon
1074 3239 Bressler 40.646539 -74.016588
1083 3245 Kiosk in a box Motivate 40.646677 -74.016298
734 3040 SSP Tech Workshop 40.646678 -74.016262
733 3040 SSP Tech Workshop 40.646679 -74.016269
116 255 NYCBS Depot - SSP 40.646765 -74.016513
117 255 NYCBS Depot - SSP 40.646766 -74.016510
731 3036 8D OPS 01 40.651489 -74.026636
1384 3423 West Drive & Prospect Park West 40.661064 -73.979458
1385 3423 West Drive & Prospect Park West 40.661066 -73.979451
1400 3432 Bike in Movie Night | Prospect Park Bandshell 40.662987 -73.976919
1401 3432 Bike in Movie Night | Prospect Park Bandshell 40.662988 -73.976922
1172 3310 14 St & 7 Ave 40.663779 -73.983970
1173 3310 14 St & 7 Ave 40.663781 -73.983969
1153 3300 Prospect Park West & 8 St 40.665146 -73.976375
1152 3300 Prospect Park West & 8 St 40.665147 -73.976377
1165 3306 10 St & 7 Ave 40.666206 -73.982001
1164 3306 10 St & 7 Ave 40.666208 -73.982001
1188 3319 14 St & 5 Ave 40.666285 -73.988950
1189 3319 14 St & 5 Ave 40.666287 -73.988959
1178 3313 6 Ave & 12 St 40.666319 -73.985456
1179 3313 6 Ave & 12 St 40.666319 -73.985458
1160 3304 6 Ave & 9 St 40.668124 -73.983782
1161 3304 6 Ave & 9 St 40.668125 -73.983779
1252 3354 3 St & Prospect Park West 40.668132 -73.973639
1253 3354 3 St & Prospect Park West 40.668133 -73.973642
1198 3324 3 Ave & 14 St 40.668544 -73.993327
1199 3324 3 Ave & 14 St 40.668544 -73.993333
1194 3322 12 St & 4 Ave 40.668601 -73.990444
1195 3322 12 St & 4 Ave 40.668602 -73.990439
1186 3317 10 St & 5 Ave 40.668628 -73.987002
... ... ... ... ...
1181 3314 W 95 St & Broadway 40.793769 -73.971884
1180 3314 W 95 St & Broadway 40.793773 -73.971886
1166 3307 West End Ave & W 94 St 40.794165 -73.974123
1167 3307 West End Ave & W 94 St 40.794168 -73.974121
1207 3328 W 100 St & Manhattan Ave 40.794996 -73.964502
1206 3328 W 100 St & Manhattan Ave 40.795000 -73.964500
1229 3341 Central Park West & W 102 St 40.795345 -73.961860
1228 3341 Central Park West & W 102 St 40.795347 -73.961864
1341 3400 E 110 St & Madison Ave 40.796155 -73.947823
1340 3400 E 110 St & Madison Ave 40.796157 -73.947824
1157 3302 Columbus Ave & W 103 St 40.796935 -73.964336
1156 3302 Columbus Ave & W 103 St 40.796937 -73.964344
1246 3350 W 100 St & Broadway 40.797368 -73.970411
1247 3350 W 100 St & Broadway 40.797371 -73.970416
1196 3323 W 106 St & Central Park West 40.798183 -73.960594
1197 3323 W 106 St & Central Park West 40.798191 -73.960598
1185 3316 W 104 St & Amsterdam Ave 40.798991 -73.966219
1184 3316 W 104 St & Amsterdam Ave 40.798991 -73.966217
1291 3374 Central Park North & Adam Clayton Powell Blvd 40.799484 -73.955612
1292 3374 Central Park North & Adam Clayton Powell Blvd 40.799486 -73.955614
1232 3343 W 107 St & Columbus Ave 40.799754 -73.962110
1233 3343 W 107 St & Columbus Ave 40.799755 -73.962108
1259 3357 W 106 St & Amsterdam Ave 40.800833 -73.966447
1258 3357 W 106 St & Amsterdam Ave 40.800834 -73.966450
1213 3331 Riverside Dr & W 104 St 40.801342 -73.971141
1212 3331 Riverside Dr & W 104 St 40.801345 -73.971141
1277 3366 West End Ave & W 107 St 40.802117 -73.968177
1276 3366 West End Ave & W 107 St 40.802117 -73.968177
1307 3383 Cathedral Pkwy & Broadway 40.804216 -73.966983
1308 3383 Cathedral Pkwy & Broadway 40.804218 -73.966992

1413 rows × 4 columns


In [99]:
zz[['id', 'stationName', 'latitude', 'longitude']].sort_values(['latitude', 'longitude'])


Out[99]:
id stationName latitude longitude
639 3423 West Drive & Prospect Park West 40.661063 -73.979453
530 3310 14 St & 7 Ave 40.663779 -73.983968
520 3300 Prospect Park West & 8 St 40.665147 -73.976376
526 3306 10 St & 7 Ave 40.666208 -73.981999
539 3319 14 St & 5 Ave 40.666287 -73.988951
533 3313 6 Ave & 12 St 40.666318 -73.985462
524 3304 6 Ave & 9 St 40.668127 -73.983776
573 3354 3 St & Prospect Park West 40.668132 -73.973638
544 3324 3 Ave & 14 St 40.668546 -73.993333
542 3322 12 St & 4 Ave 40.668603 -73.990439
537 3317 10 St & 5 Ave 40.668627 -73.987001
517 3297 6 St & 7 Ave 40.668663 -73.979881
584 3365 3 St & 7 Ave 40.670384 -73.978397
622 3405 5 St & 6 Ave 40.670484 -73.982090
621 3404 7 St & 5 Ave 40.670492 -73.985417
620 3403 4 Ave & 9 St 40.670513 -73.988766
577 3358 Garfield Pl & 8 Ave 40.671198 -73.974841
618 3401 2 Ave & 9 St 40.672481 -73.993314
550 3330 Henry St & Bay St 40.672506 -74.004947
616 3399 7 St & 3 Ave 40.672603 -73.989830
571 3352 Sigourney St & Columbia St 40.672672 -74.008795
587 3368 5 Ave & 3 St 40.672815 -73.983524
568 3349 Grand Army Plaza & Plaza St West 40.672968 -73.970880
556 3337 Dwight St & Van Dyke St 40.673636 -74.011956
580 3361 Carroll St & 6 Ave 40.674089 -73.978728
546 3326 Clinton St & Centre St 40.674340 -74.001947
590 3371 4 Ave & 2 St 40.674613 -73.985011
615 3398 Smith St & 9 St 40.674696 -73.997858
553 3333 Columbia St & Lorraine St 40.674706 -74.007557
572 3353 Reed St & Van Brunt St 40.674784 -74.016128
... ... ... ... ...
608 3391 E 106 St & 1 Ave 40.789253 -73.939562
564 3345 Madison Ave & E 99 St 40.789485 -73.952429
510 3289 W 90 St & Amsterdam Ave 40.790179 -73.972889
647 3434 W 88 St & West End Ave 40.790254 -73.977183
598 3379 E 103 St & Lexington Ave 40.790305 -73.947558
582 3363 E 102 St & Park Ave 40.790483 -73.950331
515 3295 Central Park W & W 96 St 40.791270 -73.964839
653 3445 Riverside Dr & W 89 St 40.791812 -73.978602
521 3301 Columbus Ave & W 95 St 40.791956 -73.968087
640 3424 E 106 St & Lexington Ave 40.791976 -73.945993
513 3293 W 92 St & Broadway 40.792100 -73.973900
586 3367 5 Ave & E 103 St 40.792255 -73.952499
607 3390 E 109 St & 3 Ave 40.793297 -73.943208
540 3320 Central Park West & W 100 St 40.793393 -73.963556
604 3387 E 106 St & Madison Ave 40.793434 -73.949450
534 3314 W 95 St & Broadway 40.793770 -73.971888
527 3307 West End Ave & W 94 St 40.794165 -73.974124
548 3328 W 100 St & Manhattan Ave 40.795000 -73.964500
560 3341 Central Park West & W 102 St 40.795346 -73.961860
617 3400 E 110 St & Madison Ave 40.796154 -73.947821
522 3302 Columbus Ave & W 103 St 40.796935 -73.964341
569 3350 W 100 St & Broadway 40.797372 -73.970412
543 3323 W 106 St & Central Park West 40.798186 -73.960591
536 3316 W 104 St & Amsterdam Ave 40.798994 -73.966217
593 3374 Central Park North & Adam Clayton Powell Blvd 40.799484 -73.955613
562 3343 W 107 St & Columbus Ave 40.799757 -73.962113
576 3357 W 106 St & Amsterdam Ave 40.800836 -73.966449
551 3331 Riverside Dr & W 104 St 40.801343 -73.971146
585 3366 West End Ave & W 107 St 40.802117 -73.968181
601 3383 Cathedral Pkwy & Broadway 40.804213 -73.966991

664 rows × 4 columns


In [89]:
import sklearn.neighbors

In [90]:
help(sklearn.neighbors.BallTree)


Help on class BallTree in module sklearn.neighbors.ball_tree:

class BallTree(BinaryTree)
 |  BallTree for fast generalized N-point problems
 |  
 |  BallTree(X, leaf_size=40, metric='minkowski', \**kwargs)
 |  
 |  Parameters
 |  ----------
 |  X : array-like, shape = [n_samples, n_features]
 |      n_samples is the number of points in the data set, and
 |      n_features is the dimension of the parameter space.
 |      Note: if X is a C-contiguous array of doubles then data will
 |      not be copied. Otherwise, an internal copy will be made.
 |  
 |  leaf_size : positive integer (default = 40)
 |      Number of points at which to switch to brute-force. Changing
 |      leaf_size will not affect the results of a query, but can
 |      significantly impact the speed of a query and the memory required
 |      to store the constructed tree.  The amount of memory needed to
 |      store the tree scales as approximately n_samples / leaf_size.
 |      For a specified ``leaf_size``, a leaf node is guaranteed to
 |      satisfy ``leaf_size <= n_points <= 2 * leaf_size``, except in
 |      the case that ``n_samples < leaf_size``.
 |  
 |  metric : string or DistanceMetric object
 |      the distance metric to use for the tree.  Default='minkowski'
 |      with p=2 (that is, a euclidean metric). See the documentation
 |      of the DistanceMetric class for a list of available metrics.
 |      ball_tree.valid_metrics gives a list of the metrics which
 |      are valid for BallTree.
 |  
 |  Additional keywords are passed to the distance metric class.
 |  
 |  Attributes
 |  ----------
 |  data : np.ndarray
 |      The training data
 |  
 |  Examples
 |  --------
 |  Query for k-nearest neighbors
 |  
 |      >>> import numpy as np
 |      >>> np.random.seed(0)
 |      >>> X = np.random.random((10, 3))  # 10 points in 3 dimensions
 |      >>> tree = BallTree(X, leaf_size=2)              # doctest: +SKIP
 |      >>> dist, ind = tree.query([X[0]], k=3)                # doctest: +SKIP
 |      >>> print ind  # indices of 3 closest neighbors
 |      [0 3 1]
 |      >>> print dist  # distances to 3 closest neighbors
 |      [ 0.          0.19662693  0.29473397]
 |  
 |  Pickle and Unpickle a tree.  Note that the state of the tree is saved in the
 |  pickle operation: the tree needs not be rebuilt upon unpickling.
 |  
 |      >>> import numpy as np
 |      >>> import pickle
 |      >>> np.random.seed(0)
 |      >>> X = np.random.random((10, 3))  # 10 points in 3 dimensions
 |      >>> tree = BallTree(X, leaf_size=2)        # doctest: +SKIP
 |      >>> s = pickle.dumps(tree)                     # doctest: +SKIP
 |      >>> tree_copy = pickle.loads(s)                # doctest: +SKIP
 |      >>> dist, ind = tree_copy.query(X[0], k=3)     # doctest: +SKIP
 |      >>> print ind  # indices of 3 closest neighbors
 |      [0 3 1]
 |      >>> print dist  # distances to 3 closest neighbors
 |      [ 0.          0.19662693  0.29473397]
 |  
 |  Query for neighbors within a given radius
 |  
 |      >>> import numpy as np
 |      >>> np.random.seed(0)
 |      >>> X = np.random.random((10, 3))  # 10 points in 3 dimensions
 |      >>> tree = BallTree(X, leaf_size=2)     # doctest: +SKIP
 |      >>> print tree.query_radius(X[0], r=0.3, count_only=True)
 |      3
 |      >>> ind = tree.query_radius(X[0], r=0.3)  # doctest: +SKIP
 |      >>> print ind  # indices of neighbors within distance 0.3
 |      [3 0 1]
 |  
 |  
 |  Compute a gaussian kernel density estimate:
 |  
 |      >>> import numpy as np
 |      >>> np.random.seed(1)
 |      >>> X = np.random.random((100, 3))
 |      >>> tree = BallTree(X)                # doctest: +SKIP
 |      >>> tree.kernel_density(X[:3], h=0.1, kernel='gaussian')
 |      array([ 6.94114649,  7.83281226,  7.2071716 ])
 |  
 |  Compute a two-point auto-correlation function
 |  
 |      >>> import numpy as np
 |      >>> np.random.seed(0)
 |      >>> X = np.random.random((30, 3))
 |      >>> r = np.linspace(0, 1, 5)
 |      >>> tree = BallTree(X)                # doctest: +SKIP
 |      >>> tree.two_point_correlation(X, r)
 |      array([ 30,  62, 278, 580, 820])
 |  
 |  Method resolution order:
 |      BallTree
 |      BinaryTree
 |      builtins.object
 |  
 |  Methods defined here:
 |  
 |  __new__(*args, **kwargs) from builtins.type
 |      Create and return a new object.  See help(type) for accurate signature.
 |  
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |  
 |  __pyx_vtable__ = <capsule object NULL>
 |  
 |  ----------------------------------------------------------------------
 |  Methods inherited from BinaryTree:
 |  
 |  __getstate__(...)
 |      get state for pickling
 |  
 |  __init__(self, /, *args, **kwargs)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |  
 |  __reduce__(...)
 |      reduce method used for pickling
 |  
 |  __setstate__(...)
 |      set state for pickling
 |  
 |  get_arrays(...)
 |  
 |  get_n_calls(...)
 |  
 |  get_tree_stats(...)
 |  
 |  kernel_density(...)
 |      kernel_density(self, X, h, kernel='gaussian', atol=0, rtol=1E-8,
 |                     breadth_first=True, return_log=False)
 |      
 |      Compute the kernel density estimate at points X with the given kernel,
 |      using the distance metric specified at tree creation.
 |      
 |      Parameters
 |      ----------
 |      X : array_like
 |          An array of points to query.  Last dimension should match dimension
 |          of training data.
 |      h : float
 |          the bandwidth of the kernel
 |      kernel : string
 |          specify the kernel to use.  Options are
 |          - 'gaussian'
 |          - 'tophat'
 |          - 'epanechnikov'
 |          - 'exponential'
 |          - 'linear'
 |          - 'cosine'
 |          Default is kernel = 'gaussian'
 |      atol, rtol : float (default = 0)
 |          Specify the desired relative and absolute tolerance of the result.
 |          If the true result is K_true, then the returned result K_ret
 |          satisfies ``abs(K_true - K_ret) < atol + rtol * K_ret``
 |          The default is zero (i.e. machine precision) for both.
 |      breadth_first : boolean (default = False)
 |          if True, use a breadth-first search.  If False (default) use a
 |          depth-first search.  Breadth-first is generally faster for
 |          compact kernels and/or high tolerances.
 |      return_log : boolean (default = False)
 |          return the logarithm of the result.  This can be more accurate
 |          than returning the result itself for narrow kernels.
 |      
 |      Returns
 |      -------
 |      density : ndarray
 |          The array of (log)-density evaluations, shape = X.shape[:-1]
 |      
 |      Examples
 |      --------
 |      Compute a gaussian kernel density estimate:
 |      
 |      >>> import numpy as np
 |      >>> np.random.seed(1)
 |      >>> X = np.random.random((100, 3))
 |      >>> tree = BinaryTree(X)           # doctest: +SKIP
 |      >>> tree.kernel_density(X[:3], h=0.1, kernel='gaussian')
 |      array([ 6.94114649,  7.83281226,  7.2071716 ])
 |  
 |  query(...)
 |      query(X, k=1, return_distance=True,
 |            dualtree=False, breadth_first=False)
 |      
 |      query the tree for the k nearest neighbors
 |      
 |      Parameters
 |      ----------
 |      X : array-like, last dimension self.dim
 |          An array of points to query
 |      k : integer  (default = 1)
 |          The number of nearest neighbors to return
 |      return_distance : boolean (default = True)
 |          if True, return a tuple (d, i) of distances and indices
 |          if False, return array i
 |      dualtree : boolean (default = False)
 |          if True, use the dual tree formalism for the query: a tree is
 |          built for the query points, and the pair of trees is used to
 |          efficiently search this space.  This can lead to better
 |          performance as the number of points grows large.
 |      breadth_first : boolean (default = False)
 |          if True, then query the nodes in a breadth-first manner.
 |          Otherwise, query the nodes in a depth-first manner.
 |      sort_results : boolean (default = True)
 |          if True, then distances and indices of each point are sorted
 |          on return, so that the first column contains the closest points.
 |          Otherwise, neighbors are returned in an arbitrary order.
 |      
 |      Returns
 |      -------
 |      i    : if return_distance == False
 |      (d,i) : if return_distance == True
 |      
 |      d : array of doubles - shape: x.shape[:-1] + (k,)
 |          each entry gives the list of distances to the
 |          neighbors of the corresponding point
 |      
 |      i : array of integers - shape: x.shape[:-1] + (k,)
 |          each entry gives the list of indices of
 |          neighbors of the corresponding point
 |      
 |      Examples
 |      --------
 |      Query for k-nearest neighbors
 |      
 |          >>> import numpy as np
 |          >>> np.random.seed(0)
 |          >>> X = np.random.random((10, 3))  # 10 points in 3 dimensions
 |          >>> tree = BinaryTree(X, leaf_size=2)    # doctest: +SKIP
 |          >>> dist, ind = tree.query(X[0], k=3)    # doctest: +SKIP
 |          >>> print ind  # indices of 3 closest neighbors
 |          [0 3 1]
 |          >>> print dist  # distances to 3 closest neighbors
 |          [ 0.          0.19662693  0.29473397]
 |  
 |  query_radius(...)
 |      query_radius(self, X, r, count_only = False):
 |      
 |      query the tree for neighbors within a radius r
 |      
 |      Parameters
 |      ----------
 |      X : array-like, last dimension self.dim
 |          An array of points to query
 |      r : distance within which neighbors are returned
 |          r can be a single value, or an array of values of shape
 |          x.shape[:-1] if different radii are desired for each point.
 |      return_distance : boolean (default = False)
 |          if True,  return distances to neighbors of each point
 |          if False, return only neighbors
 |          Note that unlike the query() method, setting return_distance=True
 |          here adds to the computation time.  Not all distances need to be
 |          calculated explicitly for return_distance=False.  Results are
 |          not sorted by default: see ``sort_results`` keyword.
 |      count_only : boolean (default = False)
 |          if True,  return only the count of points within distance r
 |          if False, return the indices of all points within distance r
 |          If return_distance==True, setting count_only=True will
 |          result in an error.
 |      sort_results : boolean (default = False)
 |          if True, the distances and indices will be sorted before being
 |          returned.  If False, the results will not be sorted.  If
 |          return_distance == False, setting sort_results = True will
 |          result in an error.
 |      
 |      Returns
 |      -------
 |      count       : if count_only == True
 |      ind         : if count_only == False and return_distance == False
 |      (ind, dist) : if count_only == False and return_distance == True
 |      
 |      count : array of integers, shape = X.shape[:-1]
 |          each entry gives the number of neighbors within
 |          a distance r of the corresponding point.
 |      
 |      ind : array of objects, shape = X.shape[:-1]
 |          each element is a numpy integer array listing the indices of
 |          neighbors of the corresponding point.  Note that unlike
 |          the results of a k-neighbors query, the returned neighbors
 |          are not sorted by distance by default.
 |      
 |      dist : array of objects, shape = X.shape[:-1]
 |          each element is a numpy double array
 |          listing the distances corresponding to indices in i.
 |      
 |      Examples
 |      --------
 |      Query for neighbors in a given radius
 |      
 |      >>> import numpy as np
 |      >>> np.random.seed(0)
 |      >>> X = np.random.random((10, 3))  # 10 points in 3 dimensions
 |      >>> tree = BinaryTree(X, leaf_size=2)     # doctest: +SKIP
 |      >>> print tree.query_radius(X[0], r=0.3, count_only=True)
 |      3
 |      >>> ind = tree.query_radius(X[0], r=0.3)  # doctest: +SKIP
 |      >>> print ind  # indices of neighbors within distance 0.3
 |      [3 0 1]
 |  
 |  reset_n_calls(...)
 |  
 |  two_point_correlation(...)
 |      Compute the two-point correlation function
 |      
 |      Parameters
 |      ----------
 |      X : array_like
 |          An array of points to query.  Last dimension should match dimension
 |          of training data.
 |      r : array_like
 |          A one-dimensional array of distances
 |      dualtree : boolean (default = False)
 |          If true, use a dualtree algorithm.  Otherwise, use a single-tree
 |          algorithm.  Dual tree algorithms can have better scaling for
 |          large N.
 |      
 |      Returns
 |      -------
 |      counts : ndarray
 |          counts[i] contains the number of pairs of points with distance
 |          less than or equal to r[i]
 |      
 |      Examples
 |      --------
 |      Compute the two-point autocorrelation function of X:
 |      
 |      >>> import numpy as np
 |      >>> np.random.seed(0)
 |      >>> X = np.random.random((30, 3))
 |      >>> r = np.linspace(0, 1, 5)
 |      >>> tree = BinaryTree(X)     # doctest: +SKIP
 |      >>> tree.two_point_correlation(X, r)
 |      array([ 30,  62, 278, 580, 820])
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from BinaryTree:
 |  
 |  data
 |  
 |  idx_array
 |  
 |  node_bounds
 |  
 |  node_data
 |  
 |  ----------------------------------------------------------------------
 |  Data and other attributes inherited from BinaryTree:
 |  
 |  valid_metrics = ['braycurtis', 'russellrao', 'wminkowski', 'matching',...


In [94]:
bt = sklearn.neighbors.BallTree(zz[['id', 'stationName', 'latitude', 'longitude']].ix[:, 2:].values, metric='euclidean')

In [114]:
list(zip(c.id, bt.query_radius(c.ix[:,['lat', 'lon']], 0.0005)))


Out[114]:
[(72, array([0])),
 (72, array([0])),
 (79, array([1])),
 (79, array([1])),
 (82, array([2])),
 (82, array([2])),
 (83, array([3])),
 (83, array([3])),
 (116, array([4])),
 (116, array([4])),
 (119, array([5])),
 (119, array([5])),
 (120, array([6])),
 (120, array([6])),
 (127, array([7])),
 (127, array([7])),
 (128, array([8])),
 (128, array([8])),
 (137, array([9])),
 (137, array([9])),
 (143, array([10])),
 (143, array([10])),
 (144, array([11])),
 (144, array([11])),
 (146, array([12])),
 (146, array([12])),
 (147, array([13])),
 (147, array([13])),
 (150, array([14])),
 (150, array([14])),
 (151, array([15])),
 (151, array([15])),
 (152, array([16])),
 (152, array([16])),
 (153, array([17])),
 (153, array([17])),
 (157, array([18])),
 (157, array([18])),
 (160, array([], dtype=int64)),
 (160, array([], dtype=int64)),
 (161, array([19])),
 (161, array([19])),
 (164, array([20])),
 (164, array([20])),
 (167, array([21])),
 (167, array([21])),
 (168, array([22])),
 (168, array([22])),
 (173, array([23])),
 (173, array([23])),
 (174, array([24])),
 (174, array([24])),
 (195, array([25])),
 (195, array([25])),
 (212, array([26])),
 (212, array([26])),
 (216, array([27])),
 (216, array([27])),
 (217, array([28])),
 (217, array([28])),
 (218, array([], dtype=int64)),
 (218, array([], dtype=int64)),
 (223, array([29])),
 (223, array([29])),
 (224, array([30])),
 (224, array([30])),
 (225, array([31])),
 (225, array([31])),
 (228, array([32])),
 (228, array([32])),
 (229, array([33])),
 (229, array([33])),
 (232, array([34])),
 (232, array([34])),
 (233, array([651])),
 (233, array([], dtype=int64)),
 (233, array([651])),
 (233, array([], dtype=int64)),
 (236, array([35])),
 (236, array([35])),
 (237, array([36])),
 (237, array([36])),
 (238, array([37])),
 (238, array([37])),
 (239, array([38])),
 (239, array([38])),
 (241, array([39])),
 (241, array([39])),
 (242, array([40])),
 (242, array([40])),
 (242, array([40])),
 (242, array([40])),
 (243, array([41])),
 (243, array([41])),
 (244, array([42])),
 (244, array([42])),
 (245, array([43])),
 (245, array([43])),
 (247, array([44])),
 (247, array([44])),
 (248, array([45])),
 (248, array([45])),
 (249, array([46])),
 (249, array([46])),
 (250, array([642])),
 (250, array([642])),
 (250, array([642])),
 (250, array([642])),
 (251, array([47])),
 (251, array([47])),
 (252, array([48])),
 (252, array([48])),
 (253, array([49])),
 (253, array([49])),
 (254, array([50])),
 (254, array([50])),
 (255, array([], dtype=int64)),
 (255, array([], dtype=int64)),
 (257, array([51])),
 (257, array([51])),
 (258, array([52])),
 (258, array([52])),
 (259, array([53])),
 (259, array([53])),
 (260, array([54])),
 (260, array([54])),
 (261, array([55])),
 (261, array([55])),
 (262, array([56])),
 (262, array([56])),
 (263, array([], dtype=int64)),
 (263, array([], dtype=int64)),
 (264, array([57])),
 (264, array([57])),
 (265, array([58])),
 (265, array([58])),
 (266, array([59])),
 (266, array([59])),
 (267, array([60])),
 (267, array([60])),
 (268, array([61])),
 (268, array([61])),
 (270, array([62])),
 (270, array([62])),
 (271, array([644])),
 (271, array([644])),
 (274, array([63])),
 (274, array([63])),
 (275, array([64])),
 (275, array([64])),
 (276, array([65])),
 (276, array([65])),
 (278, array([66])),
 (278, array([66])),
 (279, array([], dtype=int64)),
 (279, array([67])),
 (279, array([67])),
 (279, array([67])),
 (279, array([67])),
 (279, array([], dtype=int64)),
 (280, array([68])),
 (280, array([68])),
 (281, array([69])),
 (281, array([69])),
 (282, array([70])),
 (282, array([70])),
 (284, array([71])),
 (284, array([71])),
 (285, array([72])),
 (285, array([72])),
 (289, array([73])),
 (289, array([73])),
 (290, array([], dtype=int64)),
 (290, array([], dtype=int64)),
 (291, array([74])),
 (291, array([74])),
 (293, array([75])),
 (293, array([75])),
 (294, array([], dtype=int64)),
 (294, array([], dtype=int64)),
 (295, array([76])),
 (295, array([76])),
 (296, array([77])),
 (296, array([77])),
 (297, array([78])),
 (297, array([78])),
 (298, array([], dtype=int64)),
 (298, array([], dtype=int64)),
 (300, array([], dtype=int64)),
 (300, array([], dtype=int64)),
 (300, array([], dtype=int64)),
 (300, array([], dtype=int64)),
 (301, array([79])),
 (301, array([79])),
 (302, array([80])),
 (302, array([80])),
 (303, array([81])),
 (303, array([81])),
 (304, array([82])),
 (304, array([82])),
 (305, array([83])),
 (305, array([83])),
 (306, array([84])),
 (306, array([84])),
 (307, array([85])),
 (307, array([85])),
 (308, array([86])),
 (308, array([86])),
 (309, array([87])),
 (309, array([87])),
 (310, array([88])),
 (310, array([88])),
 (311, array([89])),
 (311, array([89])),
 (312, array([90])),
 (312, array([90])),
 (312, array([90])),
 (312, array([90])),
 (313, array([91])),
 (313, array([91])),
 (314, array([92])),
 (314, array([92])),
 (314, array([], dtype=int64)),
 (314, array([], dtype=int64)),
 (315, array([93])),
 (315, array([93])),
 (316, array([94])),
 (316, array([94])),
 (317, array([95])),
 (317, array([95])),
 (318, array([], dtype=int64)),
 (318, array([], dtype=int64)),
 (319, array([96])),
 (319, array([], dtype=int64)),
 (319, array([], dtype=int64)),
 (319, array([96])),
 (320, array([97])),
 (320, array([97])),
 (320, array([97])),
 (320, array([97])),
 (321, array([98])),
 (321, array([98])),
 (322, array([99])),
 (322, array([99])),
 (323, array([100])),
 (323, array([100])),
 (324, array([101])),
 (324, array([101])),
 (325, array([102])),
 (325, array([102])),
 (326, array([103])),
 (326, array([103])),
 (327, array([104])),
 (327, array([104])),
 (328, array([105])),
 (328, array([105])),
 (329, array([], dtype=int64)),
 (329, array([], dtype=int64)),
 (329, array([], dtype=int64)),
 (329, array([], dtype=int64)),
 (330, array([106])),
 (330, array([106])),
 (331, array([107])),
 (331, array([107])),
 (332, array([108])),
 (332, array([108])),
 (334, array([109])),
 (334, array([109])),
 (335, array([110])),
 (335, array([110])),
 (336, array([111])),
 (336, array([111])),
 (337, array([112])),
 (337, array([112])),
 (339, array([113])),
 (339, array([113])),
 (340, array([114])),
 (340, array([114])),
 (341, array([115])),
 (341, array([115])),
 (342, array([116])),
 (342, array([116])),
 (343, array([117])),
 (343, array([117])),
 (344, array([118])),
 (344, array([118])),
 (345, array([119])),
 (345, array([119])),
 (346, array([120])),
 (346, array([120])),
 (347, array([], dtype=int64)),
 (347, array([121])),
 (347, array([121])),
 (347, array([], dtype=int64)),
 (348, array([122])),
 (348, array([122])),
 (349, array([123])),
 (349, array([123])),
 (350, array([124])),
 (350, array([124])),
 (351, array([125])),
 (351, array([125])),
 (352, array([126])),
 (352, array([126])),
 (353, array([127])),
 (353, array([127])),
 (354, array([128])),
 (354, array([128])),
 (355, array([129])),
 (355, array([129])),
 (356, array([130])),
 (356, array([130])),
 (357, array([131])),
 (357, array([131])),
 (358, array([132])),
 (358, array([132])),
 (359, array([133])),
 (359, array([133])),
 (360, array([134])),
 (360, array([134])),
 (361, array([135])),
 (361, array([135])),
 (362, array([136])),
 (362, array([136])),
 (363, array([137])),
 (363, array([137])),
 (364, array([138])),
 (364, array([138])),
 (365, array([139])),
 (365, array([139])),
 (366, array([140])),
 (366, array([140])),
 (367, array([], dtype=int64)),
 (367, array([], dtype=int64)),
 (368, array([141])),
 (368, array([141])),
 (369, array([142])),
 (369, array([142])),
 (372, array([143])),
 (372, array([143])),
 (373, array([144])),
 (373, array([144])),
 (375, array([487])),
 (375, array([487])),
 (375, array([487])),
 (375, array([487])),
 (376, array([145])),
 (376, array([145])),
 (377, array([146])),
 (377, array([146])),
 (379, array([147])),
 (379, array([147])),
 (380, array([148])),
 (380, array([148])),
 (382, array([149])),
 (382, array([149])),
 (383, array([150])),
 (383, array([150])),
 (384, array([151])),
 (384, array([151])),
 (384, array([], dtype=int64)),
 (384, array([], dtype=int64)),
 (385, array([152])),
 (385, array([152])),
 (386, array([153])),
 (386, array([153])),
 (387, array([154])),
 (387, array([154])),
 (388, array([155])),
 (388, array([155])),
 (389, array([156])),
 (389, array([156])),
 (390, array([157])),
 (390, array([157])),
 (391, array([158])),
 (391, array([158])),
 (392, array([159])),
 (392, array([159])),
 (393, array([160])),
 (393, array([160])),
 (394, array([161])),
 (394, array([161])),
 (395, array([162])),
 (395, array([162])),
 (396, array([163])),
 (396, array([163])),
 (397, array([164])),
 (397, array([164])),
 (398, array([165])),
 (398, array([165])),
 (399, array([166])),
 (399, array([166])),
 (400, array([167])),
 (400, array([167])),
 (401, array([168])),
 (401, array([168])),
 (402, array([169])),
 (402, array([169])),
 (403, array([170])),
 (403, array([170])),
 (404, array([], dtype=int64)),
 (404, array([], dtype=int64)),
 (405, array([171])),
 (405, array([171])),
 (406, array([172])),
 (406, array([172])),
 (407, array([173])),
 (407, array([173])),
 (408, array([174])),
 (408, array([174])),
 (409, array([175])),
 (409, array([175])),
 (410, array([176])),
 (410, array([176])),
 (411, array([177])),
 (411, array([177])),
 (412, array([178])),
 (412, array([178])),
 (414, array([179])),
 (414, array([179])),
 (415, array([180])),
 (415, array([180])),
 (416, array([181])),
 (416, array([181])),
 (417, array([182])),
 (417, array([182])),
 (418, array([183])),
 (418, array([183])),
 (419, array([184])),
 (419, array([184])),
 (420, array([185])),
 (420, array([185])),
 (421, array([186])),
 (421, array([186])),
 (422, array([187])),
 (422, array([187])),
 (423, array([188])),
 (423, array([188])),
 (426, array([189])),
 (426, array([189])),
 (427, array([190])),
 (427, array([], dtype=int64)),
 (427, array([190])),
 (427, array([], dtype=int64)),
 (428, array([191])),
 (428, array([191])),
 (430, array([192])),
 (430, array([192])),
 (431, array([], dtype=int64)),
 (431, array([], dtype=int64)),
 (432, array([193])),
 (432, array([193])),
 (433, array([194])),
 (433, array([194])),
 (434, array([195])),
 (434, array([195])),
 (435, array([196])),
 (435, array([196])),
 (436, array([197])),
 (436, array([197])),
 (437, array([198])),
 (437, array([198])),
 (438, array([199])),
 (438, array([199])),
 (439, array([200])),
 (439, array([200])),
 (440, array([201])),
 (440, array([201])),
 (441, array([202])),
 (441, array([202])),
 (442, array([203])),
 (442, array([203])),
 (443, array([204])),
 (443, array([204])),
 (443, array([204])),
 (443, array([204])),
 (444, array([205])),
 (444, array([205])),
 (445, array([206])),
 (445, array([206])),
 (446, array([207])),
 (446, array([207])),
 (447, array([208])),
 (447, array([208])),
 (448, array([209])),
 (448, array([209])),
 (449, array([210])),
 (449, array([210])),
 (450, array([211])),
 (450, array([211])),
 (453, array([212])),
 (453, array([212])),
 (454, array([213])),
 (454, array([213])),
 (455, array([214])),
 (455, array([214])),
 (456, array([215])),
 (456, array([215])),
 (457, array([216])),
 (457, array([216])),
 (458, array([217])),
 (458, array([217])),
 (459, array([218])),
 (459, array([218])),
 (460, array([219])),
 (460, array([219])),
 (461, array([220])),
 (461, array([220])),
 (462, array([221])),
 (462, array([221])),
 (463, array([], dtype=int64)),
 (463, array([], dtype=int64)),
 (464, array([], dtype=int64)),
 (464, array([], dtype=int64)),
 (465, array([222])),
 (465, array([222])),
 (466, array([223])),
 (466, array([223])),
 (467, array([224])),
 (467, array([224])),
 (468, array([225])),
 (468, array([225])),
 (469, array([226])),
 (469, array([226])),
 (470, array([227])),
 (470, array([227])),
 (471, array([228])),
 (471, array([228])),
 (472, array([229])),
 (472, array([229])),
 (473, array([230])),
 (473, array([230])),
 (474, array([231])),
 (474, array([231])),
 (475, array([663])),
 (475, array([663])),
 (476, array([232])),
 (476, array([232])),
 (477, array([233])),
 (477, array([233])),
 (478, array([234])),
 (478, array([234])),
 (479, array([235])),
 (479, array([235])),
 (480, array([236])),
 (480, array([236])),
 (481, array([237])),
 (481, array([237])),
 (482, array([238])),
 (482, array([238])),
 (483, array([239])),
 (483, array([239])),
 (484, array([240])),
 (484, array([240])),
 (485, array([241])),
 (485, array([241])),
 (486, array([242])),
 (486, array([242])),
 (487, array([243])),
 (487, array([243])),
 (488, array([244])),
 (488, array([244])),
 (489, array([], dtype=int64)),
 (489, array([], dtype=int64)),
 (490, array([245])),
 (490, array([245])),
 (491, array([246])),
 (491, array([246])),
 (492, array([247])),
 (492, array([247])),
 (493, array([248])),
 (493, array([248])),
 (494, array([249])),
 (494, array([249])),
 (495, array([250])),
 (495, array([250])),
 (496, array([251])),
 (496, array([251])),
 (497, array([252])),
 (497, array([252])),
 (498, array([253])),
 (498, array([253])),
 (499, array([254])),
 (499, array([254])),
 (500, array([255])),
 (500, array([255])),
 (501, array([256])),
 (501, array([256])),
 (502, array([257])),
 (502, array([257])),
 (503, array([258])),
 (503, array([258])),
 (504, array([259])),
 (504, array([259])),
 (504, array([259])),
 (504, array([259])),
 (505, array([260])),
 (505, array([260])),
 (507, array([261])),
 (507, array([261])),
 (508, array([262])),
 (508, array([262])),
 (509, array([263])),
 (509, array([263])),
 (510, array([], dtype=int64)),
 (510, array([], dtype=int64)),
 (511, array([264])),
 (511, array([264])),
 (512, array([], dtype=int64)),
 (512, array([], dtype=int64)),
 (513, array([265])),
 (513, array([265])),
 (514, array([266])),
 (514, array([266])),
 (515, array([267])),
 (515, array([267])),
 (516, array([268])),
 (516, array([268])),
 (517, array([271, 269])),
 (517, array([475])),
 (517, array([271, 269])),
 (517, array([271, 269])),
 (517, array([475])),
 (517, array([271, 269])),
 (518, array([270])),
 (518, array([270])),
 (519, array([271, 269])),
 (519, array([271, 269])),
 (519, array([271, 269])),
 (519, array([], dtype=int64)),
 (519, array([], dtype=int64)),
 (519, array([271, 269])),
 (520, array([272])),
 (520, array([272])),
 (521, array([483])),
 (521, array([483])),
 (521, array([483])),
 (521, array([483])),
 (522, array([273])),
 (522, array([273])),
 (523, array([274])),
 (523, array([274])),
 (524, array([275])),
 (524, array([275])),
 (525, array([276])),
 (525, array([276])),
 (526, array([277])),
 (526, array([277])),
 (527, array([], dtype=int64)),
 (527, array([278])),
 (527, array([278])),
 (527, array([], dtype=int64)),
 (528, array([279])),
 (528, array([279])),
 (529, array([280])),
 (529, array([280])),
 (530, array([281])),
 (530, array([281])),
 (531, array([282])),
 (531, array([282])),
 (532, array([283])),
 (532, array([283])),
 (533, array([284])),
 (533, array([284])),
 (534, array([285])),
 (534, array([285])),
 (536, array([286])),
 (536, array([286])),
 (537, array([287])),
 (537, array([287])),
 (538, array([], dtype=int64)),
 (538, array([], dtype=int64)),
 (538, array([], dtype=int64)),
 (538, array([], dtype=int64)),
 (539, array([288])),
 (539, array([288])),
 (540, array([], dtype=int64)),
 (540, array([289])),
 (540, array([], dtype=int64)),
 (540, array([289])),
 (545, array([290])),
 (545, array([290])),
 (546, array([291])),
 (546, array([291])),
 (2000, array([292])),
 (2000, array([292])),
 (2001, array([], dtype=int64)),
 (2001, array([293])),
 (2001, array([293])),
 (2001, array([], dtype=int64)),
 (2002, array([294])),
 (2002, array([294])),
 (2003, array([295])),
 (2003, array([295])),
 (2004, array([296])),
 (2004, array([296])),
 (2005, array([297])),
 (2005, array([297])),
 (2006, array([298])),
 (2006, array([298])),
 (2008, array([299])),
 (2008, array([299])),
 (2009, array([300])),
 (2009, array([300])),
 (2010, array([301])),
 (2010, array([301])),
 (2012, array([302])),
 (2012, array([302])),
 (2017, array([], dtype=int64)),
 (2017, array([], dtype=int64)),
 (2021, array([303])),
 (2021, array([303])),
 (2022, array([], dtype=int64)),
 (2022, array([], dtype=int64)),
 (2022, array([304])),
 (2022, array([304])),
 (2023, array([305])),
 (2023, array([305])),
 (3002, array([306])),
 (3002, array([306])),
 (3014, array([], dtype=int64)),
 (3014, array([], dtype=int64)),
 (3014, array([], dtype=int64)),
 (3014, array([], dtype=int64)),
 (3016, array([395])),
 (3016, array([307])),
 (3016, array([307])),
 (3016, array([395])),
 (3017, array([], dtype=int64)),
 (3017, array([], dtype=int64)),
 (3019, array([], dtype=int64)),
 (3036, array([], dtype=int64)),
 (3039, array([476])),
 (3040, array([], dtype=int64)),
 (3040, array([], dtype=int64)),
 (3041, array([308])),
 (3041, array([308])),
 (3042, array([309])),
 (3042, array([309])),
 (3043, array([310])),
 (3043, array([310])),
 (3044, array([311])),
 (3044, array([311])),
 (3046, array([312])),
 (3046, array([312])),
 (3047, array([313])),
 (3047, array([313])),
 (3048, array([314])),
 (3048, array([314])),
 (3049, array([315])),
 (3049, array([315])),
 (3050, array([316])),
 (3050, array([316])),
 (3052, array([317])),
 (3052, array([317])),
 (3053, array([318])),
 (3053, array([318])),
 (3054, array([319])),
 (3054, array([319])),
 (3055, array([320])),
 (3055, array([320])),
 (3056, array([321])),
 (3056, array([321])),
 (3057, array([322])),
 (3057, array([322])),
 (3058, array([323])),
 (3058, array([323])),
 (3059, array([324])),
 (3059, array([324])),
 (3060, array([325])),
 (3060, array([325])),
 (3061, array([326])),
 (3061, array([326])),
 (3062, array([327])),
 (3062, array([327])),
 (3063, array([328])),
 (3063, array([328])),
 (3064, array([329])),
 (3064, array([329])),
 (3065, array([330])),
 (3065, array([330])),
 (3066, array([331])),
 (3066, array([331])),
 (3067, array([332])),
 (3067, array([332])),
 (3068, array([333])),
 (3068, array([333])),
 (3069, array([334])),
 (3069, array([334])),
 (3070, array([335])),
 (3070, array([335])),
 (3071, array([336])),
 (3071, array([336])),
 (3072, array([337])),
 (3072, array([337])),
 (3073, array([338])),
 (3073, array([338])),
 (3074, array([339])),
 (3074, array([339])),
 (3075, array([340])),
 (3075, array([340])),
 (3076, array([341])),
 (3076, array([341])),
 (3077, array([342])),
 (3077, array([342])),
 (3078, array([343])),
 (3078, array([343])),
 (3079, array([], dtype=int64)),
 (3079, array([], dtype=int64)),
 (3080, array([344])),
 (3080, array([344])),
 (3081, array([345])),
 (3081, array([345])),
 (3082, array([346])),
 (3082, array([346])),
 (3083, array([347])),
 (3083, array([347])),
 (3084, array([], dtype=int64)),
 (3084, array([], dtype=int64)),
 (3085, array([348])),
 (3085, array([348])),
 (3086, array([349])),
 (3086, array([349])),
 (3087, array([350])),
 (3087, array([350])),
 (3088, array([351])),
 (3088, array([351])),
 (3089, array([], dtype=int64)),
 (3089, array([], dtype=int64)),
 (3090, array([352])),
 (3090, array([352])),
 (3091, array([353])),
 (3091, array([353])),
 (3092, array([354])),
 (3092, array([354])),
 (3093, array([355])),
 (3093, array([355])),
 (3094, array([356])),
 (3094, array([356])),
 (3095, array([357])),
 (3095, array([357])),
 (3096, array([358])),
 (3096, array([358])),
 (3097, array([645])),
 (3097, array([645])),
 (3098, array([656])),
 (3098, array([656])),
 (3099, array([], dtype=int64)),
 (3099, array([], dtype=int64)),
 (3100, array([359])),
 (3100, array([359])),
 (3101, array([360])),
 (3101, array([360])),
 (3102, array([361])),
 (3102, array([361])),
 (3103, array([362])),
 (3103, array([362])),
 (3104, array([307])),
 (3104, array([307])),
 (3104, array([307])),
 (3104, array([307])),
 (3105, array([363])),
 (3105, array([363])),
 (3106, array([364])),
 (3106, array([364])),
 (3107, array([365])),
 (3107, array([365])),
 (3108, array([366])),
 (3108, array([366])),
 (3109, array([367])),
 (3109, array([367])),
 (3110, array([368])),
 (3110, array([368])),
 (3111, array([369])),
 (3111, array([369])),
 (3112, array([370])),
 (3112, array([370])),
 (3113, array([371])),
 (3113, array([371])),
 (3114, array([372])),
 (3114, array([372])),
 (3115, array([373])),
 (3115, array([373])),
 (3116, array([374])),
 (3116, array([374])),
 (3117, array([375])),
 (3117, array([375])),
 (3118, array([376])),
 (3118, array([376])),
 (3119, array([377])),
 (3119, array([377])),
 (3120, array([378])),
 (3120, array([378])),
 (3120, array([378])),
 (3120, array([378])),
 (3121, array([379])),
 (3121, array([379])),
 (3122, array([380])),
 (3122, array([380])),
 (3123, array([381])),
 (3123, array([381])),
 (3124, array([382])),
 (3124, array([382])),
 (3125, array([383])),
 (3125, array([383])),
 (3126, array([384])),
 (3126, array([384])),
 (3127, array([385])),
 (3127, array([385])),
 (3128, array([386])),
 (3128, array([386])),
 (3129, array([387])),
 (3129, array([387])),
 (3130, array([388])),
 (3130, array([388])),
 (3131, array([389])),
 (3131, array([389])),
 (3132, array([390])),
 (3132, array([390])),
 (3133, array([], dtype=int64)),
 (3133, array([], dtype=int64)),
 (3133, array([], dtype=int64)),
 (3133, array([], dtype=int64)),
 (3134, array([391])),
 (3134, array([391])),
 (3135, array([392])),
 (3135, array([392])),
 (3136, array([393])),
 (3136, array([393])),
 (3137, array([394])),
 (3137, array([394])),
 (3138, array([], dtype=int64)),
 (3138, array([], dtype=int64)),
 (3139, array([395])),
 (3139, array([395])),
 (3140, array([396])),
 (3140, array([396])),
 (3141, array([397])),
 (3141, array([397])),
 (3142, array([398])),
 (3142, array([398])),
 (3143, array([399])),
 (3143, array([399])),
 (3144, array([400])),
 (3144, array([400])),
 (3145, array([401])),
 (3145, array([401])),
 (3146, array([402])),
 (3146, array([402])),
 (3147, array([403])),
 (3147, array([403])),
 (3148, array([404])),
 (3148, array([404])),
 (3149, array([], dtype=int64)),
 (3149, array([], dtype=int64)),
 (3150, array([405])),
 (3150, array([405])),
 (3151, array([406])),
 (3151, array([406])),
 (3152, array([407])),
 (3152, array([407])),
 (3153, array([], dtype=int64)),
 (3153, array([], dtype=int64)),
 (3154, array([], dtype=int64)),
 (3154, array([], dtype=int64)),
 (3155, array([408])),
 (3155, array([408])),
 (3156, array([409])),
 (3156, array([409])),
 (3157, array([410])),
 (3157, array([410])),
 (3158, array([411])),
 (3158, array([411])),
 (3159, array([412])),
 (3159, array([412])),
 (3160, array([413])),
 (3160, array([413])),
 (3161, array([414])),
 (3161, array([414])),
 (3162, array([415])),
 (3162, array([415])),
 (3163, array([416])),
 (3163, array([416])),
 (3164, array([417])),
 (3164, array([417])),
 (3165, array([418])),
 (3165, array([418])),
 (3166, array([419])),
 (3166, array([419])),
 (3166, array([419])),
 (3166, array([419])),
 (3167, array([420])),
 (3167, array([420])),
 (3168, array([421])),
 (3168, array([421])),
 (3169, array([422])),
 (3169, array([422])),
 (3170, array([423])),
 (3170, array([423])),
 (3171, array([424])),
 ...]

In [118]:
pd.Series(bt.query_radius(c.ix[:,['lat', 'lon']], 0.0005))


Out[118]:
0         [0]
1         [0]
2         [1]
3         [1]
4         [2]
5         [2]
6         [3]
7         [3]
8         [4]
9         [4]
10        [5]
11        [5]
12        [6]
13        [6]
14        [7]
15        [7]
16        [8]
17        [8]
18        [9]
19        [9]
20       [10]
21       [10]
22       [11]
23       [11]
24       [12]
25       [12]
26       [13]
27       [13]
28       [14]
29       [14]
        ...  
1383    [638]
1384    [639]
1385    [639]
1386    [640]
1387    [640]
1388    [641]
1389    [641]
1390    [642]
1391    [642]
1392    [643]
1393    [643]
1394    [644]
1395    [644]
1396    [645]
1397    [645]
1398    [646]
1399    [646]
1400       []
1401       []
1402    [647]
1403    [647]
1404    [648]
1405    [648]
1406    [649]
1407    [649]
1408    [650]
1409    [650]
1410    [169]
1411    [651]
1412    [651]
dtype: object

In [ ]: