Airbnb 爱彼迎产品数据分析
一、分析背景与目的
1.1、分析背景
Airbnb成立于2008年,短短9年时间成为了短租民宿行业的巨头,并且强烈的冲击着传统酒店行业的格局。
目前Airbnb作为一款社区平台类产品,其业务遍布了191个国家,并且经常出现在商业分析的优秀案例中。Airbnb在做好了产品体验、房源美感、民宿共享服务之后,这款产品和背后的业务是否存在可以改进的地方?
1.2、提出分析问题
一款产品的发展必然伴随着不断的迭代。在AARRRR模型中,第一个A(用户获取)中,提高新用户获取的数量和质量是不断监测并优化的一个工作,哪些渠道的效果更好,企业就要及时调整和增加此渠道的投入,哪些渠道的效果很差,就要及时查找原因并给出解决。
另外转化漏斗分析也是数据分析环节的重要指标,可以从宏观角度了解整个产品的业务转化情况,企业针对流失率较高的漏斗环节进行改进,可以有效促进业务发展。
针对分析的目的,提出以下三个问题:
二、分析维度
2.1、根据问题设立分析维度与分析指标
根据问题,提出来三个分析维度:
将着重从airbnb的用户画像、推广渠道分析、转化漏斗分析三个方面进行分析,去探索和分析airbnb在产品和业务上有哪些可以改进的地方,并给出实际性的建议,以提升和改进airbnb的渠道推广策略和产品设计。
1、用户画像分析
- 用户性别的分布特征;
- 用户年龄的分布特征;
- 用户地区的分布分布;
- 中国地区去国外预定的地区占比;
2、推广渠道分析
- 每月新增用户
- 不同用户端的注册量
- 不同推广渠道的注册量
- 不同营销内容的注册量
- 不同推广渠道的转化率
- 不同营销内容的转化率
3、转化漏斗分析
- 注册用户占比
- 活跃用户(非僵尸用户)占比
- 下单用户占比
- 实际支付用户占比
- 复购用户占比
三、数据清洗
3.1、数据集描述
数据集名称:Airbnb顾客预订数据
数据集来源:https://www.kaggle.com/c/airbnb-recruiting-new-user-bookings/data
数据集简介:此数据集是kaggle上的一个竞赛项目,主要用来制作目的地信息的预测模型。此数据聚集包含两张数据表,其中train_user表中为用户数据,sessions表中为行为数据。
数据集量:21w * 15(train_user)、104w * 6(sessions)
3.1、列名称理解
原数据表的字段的列名非常规范,无需对列名称进行重命名,数据分析之前需要理解每个列名称的含义。
数据表一:数据表名称:train_users
id:用户ID
date_account_created:帐户创建日期
date_first_booking:首次预订的日期
gender:性别
age:年龄
signup_method:注册方式
signup_flow:用户注册的页面
language:语言偏好
affiliate_channel:营销方式
affiliate_provider:营销来源,例如google,craigslist,其他
first_affiliate_tracked:在注册之前,用户与之交互的第一个营销广告是什么
signup_app:注册来源
first_device_type:注册时设备的类型
first_browser:注册时使用的浏览器名称
country_destination:目的地国家
数据表二:数据表名称:sessions
user_id:与users表中的“id”列连接
action:埋点名称
action_type:操作事件的类型
action_detail:操作事件的描述
device_type:此次会话所使用的设备
3.2、重复值的处理
- train_users为用户表中主键,所以每个用户只生成一条记录,所以如果train_users中id存在重复值,则需要处理。
- sessions 为用户会话记录表,存在一个用户多条记录
结论:只需要排查train_users中是否存在重复值。
执行SQL后得出:count_id = 0。说明train_users数据表中不存在重复值。
3.3、缺失值处理
数据缺失数量较多,以下为存在缺失值的列:
- date_first_booking(首次预定时间)存在缺失值数量:124544个。
- gender(性别)存在缺失值数量:95688个。
- age(年龄)存在缺失值数量:87991个。
- first_affiliate_tracked(用户通过那个营销广告注册)存在缺失值数量:6065个。
- first_browser(注册时浏览器)存在缺失值数量:27266个。
- action_type(埋点的操作类型)存在缺失值数量:1126204个。
- action_detail(用户操作行为的描述)存在缺失值数量:1126204个。
缺失原因推测及处理
- date_first_booking(首次预定时间)数据如果缺失,在业务上可以理解为此用户为“未预定用户”,也就是没有下单的用户。
- 性别、年龄由于客户端中这部分信息选填,空值为用户未填写。
- 其他四个数据是由于前端统计时数据没有统计到。
处理:实际分析中需要在where条件排除掉空数据,再进行分析。
3.4、异常值处理
以下为异常值的处理说明。
date_account_created异常值处理:
date_account_created中最小值为‘0000-00-00 00:00:00’;因为此异常数据只有1条,所以删除此条数据。
age(年龄)异常值处理:
age(年龄)的异常数据非常多;0~150之间的数值都有,并且包含了2014、2015等数值。推测这些”脏数据”产生的原因是用户在客户端随意填写造成。
3.5、数据清洗中使用的SQL
#检查数据中是否包含重复值 SELECT id, COUNT(id) AS count_id FROM data.train_users GROUP BY id HAVING count_id > 1; #通过以下SQL对每一列进行查询,通过替换where之后的条件,查询每一列包含的空值数量。 SELECT date_first_booking, COUNT(date_first_booking) FROM data.train_users WHERE date_first_booking = '0000-00-00 00:00:00'; #通过查看数据的极值(极大值、极小值)是否符合实际情况,来判断数据中是否存在异常值。 SELECT min(age),max(age) FROM data.train_users; #异常值处理:对于年龄不在7~75区间的数据删除(设置为0-空值) SET sql_safe_updates = 1; UPDATE data.train_users SET age = 0 WHERE id NOT IN ( SELECT id FROM ( SELECT id FROM data.train_users WHERE age <= 75 AND age >= 7 ) a );