サンフランシスコ ベイエリアのレンタサイクル "Ford Go Bike"の利用状況を把握する。
今回は、借りたステーション(開始ステーション)と返却したステーション(返却ステーション)の組み合わせを地図上に線で表示します。下記のサイトが大変参考になりました。
folium quickstart
Deparks:Plot Lines In Folium
hibomaの日記:Python + folium で Strava の "全"記録を地図で可視化 🚲
元データ
サンフランシスコ ベイエリア レンタサイクル Ford Go Bike
https://www.fordgobike.com/
システムデータ
https://s3.amazonaws.com/fordgobike-data/index.html
2017年のトリップデータ(このデータを使います)
https://s3.amazonaws.com/fordgobike-data/2017-fordgobike-tripdata.csv
・使用するデータフレームの確認
stations_startcount.head()
| station | lat | long | start_count | |
|---|---|---|---|---|
| 100 | San Francisco Ferry Building (Harry Bridges Pl... | 37.795392 | -122.394203 | 13338 |
| 5 | San Francisco Caltrain (Townsend St at 4th St) | 37.776598 | -122.395282 | 12320 |
| 8 | San Francisco Caltrain Station 2 (Townsend St... | 37.776639 | -122.395526 | 11890 |
| 15 | The Embarcadero at Sansome St | 37.804770 | -122.403234 | 11861 |
| 31 | Market St at 10th St | 37.776619 | -122.417385 | 11577 |
common2.head()
| Start Station | End Station | count | |
|---|---|---|---|
| 0 | San Francisco Ferry Building (Harry Bridges Pl... | The Embarcadero at Sansome St | 2842 |
| 1 | The Embarcadero at Sansome St | Steuart St at Market St | 1764 |
| 2 | Berry St at 4th St | San Francisco Ferry Building (Harry Bridges Pl... | 1671 |
| 3 | The Embarcadero at Sansome St | San Francisco Ferry Building (Harry Bridges Pl... | 1639 |
| 4 | 2nd St at S Park St | Montgomery St BART Station (Market St at 2nd St) | 1504 |
前回までに作ったデータフレームを使います。start_stationcountにステーション名と座標が、common2に開始ステーションと返却ステーションの組み合わせと利用回数が入っており、利用回数の多い順に並べ替えています。
・地図上に描画
map_osm = folium.Map(location=[37.795392,-122.394203],zoom_start=13)
for i, r in common2[0:200].iterrows():
start_station=stations_startcount[stations_startcount["station"]==r["Start Station"]]
end_station=stations_startcount[stations_startcount["station"]==r["End Station"]]
s_lat=start_station["lat"].iloc[0]
s_long=start_station["long"].iloc[0]
e_lat=end_station["lat"].iloc[0]
e_long=end_station["long"].iloc[0]
location=[[s_lat,s_long],[e_lat,e_long]]
k=1
for each in location:
if k==1:
station=r["Start Station"]
else:
station=r["End Station"]
folium.Circle(
location=each,
popup=station,
radius=2.5,
).add_to(map_osm)
k=k+1
folium.PolyLine(
locations=location,
weight= r["count"] / 300,
).add_to(map_osm)
map_osm
一気に描きます。開始ステーションと返却ステーションの組み合わせで、利用回数が多い順に200件を描画します。
Mapで中心座標とズームを指定してオブジェクトを作成。common2の開始、返却ステーション名をstations_startcountと比較して座標を取り出し。locationにリストとして開始ステーション、返却ステーションのそれぞれの座標を保存します。
for each in location以下では、まず、ポップアップで表示されるステーション名をstationに取得、Circleで各ステーションに小さな円とポップアップを設定します。
線を描くのはfolium.Polylineで、locationで2点の座標を指定、weightで太さを設定しています。太さは利用回数/300として、利用回数が大きいほど太く表示するようにしました。
・出力
利用経路の線が描かれました。ちょっと選択しずらいですが、線の端をクリックするとステーション名が表示されます。
東海岸沿いの太い線が最も利用が多いフェリービルディングと Embarcadero at Sansome Stの線です。数ヶ所の利用が多いステーションがあり、それらのステーション間を結んで利用されているようです。オークランドの方は中心にMacArthur BART Stationがあり、星型に4ヶ所を結ぶ形になっています。
開始ステーションと返却ステーションの方向を矢印で表示したかったのですが、やり方がわかりませんでした。これは今後の課題ということで。
参考:
folium quickstart
https://python-visualization.github.io/folium/quickstart.html
Deparks:Plot Lines In Folium https://deparkes.co.uk/2016/06/03/plot-lines-in-folium/
hibomaの日記:Python + folium で Strava の "全"記録を地図で可視化 🚲 http://hiboma.hatenadiary.jp/entry/2017/09/13/094056
edx UC Berkeley Foundations of Data Science(UCバークレー データサイエンス基礎講座)
ttps://www.edx.org/professional-certificate/berkeleyx-foundations-of-data-science
Computational Thinking with Python(pythonによるプログラミング的思考)
https://www.edx.org/course/foundations-data-science-computational-uc-berkeleyx-data8-1x
サンフランシスコ ベイエリア レンタサイクル Ford Go Bike
https://www.fordgobike.com/
システムデータ
https://s3.amazonaws.com/fordgobike-data/index.html
プログラミング学習:edx UCバークレー データサイエンス基礎講座の紹介(python)
https://eneprog.blogspot.com/2018/04/edx-uc-python.html
サンフランシスコのレンタサイクルのデータを見てみる(基本統計量、python、pandas、ヒストグラム)
https://eneprog.blogspot.com/2018/05/pythonpandas_17.html
サンフランシスコのレンタサイクルのデータを見てみる その2。よく使われているステーションを調べる(python、pandas、groupby、pivot_table)
https://eneprog.blogspot.com/2018/05/pythonpandasgroupbypivottable.html
サンフランシスコのレンタサイクルのデータを見てみる その3。地図上に可視化(python、pandas、folium、Map)
https://eneprog.blogspot.com/2018/05/3pythonpandasfoliummap.html