作者:凹凸数据

本文约2600字,建议阅读9分钟

本文介绍了滴滴出行的数据分析实战。

hi,我是 Rilke Yang

这是一篇我关于滴滴的数据实战,希望能够帮助到大家~

随着企业日常经营活动的进行,企业内部必然产生了各式各样的数据,如何利用这些数据得出有益的见解,并支持我们下一步的产品迭代以及领导决策就显得尤为重要。

A/B测试是互联网企业常用的一种基于数据的产品迭代方法,它的主要思想是在控制其他条件不变的前提下对不同(或同一、同质)样本设计不同实验水平(方案),并根据最终的数据变现来判断自变量对因变量的影响;A/B测试的理论基础主要源于数理统计中的假设检验部分,此部分统计学知识读者可自行探索。

长话短说,本次实战用到的数据集分为两个Excel文件,其中test.xlsx为滴滴出行某次A/B测试结果数据,city.xlsx为某城市运营数据。

数据说明

test.xlsx city.xlsx
date:日期 date:日期
group:组别(控制组/实验组) hour:时点
requests:订单请求数 requests:请求数
gmv:成交总额 trips:订单数
coupon per trip:每单优惠券金额 supply hours:可服务时长
trips:订单数 average minutes of trips:平均订单时长(分钟)
canceled requests:取消请求数 pETA:顾客预计等待时长
aETA:顾客实际等待时长
utiliz:司机在忙率

test.xlsx 数据可以用来判断实验条件对此次A/B测试的结果影响是否显著;city.xlsx 数据可以用来探索该城市运营中出现的问题,根据关键结论辅助决策。

在本文中,我们将使用该数据来做A/B测试效果分析与城市运营分析。

一、A/B测试效果分析

1、数据导入

#A/B测试结果数据导入
import pandas as pd
test = pd.read_excel('/home/kesci/input/didi4010/test.xlsx')test.head()


2、计算ROI

#计算优惠券投入相对gmv的ROItest['ROI']=test['gmv']/(test['coupon per trip']*test['trips'])test.head()



3、requests检验

数据共58条,对照组与实验组各29条,样本量<30。

3.1 requests方差检验

  1. 记两组requests方差分别为从c1,c2

  2. 零假设H0:c1=c2;备选假设:H1:c1≠c2

  3. 显著性水平取0.05

#levene检验requests是否齐方差
requests_A=test[test.group=='control'].requestsrequests_B=test[test.group=='experiment'].requests
import scipy.stats as stst.levene(requests_A,requests_B)

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

3.2 requests均值检验

  1. 该数据为同一样本实验前后的不同水平,因此选用配对样本t检验。

  2. 记两组requests均值分别为从u1,u2

  3. 零假设H0:u1=u2;备选假设:H1:u1≠u2

  4. 显著性水平取0.05

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

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

4、gmv检验

4.1 gmv方差检验

#levene检验gmv是否齐方差
gmv_A=test[test.group=='control'].gmvgmv_B=test[test.group=='experiment'].gmv
st.levene(gmv_A,gmv_B)

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

4.2 gmv均值检验

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

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

5、ROI检验

5.1 ROI方差检验

#levene检验ROI是否齐方差ROI_A=test[test.group=='control'].ROIROI_B=test[test.group=='experiment'].ROI
st.levene(ROI_A,ROI_B)

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

5.2 ROI均值检验

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

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

二、城市运营分析

1、数据导入

#导入该城市运营相关数据
city = pd.read_excel('/home/kesci/input/didi4010/city.xlsx')city.head()

#查看数据有无缺失值
city.info()

2、数据探索

2.1 单量最多的时间点

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

#绘制各时点订单请求柱状图
import matplotlib.pyplot as plt
req_hour.plot(kind='bar')plt.xticks(rotation=0)
plt.show()

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

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

2.2 单量最多的日期

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

#绘制订单请求数随日期变化的折线图
req_date.plot(kind='line')
plt.show()

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

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

2.3 各时段订单完成率

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

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

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

2.4 单月每日订单完成率

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()

#绘制订单完成率随日期变化的折线图
com_date.rate.plot(kind='line')
plt.show()

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

2.5 顾客等待时间

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

#绘制顾客等待时长复合柱状图eta_hour.plot(kind='bar')

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

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

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

2.6 司机在忙率

city['busy'] = city['supply hours']*city['utiliz']city.head()

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

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

2.7 订单时长

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

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

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

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

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

3、后续思考方向:

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

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

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

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

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

本文数据集下载:

https://www.kesci.com/home/dataset/5f06afec3af6a6002d0fa2ec

编辑:王菁

校对:洪舒越

滴滴的数据分析原来是这样做的!相关推荐

  1. AI一分钟 | 科大讯飞2017年度财报:营收54.45亿元,净利润4.35亿元;滴滴首谈无人驾驶战略:只做软件不造车

    2018 区块链技术及应用峰会(BTA)·中国 倒计时 1 天 2018,想要follow最火的区块链技术?你还差一场严谨纯粹的技术交流会--2018区块链技术及应用峰会(BTA)·中国将于2018年 ...

  2. 六张图,看懂前瞻性数据分析,该如何做

    有同学问:领导总让做"有前瞻性"的分析,不要说那些"大家都知道的事".可到底什么是前瞻性?有时候明明写了预计未来情况,可还是被批判为:没啥前瞻性.真不知道咋办了 ...

  3. HDFS与Hive实战 + 滴滴出行数据分析

    HDFS与Hive实战 + 滴滴出行数据分析 1.HDFS 1.1 分布式文件系统 1.2 HDFS的Shell命令行 1.3 启动Hadoop集群 1.4 大数据环境清单 2.数据仓库 2.1 数据 ...

  4. python相关性分析后怎样删除特征_震惊!数据分析还能这样做?

    原标题:震惊!数据分析还能这样做? 数据分析概述 数据分析完整工作流程 关于数据分析的大体流程这里以图形的形式展现给大家,就不做过多的讲述. 数据探索与相关性分析 这一部分是直接从数据分析工作流程中的 ...

  5. R数据分析:逐步回归的做法和原理,案例剖析

    做回归的时候经常头痛的一个问题就是变量的选择,好多人一放一大堆变量但是结果做出来都没意义,这个时候你可以试试让算法给你选择最优的自变量组合哟. 那么今天要写的就是回归时筛选变量的逐步法: The st ...

  6. 干货 | 滴滴 数据分析原来是这样做的!

    ↑ 点击上方 "凹凸数据" 关注 + 星标 ~ 每天更新,干货&福利不断   hi,我是 Rilke Yang 这是一篇我关于滴滴的数据实战,之前首发在和鲸,这次投稿到凹凸 ...

  7. python可以干什么工作-Python学完工作不好找?看看数据分析可视化都可以做什么...

    大概一年多以前,和几个小伙伴均认同一个趋势:觉得通过技术手段获取网上越来越丰富的数据,并基于这些数据做分析及可视化,必能产生有价值的结果,帮助大家改善生活.(大数据被叫烂了,所以用低调的方式来解释我们 ...

  8. python做数据分析难么_做统计学习,数据分析应该学Python还是R?

    如果你是数据分析领域的新兵,那么你一定很难抉择--在进行数据分析时,到底应该使用哪个语言,R还是Python?在网络上,也经常出现诸如"我想学习机器语言,我应该用哪个编程语言"或者 ...

  9. 每天10分钟用python学数据分析_用Python做数据分析,Numpy,Pandas,matp

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用Python做数据分析,Numpy,Pandas,matplotlib是怎么也绕不开的三个包,我最开始学习pandas是看的<利用Python进行 ...

最新文章

  1. 下载备忘:甘特图实现的代码
  2. java实验报告二_Java实验报告(实验二)
  3. SAP HUM 将HU与检验批号码解除关联关系
  4. XMLHttpRequest cannot load解决方案
  5. php纯面向过程--论坛
  6. Vue axios 上传图片
  7. mysql集群经常无法truncate_失败的mysql cluster配置-无法顺利转换已有数据
  8. java模拟刷百度排名无效_整理用于模拟百度分享的errno错误代码
  9. php5 php4,自动实现php4和php5环境的切换......
  10. matlab中“存储空间不足,无法处理此命令”
  11. python字符串数组切片性能_python – 为数组切片赋值很慢
  12. pycharmlinux报错java,Linux安装PyCharm时提示cannot start PyCharm错误怎么办?
  13. 屏幕持续升级!一加8斩获DisplayMate A+评级
  14. Tensor 和Numpy转换
  15. iview上传文件案例
  16. python生成和校验uuid
  17. 谈谈多年的创业之路和网络生涯
  18. 编译原理-LL(1)语法分析器
  19. JavaScript Canvas2D实现SpriteSheet角色动画
  20. java.sql.SQLException: sql injection violation, multi-statement not allow

热门文章

  1. LibreOffice office转pdf
  2. 本地唤醒(打开)指定QQ群
  3. Ceph pg状态总结
  4. YOLO学习01(跑通yolov5尝试)
  5. 读《别在吃苦的年纪选择安逸》
  6. 《追风筝的人》读后感2600字
  7. mui标题嵌套九宫格
  8. python标识符_python – 如何访问pywinauto中的控件标识符
  9. 数独窟(Sudoku) -- Silverlight
  10. 防火墙技术的具体应用