一、分析背景与目的
1.1、分析背景
Airbnb成立于2008年,短短9年时间成为了短租民宿行业的巨头,并且强烈的冲击着传统酒店行业的格局。目前Airbnb作为一款社区平台类产品,其业务遍布了191个国家,并且经常出现在商业分析的优秀案例中。Airbnb在做好了产品体验、房源美感、民宿共享服务之后,这款产品和背后的业务是否存在可以改进的地方?
1.2、提出分析问题
针对分析的目的,提出以下三个问题:
1.airbnb的目标用户群体具有什么样的特征?
2.当前的转化率和流失率中哪里哪一个环节存在问题,或者有较大的改进空间?
二、分析维度
2.1、根据问题,提出两个分析维度:
1、用户画像分析
-用户性别的分布特征;
-用户年龄的分布特征;
-用户地区的分布分布;
-中国地区去国外预定的地区占比;
2、转化漏斗分析
-注册用户占比
-活跃用户(非僵尸用户)占比
-下单用户占比
-实际支付用户占比
-复购用户占比
三、数据清洗3.1、数据集描述数据集名称:Airbnb顾客预订数据数据集来源:kaggle Airbnb产品数据集 数据集简介:此数据集是kaggle上的一个竞赛项目,主要用来制作目的地信息的预测模型。此数据聚集包含两张数据表,其中train_users_2表中为用户数据,sessions表中为行为数据。数据集量:21w * 15(train_users_2)、104w * 6(sessions)
3.1、列名称理解原数据表的字段的列名非常规范,无需对列名称进行重命名,数据分析之前需要理解每个列名称的含义。
数据表一:数据表名称:train_users_2
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_2数据表中不存在重复值。
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异常值处理
age(年龄)异常值处理:
age(年龄)的异常数据非常多;0~150之间的数值都有,并且包含了2014、2015等数值。推测这些"脏数据"产生的原因是用户在客户端随意填写造成。
3.5数据清洗中使用的SQL
# 检查数据中是否包含重复值
SELECT id, COUNT(id) AS count_id
FROM mysql.train_users_2
GROUP BY id
HAVING count_id > 1;
#通过以下SQL对每一列进行查询,通过替换where之后的条件,查询每一列包含的空值数量。
SELECT date_first_booking<