サンフランシスコ ベイエリアのレンタサイクル "Ford Go Bike"の利用状況を把握する。
- 利用時間の傾向、分布
- よく使われているステーション
- ステーションの地図の可視化
今回はこのうち、利用時間の傾向・分布を見て見ます。
サンフランシスコ ベイエリア レンタサイクル Ford Go Bike
システムデータ
使用するデータは上記システムデータの2017年tripdata(https://s3.amazonaws.com/fordgobike-data/2017-fordgobike-tripdata.csv)にします。
・インポート
import numpy as np import pandas as pd import matplotlib import matplotlib.pyplot as plt
データ読み込み(データが118MBと大きいため、一旦ダウンロードしてから読み込んでいます)
trips = pd.read_csv('tripdata.csv')
trips.head()
| duration_sec | start_time | end_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 | member_birth_year | member_gender | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 80110 | 2017-12-31 16:57:39.6540 | 2018-01-01 15:12:50.2450 | 74 | Laguna St at Hayes St | 37.776435 | -122.426244 | 43 | San Francisco Public Library (Grove St at Hyde... | 37.778768 | -122.415929 | 96 | Customer | 1987.0 | Male |
| 1 | 78800 | 2017-12-31 15:56:34.8420 | 2018-01-01 13:49:55.6170 | 284 | Yerba Buena Center for the Arts (Howard St at ... | 37.784872 | -122.400876 | 96 | Dolores St at 15th St | 37.766210 | -122.426614 | 88 | Customer | 1965.0 | Female |
| 2 | 45768 | 2017-12-31 22:45:48.4110 | 2018-01-01 11:28:36.8830 | 245 | Downtown Berkeley BART | 37.870348 | -122.267764 | 245 | Downtown Berkeley BART | 37.870348 | -122.267764 | 1094 | Customer | NaN | NaN |
| 3 | 62172 | 2017-12-31 17:31:10.6360 | 2018-01-01 10:47:23.5310 | 60 | 8th St at Ringold St | 37.774520 | -122.409449 | 5 | Powell St BART Station (Market St at 5th St) | 37.783899 | -122.408445 | 2831 | Customer | NaN | NaN |
| 4 | 43603 | 2017-12-31 14:23:14.0010 | 2018-01-01 02:29:57.5710 | 239 | Bancroft Way at Telegraph Ave | 37.868813 | -122.258764 | 247 | Fulton St at Bancroft Way | 37.867789 | -122.265896 | 3167 | Subscriber | 1997.0 | Female |
duration_secで利用時間(秒)、借りたステーション、返したステーションなどの情報が入っています。今回はこのうち、duration_sec、start_station_name、end_station_nameだけを使います。
・必要な列の選択、列名の更新
duration= trips[["duration_sec","start_station_name","end_station_name"]]
duration=duration.rename(columns={'duration_sec': 'Duration','start_station_name': 'Start Station','end_station_name':"End Station"})
duration.head()
| Duration | Start Station | End Station | |
|---|---|---|---|
| 0 | 80110 | Laguna St at Hayes St | San Francisco Public Library (Grove St at Hyde... |
| 1 | 78800 | Yerba Buena Center for the Arts (Howard St at ... | Dolores St at 15th St |
| 2 | 45768 | Downtown Berkeley BART | Downtown Berkeley BART |
| 3 | 62172 | 8th St at Ringold St | Powell St BART Station (Market St at 5th St) |
| 4 | 43603 | Bancroft Way at Telegraph Ave | Fulton St at Bancroft Way |
必要な3つの列のみを取り出し、renameで列名(columns)を変更しました。
・並べ替え
duration.sort_values(by=["Duration"],ascending=False).head()
| Duration | Start Station | End Station | |
|---|---|---|---|
| 138862 | 86369 | San Pedro Square | San Pedro Square |
| 223508 | 86355 | Folsom St at 19th St | Central Ave at Fell St |
| 54888 | 86325 | Mosswood Park | Mosswood Park |
| 54889 | 86281 | Mosswood Park | Mosswood Park |
| 120423 | 86252 | Downtown Berkeley BART | Telegraph Ave at Alcatraz Ave |
利用時間が大きい順に並べ替えしてみました。sort_valuesで値で並べ替え、byで並べ替える項目を、ascending=Falseで降順(値の大きい順)を指定しています。ascendingをTrueまたは省略すると、昇順(値の小さい順)での並べ替えになります。
利用時間の最大値は86369秒、約1日となっています。
・利用時間のヒストグラムを描く
duration.hist("Duration")
単純に利用時間の全データでヒストグラムを描いてみると、ほぼ10000秒(約170分)未満だけのグラフになってしまいました。
・基本統計量を見る。
duration.describe()
| Duration | |
|---|---|
| count | 519700.000000 |
| mean | 1099.009521 |
| std | 3444.146451 |
| min | 61.000000 |
| 25% | 382.000000 |
| 50% | 596.000000 |
| 75% | 938.000000 |
| max | 86369.000000 |
describeで基本統計量をまとめて表示できます。
count:データ数 519700件最大利用時間が86369秒(約1日)なのに対し、中央値は596秒(約10分)。75%タイル値も938秒(約15分)でほとんどが短時間の利用になっているようです。
mean:平均値 約1099秒
std:標準偏差 3444
min:最低値 61秒
25%:25%タイル値 382秒
50%:50%タイル値=中央値 596秒
75%:75%タイル値 938秒
max:最大値 86369秒
・パーセンタイル
duration["Duration"].quantile(.90)
1502.0
quantileでタイル値を表示します。.90で90%タイル値です。1502秒未満の利用が90%を占めています。
・範囲指定でヒストグラムを描く
duration.hist("Duration",range=(0,2000))
約1500秒未満の利用が90%を占めているので、2000秒までの分布を見てみます。rangeで範囲を0以上、2000未満に設定してヒストグラムを描きました。利用時間は500秒あたりにピークがあって、その後は減っていってるようです。
・分割数(bin)を指定してヒストグラムを描く
duration.hist("Duration",range=(0,2000),bins=60)
binsで分割数を60に指定してヒストグラムを描いてみました。約400秒の利用が最も多く、その後は徐々に減っていく、右のすそが長い分布となりました。
レンタサイクル "Ford to go"の料金プランを見てみると、1回利用が30分以内で$2(追加の15分は$3)、1日(24時間)利用が$10になっています。
Ford to go 料金プラン
https://www.fordgobike.com/pricing
利用時間の分布から見ると、ほとんどが1回利用で30分(1800秒)以内に返却していて、1日利用は少ないようです。10分以下の利用が多くなっていて、近場での移動に使っているようです。1回利用で30分を過ぎてしまった利用者もそれなりにいるように見えます。
つづく
参考:
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
プログラミング学習:pandasでweb上の表を取得する。(python)
https://eneprog.blogspot.com/2018/04/pandaswebpython.html プログラミング学習:各国の女性の平均就学期間をグラフ化する。(python,pandas) https://eneprog.blogspot.com/2018/05/pythonpandas.html
追伸:edX UC Berkley Foundations of Data Scienceの最初の講座(Computational Thinking with Python)は終了し、2番目のInferential Thinking by Resamplingが2018年5月22日から開始になります。
0 件のコメント:
コメントを投稿