滴滴出行项目:用「A/B测试」分析城市运营效果

挖数网精选
挖数网精选
挖数网精选
446
文章
0
评论
2020-08-0513:08:00 评论 411 3595字
摘要

滴滴出行作为人们日常出行的常用软件,可谓是交通领域的”国民APP”。今天,我们来通过AB测试来分析一下滴滴出行的城市运营效果及其影响因素。

一.A/B测试效果分析

1. 数据导入

#数据导入

import pandas as pd

test = pd.read_excel("/home/kesci/input/didi4010/test.xlsx")test.head()

滴滴出行项目:用「A/B测试」分析城市运营效果

2. 计算ROI

#计算ROI

test["ROI"]=test["gmv"]/(test["coupon per trip"]*test["trips"])

test.head()

滴滴出行项目:用「A/B测试」分析城市运营效果

3. requests检验

requests方差检验

#levene检验requests是否齐方差

requests_A=test[test.group=="control"].requests

requests_B=test[test.group=="experiment"].requests

import scipy.stats as st

st.levene(requests_A,requests_B)

LeveneResult(statistic=0.014685075667736849, pvalue=0.903980667108546)

p值大于0.05,不拒绝原假设,因此可认为两组实验requests齐方差。

requests均值检验

#配对样本t检验(两独立样本t检验之前需检验是否齐方差,此处不需要)

st.ttest_rel(requests_A,requests_B)

Ttest_relResult(statistic=1.6436140982479508, pvalue=0.11143970454099936)

p值大于0.05,不拒绝原假设,因此可认为实验条件对requests影响不显著。

4. gmv检验

gmv方差检验

#levene检验gmv是否齐方差

gmv_A=test[test.group=="control"].gmv

gmv_B=test[test.group=="experiment"].gmv

st.levene(gmv_A,gmv_B)

LeveneResult(statistic=0.02865341299111212, pvalue=0.8661917430097603)

p值大于0.05,不拒绝原假设,因此可认为两组实验gmv齐方差。

gmv均值检验

#配对样本t检验(两独立样本t检验之前需检验是否齐方差,此处不需要)

st.ttest_rel(gmv_A,gmv_B)

Ttest_relResult(statistic=4.247583846321442, pvalue=0.00021564303983362577)

p值小于0.05,拒绝原假设,因此可认为实验条件对gmv有显著影响。

5. ROI检验

ROI方差检验

#levene检验ROI是否齐方差

ROI_A=test[test.group=="control"].ROI

ROI_B=test[test.group=="experiment"].ROI

st.levene(ROI_A,ROI_B)

LeveneResult(statistic=0.10363884745479335, pvalue=0.7487044961896305)

p值大于0.05,不拒绝原假设,因此可认为两组实验ROI齐方差。

ROI均值检验

#配对样本t检验(两独立样本t检验之前需检验是否齐方差,此处不需要)

st.ttest_rel(ROI_A,ROI_B)

Ttest_relResult(statistic=10.305504459268173, pvalue=4.93261342734923e-11)

p值小于0.05,拒绝原假设,因此可认为实验条件对ROI有显著影响。

二.城市运营分析

1. 数据导入

city = pd.read_excel("/home/kesci/input/didi4010/city.xlsx")

city.head()

滴滴出行项目:用「A/B测试」分析城市运营效果

city.info()

滴滴出行项目:用「A/B测试」分析城市运营效果

2. 数据探索

单量最多的时间点

req_hour = city.groupby(["hour"],as_index=True).agg({"requests":sum},inplace=True)

req_hour

滴滴出行项目:用「A/B测试」分析城市运营效果

import matplotlib.pyplot as plt

req_hour.plot(kind="bar")

plt.show()

滴滴出行项目:用「A/B测试」分析城市运营效果

可见,在11、12、13这三个时间点内,12点用户发起订单的需求是最大的,其次是13点,11点。

司机运营平台应考虑加大该时点车辆供应。

单量最多的日期

req_date = city.groupby(["date"],as_index=True).agg({"requests":sum},inplace=True)

req_date.sort_values("date").head()

滴滴出行项目:用「A/B测试」分析城市运营效果

req_date.plot(kind="line")

plt.show()

滴滴出行项目:用「A/B测试」分析城市运营效果

单月订单请求数随日期的变化呈周期性变化,我们猜测4个峰值分别对应4个周末,周末用户出行需求较大。

经验证发现猜想与数据吻合,因此司机运营平台应考虑加大周末、节假日的车辆供给。

各时段订单完成率

com_hour = city.groupby(["hour"],as_index=False).agg({"requests":sum,"trips":sum},inplace=True)

com_hour["rate"]=com_hour["trips"]/com_hour["requests"]

com_hour

滴滴出行项目:用「A/B测试」分析城市运营效果

13点订单需求较多,但订单完成率仅47%,说明较多订单没有得到及时相应。

客运部应重点关注13点订单相应时长,排查具体原因。

单月每日订单完成率

com_date = city.groupby(["date"],as_index=True).agg({"requests":sum,"trips":sum},inplace=True)

com_date["rate"]=com_date["trips"]/com_date["requests"]

com_date.sort_values("date").head()

滴滴出行项目:用「A/B测试」分析城市运营效果

com_date.rate.plot(kind="line")

plt.show()

滴滴出行项目:用「A/B测试」分析城市运营效果

单月每日订单完成率规律不太明显,但几个谷值基本都出现在周末附近,说明客户出行需求的提升可能导致响应率的降低。

顾客等待时间

import numpy as np

eta_hour = city.groupby(["hour"],as_index=True).agg({"pETA":np.mean,"aETA":np.mean},inplace=True)

eta_hour

滴滴出行项目:用「A/B测试」分析城市运营效果

eta_hour.plot(kind="bar")

<matplotlib.axes._subplots.AxesSubplot at 0x7f3aaebb2c18>

滴滴出行项目:用「A/B测试」分析城市运营效果

以上可见,无论哪个时点,用户实际等待时长均明显大于用户预计等待时长。

各时点用户等待时长差异不明显,但13点最高。

客运部一方面应提升用户预计等待时长的准确性,另一方面优化平台派单逻辑等。

司机在忙率

city["busy"] = city["supply hours"]*city["utiliz"]

city.head()

滴滴出行项目:用「A/B测试」分析城市运营效果

busy_hour = city.groupby(["hour"],as_index=False).agg({"supply hours":sum,"busy":sum})

busy_hour["utiliz"] = busy_hour["busy"]/busy_hour["supply hours"]

busy_hour

滴滴出行项目:用「A/B测试」分析城市运营效果

12点司机在忙总时长最长,在忙率也最高,用户订单请求也最多,说明车辆总数偏少。

订单时长

trip_min = city.groupby(["hour"],as_index=False).agg({"average minutes of trips":np.mean})trip_min

滴滴出行项目:用「A/B测试」分析城市运营效果

12点用户订单需求较多,同时订单时长最长,说明这个时间点是一个非常重要的时间点。

supply_hour = city.groupby(["hour"],as_index=False).agg({"supply hours":np.mean})

supply_hour

滴滴出行项目:用「A/B测试」分析城市运营效果

13点订单量也较大,此时点司机服务时长较短。

为优化用户出行体验,司机运营平台可联合客运部可考虑此时段尽量分配总服务时长较长的司机来接单(经验较为丰富)。

后续思考方向:

提升顾客预计等待时长预测准确度(需要历史数据进行预测)

加大车辆投入(分车辆不同等级来看,因此可能需要车辆相关信息表)

优化用户体验(需要客诉相关数据)

优化平台派单逻辑(需要订单的位置相关数据)

个性化需求(需要用户属性、及其他行为数据)

End.

作者:Rilke Yang

来源:和鲸社区

本文为转载分享,如侵权请联系后台删除

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: