2018年5月17日木曜日

サンフランシスコのレンタサイクルのデータを見てみる(基本統計量、python、pandas、ヒストグラム)

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

サンフランシスコ ベイエリアのレンタサイクル "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_secstart_timeend_timestart_station_idstart_station_namestart_station_latitudestart_station_longitudeend_station_idend_station_nameend_station_latitudeend_station_longitudebike_iduser_typemember_birth_yearmember_gender
0801102017-12-31 16:57:39.65402018-01-01 15:12:50.245074Laguna St at Hayes St37.776435-122.42624443San Francisco Public Library (Grove St at Hyde...37.778768-122.41592996Customer1987.0Male
1788002017-12-31 15:56:34.84202018-01-01 13:49:55.6170284Yerba Buena Center for the Arts (Howard St at ...37.784872-122.40087696Dolores St at 15th St37.766210-122.42661488Customer1965.0Female
2457682017-12-31 22:45:48.41102018-01-01 11:28:36.8830245Downtown Berkeley BART37.870348-122.267764245Downtown Berkeley BART37.870348-122.2677641094CustomerNaNNaN
3621722017-12-31 17:31:10.63602018-01-01 10:47:23.5310608th St at Ringold St37.774520-122.4094495Powell St BART Station (Market St at 5th St)37.783899-122.4084452831CustomerNaNNaN
4436032017-12-31 14:23:14.00102018-01-01 02:29:57.5710239Bancroft Way at Telegraph Ave37.868813-122.258764247Fulton St at Bancroft Way37.867789-122.2658963167Subscriber1997.0Female

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() 
DurationStart StationEnd Station
080110Laguna St at Hayes StSan Francisco Public Library (Grove St at Hyde...
178800Yerba Buena Center for the Arts (Howard St at ...Dolores St at 15th St
245768Downtown Berkeley BARTDowntown Berkeley BART
3621728th St at Ringold StPowell St BART Station (Market St at 5th St)
443603Bancroft Way at Telegraph AveFulton St at Bancroft Way

必要な3つの列のみを取り出し、renameで列名(columns)を変更しました。

・並べ替え
duration.sort_values(by=["Duration"],ascending=False).head()
DurationStart StationEnd Station
13886286369San Pedro SquareSan Pedro Square
22350886355Folsom St at 19th StCentral Ave at Fell St
5488886325Mosswood ParkMosswood Park
5488986281Mosswood ParkMosswood Park
12042386252Downtown Berkeley BARTTelegraph Ave at Alcatraz Ave

利用時間が大きい順に並べ替えしてみました。sort_valuesで値で並べ替え、byで並べ替える項目を、ascending=Falseで降順(値の大きい順)を指定しています。ascendingをTrueまたは省略すると、昇順(値の小さい順)での並べ替えになります。

利用時間の最大値は86369秒、約1日となっています。

・利用時間のヒストグラムを描く
duration.hist("Duration")


単純に利用時間の全データでヒストグラムを描いてみると、ほぼ10000秒(約170分)未満だけのグラフになってしまいました。

・基本統計量を見る。
duration.describe()
Duration
count519700.000000
mean1099.009521
std3444.146451
min61.000000
25%382.000000
50%596.000000
75%938.000000
max86369.000000

describeで基本統計量をまとめて表示できます。
count:データ数 519700件
mean:平均値 約1099秒
std:標準偏差 3444
min:最低値 61秒
25%:25%タイル値 382秒
50%:50%タイル値=中央値 596秒
75%:75%タイル値 938秒
max:最大値 86369秒
最大利用時間が86369秒(約1日)なのに対し、中央値は596秒(約10分)。75%タイル値も938秒(約15分)でほとんどが短時間の利用になっているようです。

・パーセンタイル
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 件のコメント:

コメントを投稿

//SyntaxHighlighter CDNより https://cdnjs.com/libraries/SyntaxHighlighter // 対応言語