ラベル folium の投稿を表示しています。 すべての投稿を表示
ラベル folium の投稿を表示しています。 すべての投稿を表示

2018年5月26日土曜日

サンフランシスコのレンタサイクルのデータを見てみる その4。地図上に線を引く(python、folium、Map)

edX UCバークレー データサイエンス基礎講座(Foundation of Data Science)の演習、前回の続きです。

サンフランシスコ ベイエリアのレンタサイクル "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()
stationlatlongstart_count
100San Francisco Ferry Building (Harry Bridges Pl...37.795392-122.39420313338
5San Francisco Caltrain (Townsend St at 4th St)37.776598-122.39528212320
8San Francisco Caltrain Station 2 (Townsend St...37.776639-122.39552611890
15The Embarcadero at Sansome St37.804770-122.40323411861
31Market St at 10th St37.776619-122.41738511577

common2.head()
Start StationEnd Stationcount
0San Francisco Ferry Building (Harry Bridges Pl...The Embarcadero at Sansome St2842
1The Embarcadero at Sansome StSteuart St at Market St1764
2Berry St at 4th StSan Francisco Ferry Building (Harry Bridges Pl...1671
3The Embarcadero at Sansome StSan Francisco Ferry Building (Harry Bridges Pl...1639
42nd St at S Park StMontgomery 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
//SyntaxHighlighter CDNより https://cdnjs.com/libraries/SyntaxHighlighter // 対応言語