From c699830a364778d7932e16e8496c86cdb9493be2 Mon Sep 17 00:00:00 2001 From: raresteak Date: Sun, 29 Apr 2018 11:56:01 -0500 Subject: [PATCH] Add files via upload --- datascience/lec11/lec11.md | 3544 +++++++++++++++++++++++++++++ datascience/lec11/output_15_1.png | Bin 0 -> 13393 bytes datascience/lec11/output_16_1.png | Bin 0 -> 15779 bytes datascience/lec11/output_18_1.png | Bin 0 -> 26769 bytes 4 files changed, 3544 insertions(+) create mode 100644 datascience/lec11/output_15_1.png create mode 100644 datascience/lec11/output_16_1.png create mode 100644 datascience/lec11/output_18_1.png diff --git a/datascience/lec11/lec11.md b/datascience/lec11/lec11.md index 8b13789..d596dc3 100644 --- a/datascience/lec11/lec11.md +++ b/datascience/lec11/lec11.md @@ -1 +1,3545 @@ +# Joins +* tblA.join(colA, tblB, colB) returns a table with the columns of tblA and tblB, +* containing rows for all values of a colA and colB that appear in both table +#### section reading +* https://www.inferentialthinking.com/chapters/08/4/joining-tables-by-columns.html +* https://www.inferentialthinking.com/chapters/08/5/bike-sharing-in-the-bay-area.html + + + +```python +from datascience import * +import numpy as np + +%matplotlib inline +import matplotlib.pyplot as plots +plots.style.use('fivethirtyeight') +``` + +## Drinks + +* constructing two tables to be used with join further below + + +```python +drinks = Table(['Drink', 'Cafe', 'Price']).with_rows([ + ['Milk Tea', 'Tea One', 4], + ['Espresso', 'Nefeli', 2], + ['Latte', 'Nefeli', 3], + ['Espresso', "Abe's", 2] +]) +drinks +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Drink Cafe Price
Milk Tea Tea One 4
Espresso Nefeli 2
Latte Nefeli 3
Espresso Abe's 2
+ + + + +```python +discounts = Table().with_columns( + 'Coupon % off', make_array(25, 50, 5), + 'Location', make_array('Tea One', 'Nefeli', 'Tea One') +) +discounts +``` + + + + + + + + + + + + + + + + + + + + + + + +
Coupon % off Location
25 Tea One
50 Nefeli
5 Tea One
+ + + +* Join Cafe column from drinks, with Location colufrom discounts table + + +```python +t = drinks.join('Cafe', discounts, 'Location') +t +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cafe Drink Price Coupon % off
Nefeli Espresso 2 50
Nefeli Latte 3 50
Tea One Milk Tea 4 25
Tea One Milk Tea 4 5
+ + + + +```python +# The results are a combination of the two tables +# Where Location from discounts tables matches up with cafe from drnks table +# i.e. Location and Cafe columns are the same +# if there is no matching values from the two tables, like Abe's, it doesn't appear in joined table + +``` + + +```python +t.with_column('Discounted', t.column(2) * (1 - t.column(3)/ 100)) +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cafe Drink Price Coupon % off Discounted
Nefeli Espresso 2 50 1
Nefeli Latte 3 50 1.5
Tea One Milk Tea 4 25 3
Tea One Milk Tea 4 5 3.8
+ + + + +```python +two = drinks.join('Cafe', drinks) # implicitly if you leave off the column name from the second +# table argument it will use the same column name from the first. +two +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cafe Drink Price Drink_2 Price_2
Abe's Espresso 2 Espresso 2
Nefeli Espresso 2 Espresso 2
Nefeli Espresso 2 Latte 3
Nefeli Latte 3 Espresso 2
Nefeli Latte 3 Latte 3
Tea One Milk Tea 4 Milk Tea 4
+ + + + +```python +two.with_column('Total', two.column('Price') + two.column('Price_2')) +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cafe Drink Price Drink_2 Price_2 Total
Abe's Espresso 2 Espresso 2 4
Nefeli Espresso 2 Espresso 2 4
Nefeli Espresso 2 Latte 3 5
Nefeli Latte 3 Espresso 2 5
Nefeli Latte 3 Latte 3 6
Tea One Milk Tea 4 Milk Tea 4 8
+ + + +## Bikes + +* Analysis of very large dataset. +* Crashes Jupyter with 1GBheap + + +```python +trips = Table.read_table('trip.csv') +trips +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Trip ID Duration Start Date Start Station Start Terminal End Date End Station End Terminal Bike # Subscriber Type Zip Code
913460 765 8/31/2015 23:26 Harry Bridges Plaza (Ferry Building) 50 8/31/2015 23:39 San Francisco Caltrain (Townsend at 4th) 70 288 Subscriber 2139
913459 1036 8/31/2015 23:11 San Antonio Shopping Center 31 8/31/2015 23:28 Mountain View City Hall 27 35 Subscriber 95032
913455 307 8/31/2015 23:13 Post at Kearny 47 8/31/2015 23:18 2nd at South Park 64 468 Subscriber 94107
913454 409 8/31/2015 23:10 San Jose City Hall 10 8/31/2015 23:17 San Salvador at 1st 8 68 Subscriber 95113
913453 789 8/31/2015 23:09 Embarcadero at Folsom 51 8/31/2015 23:22 Embarcadero at Sansome 60 487 Customer 9069
913452 293 8/31/2015 23:07 Yerba Buena Center of the Arts (3rd @ Howard) 68 8/31/2015 23:12 San Francisco Caltrain (Townsend at 4th) 70 538 Subscriber 94118
913451 896 8/31/2015 23:07 Embarcadero at Folsom 51 8/31/2015 23:22 Embarcadero at Sansome 60 363 Customer 92562
913450 255 8/31/2015 22:16 Embarcadero at Sansome 60 8/31/2015 22:20 Steuart at Market 74 470 Subscriber 94111
913449 126 8/31/2015 22:12 Beale at Market 56 8/31/2015 22:15 Temporary Transbay Terminal (Howard at Beale) 55 439 Subscriber 94130
913448 932 8/31/2015 21:57 Post at Kearny 47 8/31/2015 22:12 South Van Ness at Market 66 472 Subscriber 94702
+

... (354142 rows omitted)

+ + + + +```python +commute = trips.where('Duration', are.below(1800)) +commute.hist('Duration') +# 1800 seconds is 30 minutes which how this bike sharing program worked. +# trips over 1800 there is something od happening, like stolen on one extreme or long extended trips +``` + + /usr/local/lib/python3.6/dist-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg. + warnings.warn("The 'normed' kwarg is deprecated, and has been " + + + +![png](output_15_1.png) + + + +```python +commute.hist('Duration', bins=60, unit='second') +# let's but duration into 60 bins, with units of seconds +``` + + /usr/local/lib/python3.6/dist-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg. + warnings.warn("The 'normed' kwarg is deprecated, and has been " + + + +![png](output_16_1.png) + + + +```python +(550-250) * 0.15 +# Looking at the peak 550 to 250 to get the area of that range +# 45% of trips is within that range +``` + + + + + 45.0 + + + + +```python +commute.hist('Duration', bins=np.arange(1801), unit='second') +``` + + /usr/local/lib/python3.6/dist-packages/matplotlib/axes/_axes.py:6462: UserWarning: The 'normed' kwarg is deprecated, and has been replaced by the 'density' kwarg. + warnings.warn("The 'normed' kwarg is deprecated, and has been " + + + +![png](output_18_1.png) + + + +```python +starts = commute.group('Start Station').sort('count', descending=True) +starts +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Start Station count
San Francisco Caltrain (Townsend at 4th) 25858
San Francisco Caltrain 2 (330 Townsend) 21523
Harry Bridges Plaza (Ferry Building) 15543
Temporary Transbay Terminal (Howard at Beale) 14298
2nd at Townsend 13674
Townsend at 7th 13579
Steuart at Market 13215
Embarcadero at Sansome 12842
Market at 10th 11523
Market at Sansome 11023
+

... (60 rows omitted)

+ + + + +```python +commute.pivot('Start Station', 'End Station') +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
End Station 2nd at Folsom 2nd at South Park 2nd at Townsend 5th at Howard Adobe on Almaden Arena Green / SAP Center Beale at Market Broadway St at Battery St California Ave Caltrain Station Castro Street and El Camino Real Civic Center BART (7th at Market) Clay at Battery Commercial at Montgomery Cowper at University Davis at Jackson Embarcadero at Bryant Embarcadero at Folsom Embarcadero at Sansome Embarcadero at Vallejo Evelyn Park and Ride Franklin at Maple Golden Gate at Polk Grant Avenue at Columbus Avenue Harry Bridges Plaza (Ferry Building) Howard at 2nd Japantown MLK Library Market at 10th Market at 4th Market at Sansome Mechanics Plaza (Market at Battery) Mezes Park Mountain View Caltrain Station Mountain View City Hall Palo Alto Caltrain Station Park at Olive Paseo de San Antonio Post at Kearny Powell Street BART Powell at Post (Union Square) Redwood City Caltrain Station Redwood City Medical Center Redwood City Public Library Rengstorff Avenue / California Street Ryland Park SJSU - San Salvador at 9th SJSU 4th at San Carlos San Antonio Caltrain Station San Antonio Shopping Center San Francisco Caltrain (Townsend at 4th) San Francisco Caltrain 2 (330 Townsend) San Francisco City Hall San Jose City Hall San Jose Civic Center San Jose Diridon Caltrain Station San Mateo County Center San Pedro Square San Salvador at 1st Santa Clara County Civic Center Santa Clara at Almaden South Van Ness at Market Spear at Folsom St James Park Stanford in Redwood City Steuart at Market Temporary Transbay Terminal (Howard at Beale) Townsend at 7th University and Emerson Washington at Kearny Yerba Buena Center of the Arts (3rd @ Howard)
2nd at Folsom 54 190 554 107 0 0 40 21 0 0 44 78 54 0 9 77 32 41 14 0 0 11 30 416 53 0 0 169 114 302 33 0 0 0 0 0 0 60 121 88 0 0 0 0 0 0 0 0 0 694 445 21 0 0 0 0 0 0 0 0 38 57 0 0 39 237 342 0 17 31
2nd at South Park 295 164 71 180 0 0 208 85 0 0 112 87 160 0 37 56 178 83 116 0 0 57 73 574 500 0 0 139 199 1633 119 0 0 0 0 0 0 299 84 113 0 0 0 0 0 0 0 0 0 559 480 48 0 0 0 0 0 0 0 0 66 152 0 0 374 429 143 0 63 209
2nd at Townsend 437 151 185 92 0 0 608 350 0 0 80 329 168 0 386 361 658 506 254 0 0 27 315 2607 295 0 0 110 225 845 177 0 0 0 0 0 0 120 100 141 0 0 0 0 0 0 0 0 0 905 299 14 0 0 0 0 0 0 0 0 72 508 0 0 2349 784 417 0 57 166
5th at Howard 113 177 148 83 0 0 59 130 0 0 203 76 129 0 30 57 49 166 54 0 0 85 78 371 478 0 0 303 158 168 90 0 0 0 0 0 0 93 183 169 0 0 0 0 0 0 0 0 0 690 1859 48 0 0 0 0 0 0 0 0 116 102 0 0 182 750 200 0 43 267
Adobe on Almaden 0 0 0 0 11 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 7 0 0 0 0 0 0 0 0 0 25 0 0 0 0 0 0 0 7 7 16 0 0 0 0 0 19 23 265 0 20 4 5 10 0 0 14 0 0 0 0 0 0 0
Arena Green / SAP Center 0 0 0 0 7 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 5 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 0 0 24 3 7 0 0 0 0 0 6 20 7 0 56 12 38 259 0 0 13 0 0 0 0 0 0 0
Beale at Market 127 79 183 59 0 0 59 661 0 0 201 75 101 0 247 178 38 590 165 0 0 54 435 57 72 0 0 286 236 163 26 0 0 0 0 0 0 49 227 179 0 0 0 0 0 0 0 0 0 640 269 25 0 0 0 0 0 0 0 0 243 128 0 0 16 167 35 0 64 45
Broadway St at Battery St 67 89 279 119 0 0 1022 110 0 0 62 283 226 0 191 198 79 231 35 0 0 5 70 168 49 0 0 32 97 341 214 0 0 0 0 0 0 169 71 218 0 0 0 0 0 0 0 0 0 685 438 7 0 0 0 0 0 0 0 0 18 106 0 0 344 748 50 0 79 47
California Ave Caltrain Station 0 0 0 0 0 0 0 0 38 1 0 0 0 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 192 40 0 0 0 0 0 0 0 6 0 0 0 17 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57 0 0
Castro Street and El Camino Real 0 0 0 0 0 0 0 0 0 30 0 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 931 34 0 0 0 0 0 0 0 0 0 7 0 0 0 4 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+

... (60 rows omitted)

+ + + + +```python +duration = trips.select(3, 6, 1) +duration +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Start Station End Station Duration
Harry Bridges Plaza (Ferry Building) San Francisco Caltrain (Townsend at 4th) 765
San Antonio Shopping Center Mountain View City Hall 1036
Post at Kearny 2nd at South Park 307
San Jose City Hall San Salvador at 1st 409
Embarcadero at Folsom Embarcadero at Sansome 789
Yerba Buena Center of the Arts (3rd @ Howard) San Francisco Caltrain (Townsend at 4th) 293
Embarcadero at Folsom Embarcadero at Sansome 896
Embarcadero at Sansome Steuart at Market 255
Beale at Market Temporary Transbay Terminal (Howard at Beale) 126
Post at Kearny South Van Ness at Market 932
+

... (354142 rows omitted)

+ + + + +```python +shortest = duration.group([0, 1], min) +shortest +``` + + +```python +from_cc = shortest.where(0, are.containing('Civic Center BART')).sort(2) +from_cc +``` + + + --------------------------------------------------------------------------- + + NameError Traceback (most recent call last) + + in () + ----> 1 from_cc = shortest.where(0, are.containing('Civic Center BART')).sort(2) + 2 from_cc + + + NameError: name 'shortest' is not defined + + +## Maps + +* A table containing column of lat and long values, can be used to generate a map of markers +* TYPE.map_table(table,...) +* TYPE=Marker or Circle +* Where table is layed out as +* Column 0: lats coord +* Column 1: long coords +* Column 2: labels +* Column 3: colors of markers or circles +* Column 4: sizes of markers or cirlcles + + +```python +stations = Table.read_table('station.csv') +stations +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
station_id name lat long dockcount landmark installation
2 San Jose Diridon Caltrain Station 37.3297 -121.902 27 San Jose 8/6/2013
3 San Jose Civic Center 37.3307 -121.889 15 San Jose 8/5/2013
4 Santa Clara at Almaden 37.334 -121.895 11 San Jose 8/6/2013
5 Adobe on Almaden 37.3314 -121.893 19 San Jose 8/5/2013
6 San Pedro Square 37.3367 -121.894 15 San Jose 8/7/2013
7 Paseo de San Antonio 37.3338 -121.887 15 San Jose 8/7/2013
8 San Salvador at 1st 37.3302 -121.886 15 San Jose 8/5/2013
9 Japantown 37.3487 -121.895 15 San Jose 8/5/2013
10 San Jose City Hall 37.3374 -121.887 15 San Jose 8/6/2013
11 MLK Library 37.3359 -121.886 19 San Jose 8/6/2013
+

... (60 rows omitted)

+ + + + +```python +Marker.map_table(stations.select('lat', 'long', 'name')) +# The Marker function takes lat, long coords to make a map +``` + + + + + + + + + +```python +sf = stations.where('landmark', 'San Francisco') +Circle.map_table(sf.select('lat', 'long', 'name'), color='green', radius=150) +# same as above but with Circles +``` + + + + + + + + + +```python +from_cc +``` + + + --------------------------------------------------------------------------- + + NameError Traceback (most recent call last) + + in () + ----> 1 from_cc + + + NameError: name 'from_cc' is not defined + + + +```python +colors = stations.group('landmark').with_column( + 'color', make_array('blue', 'red', 'green', 'orange', 'purple')) +colors +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
landmark count color
Mountain View 7 blue
Palo Alto 5 red
Redwood City 7 green
San Francisco 35 orange
San Jose 16 purple
+ + + + +```python +colored = stations.join('landmark', colors).select('lat', 'long', 'name', 'color') +Marker.map_table(colored) +``` + + + + + + + + + +```python +station_starts = stations.join('name', starts, 'Start Station') +station_starts +``` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
name station_id lat long dockcount landmark installation count
2nd at Folsom 62 37.7853 -122.396 19 San Francisco 8/22/2013 7841
2nd at South Park 64 37.7823 -122.393 15 San Francisco 8/22/2013 9274
2nd at Townsend 61 37.7805 -122.39 27 San Francisco 8/22/2013 13674
5th at Howard 57 37.7818 -122.405 15 San Francisco 8/21/2013 7394
Adobe on Almaden 5 37.3314 -121.893 19 San Jose 8/5/2013 522
Arena Green / SAP Center 14 37.3327 -121.9 19 San Jose 8/5/2013 590
Beale at Market 56 37.7923 -122.397 19 San Francisco 8/20/2013 8135
Broadway St at Battery St 82 37.7985 -122.401 15 San Francisco 1/22/2014 7460
California Ave Caltrain Station 36 37.4291 -122.143 15 Palo Alto 8/14/2013 300
Castro Street and El Camino Real 32 37.386 -122.084 11 Mountain View 12/31/2013 1137
+

... (58 rows omitted)

+ + + + +```python +Circle.map_table(station_starts.select('lat', 'long', 'name').with_columns( + 'color', 'blue', + 'area', station_starts.column('count') * 1000 +)) +# now make the circle size corespond to the count of station starts +``` + + + + + + + diff --git a/datascience/lec11/output_15_1.png b/datascience/lec11/output_15_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b8f05ac9f59b44b676b6b316146dd4e698e40603 GIT binary patch literal 13393 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 literal 0 HcmV?d00001 diff --git a/datascience/lec11/output_18_1.png b/datascience/lec11/output_18_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ef8e3eeeae59c9a303b502f6643c3004c3042982 GIT binary patch literal 26769 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