案例:990万次骑行:纽约自行车共享系统分析

案例:990万次骑行:纽约自行车共享系统
__from 《像Excel一样使用Python进行数据分析》
 
 

System Data

 

Where do Citi Bikers ride? When do they ride? How far do they go? Which stations are most popular? What days of the week are most rides taken on? We've heard all of these questions and more from you, and we're happy to provide the data to help you discover the answers to these questions and more. We invite developers, engineers, statisticians, artists, academics and other interested members of the public to use the data we provide for analysis, development, visualization and whatever else moves you.

 

 

Citi Bike是纽约市在2013年5月27日启动的一项自行车共享计划,由“花旗银行”Citi Bank赞助并取名为“花旗单车”(Citi Bike)。
在曼哈顿,布鲁克林,皇后区和泽西市有8000辆自行车和500个车站。为纽约的居民和游客提供一种方便快捷,并且省钱的出门方式。
 加入----------解锁---------骑行--------归还
 
人们随处都能接到Citi Bike,并且在目的地归还。
使用Citi Bike的方法很简单,购买会员资格,然后在附件查找可以使用的Citi Bike,使用会员key解锁,在有效时间内(30-45minutes)归还并锁定Citi Bike。
由于每个Citi Bike的租赁站点都有GPS位置信息,因此可以记录到用户租赁和骑行过程中的数据。
Citi Bike官网提供了用户每一次骑行的数据,包括租赁开始及结束的位置及时间,整个骑行过程的时间,自行车ID,以及用户的性别和出生日期等数据。
我们将使用python对Citi Bike2015年的数据进行分析,以了解纽约自行车共享计划的情况。并回答诸如谁在使用Citi Bike?他们什么时间开始骑行?每次骑行的时间和距离,以及哪些骑行路线最受欢迎等问题。
 
 首先我们将需要使用的库文件导入到python中,这里包括pandas,numpy,matplotlib中用于数据可视化的pyplot,datetime。
后面根据不同的分析方向我们还会陆续导入其他的库文件。
  1. import pandas as pd
  2. import numpy as np
  3. import time,datetime
  4. import matplotlib.pyplot as plt
  5.  
  6. #读取Citi Bike的数据并创建数据表
  7. cb1=pd.DataFrame(pd.read_csv('201501-citibike-tripdata.csv'))
查看cb1表的维度
  1. cb1.shape #查看cb1表的维度
  2. (285552,15)
Citi Bike的数据是按月存储的,因此我们需要逐月读取并将各个月份的数据进行拼接。
  1. #对导入的数据表进行拼接,汇总后的数据表名为cb
  2. cb=cb1.append(cb2,ignore_index=False)
  3. #查看数据表维度
  4. cb.shape
  5. (9937969, 15)
2015年Citi Bike数据共包含993万行,15列数据。其中每一行数据都代表一次“Citi Bike”的租借和骑行记录。
                                ____以下与正文无关,关于pd.DataFrame.append()
                            
 
 
 
 我们首先对2015年Citi Bike的数据中的几个关键指标进行统计,在一年中共有497个租赁点,也就是车站,8477辆自行车被使用。
自行车的使用次数更是高达993万次,平均算下来每辆自行车每天被租借3.21次。
可见人们对Citi Bike的热情。
而每次的骑行时间平均为16.13分钟。
 以下为每个关键指标的统计代码和结果。
 
  1. #唯一租赁点数量计数
  2. len(cb['start station name'].unique())
  3. 497
  4. #唯一自行车ID计数
  5. len(cb['bikeid'].unique())
  6. 8477
  7. #每辆自行车租借频率
  8. cb['bikeid'].count()/len(cb['bikeid'].unique())
  9. 1172.3450513153239
  10. #每辆自行车每日租借频率
  11. cb['bikeid'].count()/len(cb['bikeid'].unique())/365
  12. 3.21190425-1789696
  13.  
  14. #每次租借平均时长(分钟)
  15. cb['tripduration'].sum()/cb['bikeid'].count()/60
  16. 16.134794237132358
 
 2015年的Citi Bike的使用量整体趋势由低到高,2月Citi Bike的使用量最低,然后使用量逐月增长,直到9月出现使用量最高值。11月使用量开始下降。这可能是由于季节和气温因素导致的。
我们下面按季度对骑行数据进行汇总并进行对比。
 
以下是按月汇总骑行数据并汇总折线图的代码。
  1. #对starttime设置日期格式
  2. cb['starttime']=pd.to_datetime(cb['starttime'])
  3.  
  4. #将starttime设置为数据表索引
  5. cb=cb.set_index('starttime')
  6.  
  7. #按月对骑行数据进行计数
  8. cb_month=cb.resample('M',how=len)
  9.  
  10. #提取汇总后的bikeid字段
  11. group_cb_month=cb_month['bikeid']
  12.  
  13. #汇总按月汇总的骑行次数折线图
  14. plt.rc('font',family='STXihei',size=15)
  15. a=np.array(group_cb_month,'g8',group_cb_month,'g-',color='#39A2E1',
  16. linewidth=3,markeredgewidth=3,markeredgecolor='#39A2E1',alpha=0.8)
  17. plt.xlabel('月份')
  18. plt.ylabel('租赁骑行次数')
  19. plt.title('2015年Citi Bike每月骑行次数')
  20. plt.grid(color='#95a5a6',linestyle='--',linewidth=1,axis='y',alpha=0.4)
  21. plt.xticks(a,('1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'))
  22. plt.show()
  23.  
 
 
 
 从2015年四个季度的数据来看,用户对Citi Bike的使用瘦季节因素的影响,第一季度气温最低,Citi Bike的使用量也比较低。第二季度第三季度为夏秋交替,使用量最高。
  1. #按季度对骑行数据进行计数
  2. cb_quarterly=cb.resample('Q',how=len)
  3. #提取按季度汇总后的bikeid字段
  4. group_cb_quarterly=cb_quarterly['bikeid']
  5. #绘制按季度汇总的骑行次数柱状图
  6. plt.rc('font',family='STXihei',size=15)
  7. a=np.array([1,2,3,4])
  8. plt.bar([1,2,3,4],group_cb_quarterly,color='#39A2E1',alpha=0.8,align='center',
  9. edgecolor='white')
  10. plt.xlabel('季度')
  11. plt.ylabel('租赁骑行次数')
  12. plt.title('2015年Citi Bike每季度骑行次数')
  13. plt.legend(['次数'],loc='upper right')
  14. plt.grid(color='#95a5a6',linestyle='--',linewidth=1,axis='y',alpha=0.4)
  15. plt.xticks(a,('一季度','二季度','三季度'
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值