项目背景

本项目以上海地区8月份骑行样本数据(mobike_shanghai_sample_updated.csv)为研究对象,该数据覆盖全月时间节点,包含订单、用户、地理、轨迹等多维度字段,具备时间完整性与业务关联性。项目核心目标是挖掘用户骑行时长、距离、时间/地理分布等行为规律,通过RFM模型实现用户价值分层,进而为车辆调度优化、差异化营销策略制定、商业决策支撑提供依据,助力摩拜在上海实现精细化运营,同时为行业同类企业提供实践参考。

数据探索

这一步中统观数据的全貌,对数据有个大体的了解,对数据进行质量探索和特征分析

该数据集为摩拜共享单车企业提供的上海城区2016年8月随机抽样的10万多条用户骑行用车数据(订单数据),包含交易编号、用户ID、车辆ID、骑行起点经纬度、骑行终点经纬度、租赁时间、还车时间、骑行轨迹经纬度等数据。

查看数据集属性类型,在这里可以看出租赁时间和还车时间的数据类型为object类型,紧接着可以把它转化为datetime类,便于后面对时间数据进行处理。

数据挖掘

骑行时长与距离计算

骑行时长(lag):通过end_time-start_time计算时间差,提取秒数后除以60转换为“分钟”单位,反映用户单次骑行的时间消耗;

直线距离(distance):基于起点(start_location_x/y)、终点(end_location_x/y)经纬度,用Haversine公式计算球面直线距离(单位:千米)——先将经纬度转为弧度,代入公式计算两点间球面距离,再保留3位小数,反映骑行的空间跨度;

实际路径长度(adderLength):解析原始track字段(格式:“经度1,纬度1#经度2,纬度2#...”),按“#”拆分轨迹点,循环计算相邻轨迹点的直线距离并累加,得到实际骑行路径长度,可与distance对比,判断路径曲折程度。

时间特征提取

星期几(weekday):通过start_time.isoweekday()提取订单对应的星期(1=周一,7=周日),用于分析工作日与周末的骑行需求差异;

小时时段(hour):通过start_time.utctimetuple().tm_hour提取订单发生的小时(0-23),用于识别日内骑行高峰(如早7-9点、晚17-19点通勤高峰)。

骑行费用估算(cost)

参考2016年摩拜“每30分钟1元”的收费标准,用ceil(x/30)对骑行时长(lag)向上取整,估算每笔订单费用(单位:元),为后续用户消费能力分析提供数据支撑。

用户价值分层:基于RFM模型的用户分类

从“用户维度”挖掘价值,通过RFM模型(近度-频度-额度)对用户进行分级,精准识别不同价值用户群体:

RFM指标定义:以9月1日为基准日(因数据仅含8月订单),计算用户级指标:

  1. R值(近度):用户最近一次骑行距9月1日的天数,通过32-订单日计算单订单R值,再按userid分组取最小值(即最近一次骑行的间隔天数);
  2. F值(频度):用户8月骑行订单总数,按userid分组统计订单量;
  3. M值(额度):用户8月骑行总费用,按userid分组求和cost。

指标得分转换:用pd.cut()将R、F、M指标各分为5级并赋值(R值越小越优,标签倒序为[5,4,3,2,1];F、M值越大越优,标签正序为[1,2,3,4,5]),得到r_score、f_score、m_score;

现在r_score、f_score、m_score在1-5几个数之间,把这3个值进行组合,像111,112,113...这样可以组合出125(5*5*5)种结果,但过多的分类和不分类本质上是差不多的,所以在划分用户维度这一块,简化分组结果。通过判断每个客户的R、F、M分数是否大于其平均值,来简化分组结果。每个客户的RFM值和RFM平均值对比后只有0和1(0表示小于平均值,1表示大于平均值)两种结果,整体组合下来共有8个分组(2*2*2)

地理编码优化

为便于地理区域聚合分析,将经纬度转换为标准化地理编码:
通过geohash.encode()函数,将起点、终点经纬度转换为6位geohash编码(精度约1.2km×0.6km),生成geohash_start_block(起点编码)、geohash_end_block(终点编码),可用于后续统计“热门起点/终点区域”“核心骑行流向”,为车辆调度提供依据。

查看扩充后的数据

扩充后的数据集增加如下信息字段:lag(骑行时长)、distance(骑行位移)、adderLength(骑行路径)、weekday(骑行的星期日期)、hour(骑行时间段)、cost(本次骑行的消费金额)、r_value_single(订单发起时间距离9月1日的天数)、user_class(用户分级)、geohash_start_block(骑行起点所在区块的GeoHash编码字符串)、geohash_end_block(骑行终点所在区块的GeoHash编码字符串)

数据分析

时间维度

骑行时长分布分析

由图表观察到数据存在明显的长尾,呈现右偏态分布(正态分布和偏态分布都是正常现象,个人觉得,因为人们使用共享单车出行这一行为本身就含有“偏心”,倾向于短期出行);x轴的数据范围非常大,造成这样的结果有一部分是由于数据存在异常记录,由图表x轴的数据范围跨度,观察到有存在骑行时长长达955分的骑行记录,而连续骑行955分以上显然是不正常的,这样的数据记录可能是用户骑行忘记关锁造成的。针对数据中骑行时长数据存在异常的处理,考虑新增骑行速度“speed”一列(骑行路径/骑行时长),通过大致剔除骑行速度存在明显异常(骑行速度一般在12-20km/h)的记录而去除掉用户骑行后忘记关锁造成的异常记录。然后再重新绘制直方图观察骑行时长的数据分布情况

如图所示,长尾明显减弱。

24小时骑行订单数分布分析

由图可以看出:23-5点这段时间,人们大多在休息,使用共享单车出行的订单数很少;6点开始,订单数逐渐开始增多;在7-9点、17-20点上下班时段,出现订单数的小高峰,分别是早高峰和晚高峰;11-14点时段,出现局部午高峰,这和中午外出就餐或者休息时间活动有一定关系。整体趋势表明,共享单车的骑行交通在很大程度上是服务于人们的通勤出行的

工作日和非工作日的24小时骑行订单数分布分析

紫色柱状表示工作日内每小时平均订单量的分布。同上述每小时总订单量分布情况相似:23-5点这段时间,使用共享单车出行的订单数很少;6点开始,订单数逐渐开始增多;在7-9点、17-20点上下班时段,出现订单数的小高峰,分别是早高峰和晚高峰;11-14点时段,出现局部午高峰。

绿色柱状为非工作日内每小时平均订单量的分布。非工作日骑行交通以非通勤交通为主,与工作日的分布情况比较,分布相对平缓,没有明显的早晚高峰现象

空间维度

骑行距离(路径)分布分析

骑行距离分布图粗略显示出主要的骑行距离大概集中在3千米左右的范围内。但也存在远距离甚至40公里以上的骑行,可考虑为异常数据;或者可以理解为其他特殊的骑行现象。采用箱型图判断异常值。

由图观察到绘制出来的箱形图的箱体很扁和下须线非常短,这说明骑行距离的数据按从小到大排序的分布的前75%是十分集中的;而上须线非常长,这说明整个数据集的范围跨度很大,后25%的数据分布十分分散。这一规律也在上面的条形图中反映了出来。通过图表的提示弹框,知道此箱型图的分布情况:Q1下四分位数3.76、Q3上四分位数12.27,从而计算出IQR四分位距为8.51,上内限为:25.035,下内限为负,不予考虑。处于上内限以外的数据是异常值。所以考虑把骑行距离大于25.035千米的都视为异常数据,做一层过滤,再绘制骑行距离分布图,从而更清晰地观察骑行距离的分布。

从衡量每辆共享单车的工作量,找出最可能坏的单车

从骑行路程去衡量每辆单车的工作量,从而检索出需要被拎出来检修的单车。这里统计每辆单车的骑行路径,筛选出骑行路径前15的车辆ID,作为需要检修的单车名单,当然车辆数量要根据实际考察后定义更准确些。

找出单车紧缺的地区和单车空闲地区,进行单车调度

分析思路:

1.计算同样经纬度的位置上的单车迁出数:按照bikeid进行排序,一个bikeid有多个订单,选取最早时间段的订单数据,对选取的订单数据的起点经纬度进行两次groupby,再调用count()统计同样经纬度的地点上有多少辆单车被骑走。

2.计算同样经纬度的位置上的单车迁入数:按照bikeid进行排序,一个bikeid有多个订单,选取最晚时间段的订单数据,对选取的订单数据的终点经纬度进行两次groupby,再调用count()统计同样经纬度的地点上有多少辆单车被骑回。

3.计算迁入数减去迁出数的差值,如果某地的单车差值小于0,表示某地的单车“有去无回”。通过统计这些单车数量存在亏损较多的地点多分布在哪个地区,确定新单车的投放地点

4.最后通过调用高德的API,输入经纬度信息获取详细地理位置

如上图为单车紧缺的位置信息

如上图为单车空闲的位置信息

用户维度

根据RFM模型进行用户分层,从8个维度进行划分后的用户对应的用户特点如图所示

由图所示,新用户的数量位居第二,和第一名的数量相差无几,可以看出,摩拜共享单车的业绩是处于上升阶段的,需要对这些用户时不时推送优惠活动,建立与新用户的联系,使其向忠实用户转化;流失用户的数量位居第三,如何制定用户唤回策略也是摆在摩拜面前的一个关卡。频次深耕用户、高消费唤回用户和重要价值流失预警用户的数量极少,这说明2016年摩拜单车还是个新企业,其用户结构还不完善。可以和有关官方组织合作举办公路自行车马拉松比赛,成为比赛赞助商,提供自行车比赛车辆,从而吸引参赛者更多使用摩拜单车,提高摩拜单车品牌知名度,稳固用户结构。

从图中可以看到重要价值用户的平均消费金额位居第一,但其用户数量却仅居第四,与前两名还有一段差距,需要采取营销策略提高这部分用户的数量,这类用户的用户特点是最近购买、高频、高消费,说明其对共享单车的使用需求高,可以在比如工业区等企业聚居密集、居民区等用车频繁的区域投放单车,扩大消费潜力用户的数量。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐