import dask.distributed
import dask.dataframe as dd
import pandas as pd
import numpy as np
client = dask.distributed.Client('localhost:8786')
client.restart()
<Client: scheduler='tcp://localhost:8786' processes=4 cores=4>
df = dd.read_parquet('/bigdata/citibike.parquet')
# df = client.persist(df.repartition(npartitions=20))
df.head()
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 |
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()
import urllib, json
zz = pd.DataFrame(json.loads(
(urllib.request.urlopen('https://feeds.citibikenyc.com/stations/stations.json').read()).decode('utf-8')
)['stationBeanList'])
zz.head()
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 |
df.start_station_id.compute().shape
(36902025,)
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']]
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)]
df_s.head()
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 |
a1 = df_s.groupby(['start_station_id', 'start_station_name']).mean().compute()
a2 = df_e.groupby(['end_station_id', 'end_station_name']).mean().compute()
b1 = a1.copy()
b2 = a2.copy()
b1.index = b1.index.rename(['id', 'name'])
b1.columns = ['lat', 'lon']
b2.index = b2.index.rename(['id', 'name'])
b2.columns = ['lat', 'lon']
c = b1.append(b2).drop_duplicates().reset_index().sort_values('id').reset_index(drop=True)
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
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 |
c.sort_values(['lat', 'lon'])
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
zz[['id', 'stationName', 'latitude', 'longitude']].sort_values(['latitude', 'longitude'])
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
import sklearn.neighbors
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',...
bt = sklearn.neighbors.BallTree(zz[['id', 'stationName', 'latitude', 'longitude']].ix[:, 2:].values, metric='euclidean')
list(zip(c.id, bt.query_radius(c.ix[:,['lat', 'lon']], 0.0005)))
[(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])), ...]
pd.Series(bt.query_radius(c.ix[:,['lat', 'lon']], 0.0005))
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