一、项目背景与目的

1 背景

Airbnb是一个旅行房屋租赁社区,用户可通过网络或手机应用程序发布、搜索度假房屋租赁信息并完成在线预定程序,其社区平台在191个国家、65,000个城市为旅行者们提供数以百万计的独特入住选择,被时代周刊称为“住房中的EBay”。
Airbnb在做好了产品体验、房源美感、民宿共享服务之后,这款产品和背后的业务是否存在可以改进的地方?

2 提出问题

一款产品的发展必然伴随着不断的迭代。在AARRR模型中,第一个A(用户获取)中,提高新用户获取的数量和质量是不断监测并优化的一个工作,哪些渠道的效果更好,企业就要及时调整和增加此渠道的投入,哪些渠道的效果很差,就要及时查找原因并给出解决。
另外转化漏斗分析也是数据分析环节的重要指标,可以从宏观角度了解整个产品的业务转化情况,企业针对流失率较高的漏斗环节进行改进,可以有效促进业务发展。

针对分析的目的,提出以下三个问题:

  1. airbnb的目标用户群体具有什么样的特征?
  2. airbnb当前的推广渠道有哪些是优质的、有哪些做的还不够好且需要改进?
  3. 当前的转化率和流失率在哪一个环节存在问题,或者有较大的改进空间?

二、分析维度

1 分析指标

本项目将着重从用户画像、推广渠道、转化漏斗三个方面去进行分析,并探索爱彼迎在产品和业务上还有哪些可以改进的地方。

2 细分指标

2.1 用户画像

  1. 用户性别分布;
  2. 用户年龄分布;
  3. 用户地区分布;
  4. 国人去国外预定的地区;

2.2 推广渠道

  1. 每月新增用户;
  2. 不同用户端注册量;
  3. 不同推广渠道注册量;
  4. 不同推广渠道的转化率;
  5. 不同营销内容注册量;
  6. 不同营销内容的转化率;

2.3 转化漏斗

  1. 注册用户占比;
  2. 活跃用户占比;
  3. 下单用户占比;
  4. 实际支付用户占比;
  5. 复购用户占比;

三、数据概览

1 数据来源及描述

本次项目的数据来源于Kaggle–Airbnb New User Bookings其中train_user表中为用户数据(21w * 15),sessions表中为行为数据。(104w * 6)

2 数据集含义

2.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:目的地国家

******************** 基本信息
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 213451 entries, 0 to 213450
Data columns (total 16 columns):
id                         213451 non-null object
date_account_created       213451 non-null object
timestamp_first_active     213451 non-null int64
date_first_booking         88908 non-null object
gender                     213451 non-null object
age                        125461 non-null float64
signup_method              213451 non-null object
signup_flow                213451 non-null int64
language                   213451 non-null object
affiliate_channel          213451 non-null object
affiliate_provider         213451 non-null object
first_affiliate_tracked    207386 non-null object
signup_app                 213451 non-null object
first_device_type          213451 non-null object
first_browser              213451 non-null object
country_destination        213451 non-null object
dtypes: float64(1), int64(2), object(13)
memory usage: 26.1+ MB
None
******************** 空值
id                              0
date_account_created            0
timestamp_first_active          0
date_first_booking         124543
gender                          0
age                         87990
signup_method                   0
signup_flow                     0
language                        0
affiliate_channel               0
affiliate_provider              0
first_affiliate_tracked      6065
signup_app                      0
first_device_type               0
first_browser                   0
country_destination             0
dtype: int64
******************** 重复值
False    213451
dtype: int64

2.2 sessions表

user_id:与users表中的“id”列连接
action:埋点名称
action_type:操作事件的类型
action_detail:操作事件的描述
device_type:此次会话所使用的设备

******************** 基本信息
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10567737 entries, 0 to 10567736
Data columns (total 6 columns):
user_id          object
action           object
action_type      object
action_detail    object
device_type      object
secs_elapsed     float64
dtypes: float64(1), object(5)
memory usage: 483.8+ MB
None
******************** 空值
user_id            34496
action             79626
action_type      1126204
action_detail    1126204
device_type            0
secs_elapsed      136031
dtype: int64
******************** 重复值
False    10315201
True       252536
dtype: int64

3 数据处理

3.1 缺失值及处理

  1. date_first_booking(首次预定时间)数据如果缺失,在业务上可以理解为此用户为“未预定用户”,也就是没有下单的用户。
  2. 性别、年龄由于客户端中这部分信息选填,空值为用户未填写。
    因为确实的数据并不是小数,如果删除缺失数据会导致数据大量减少,从而影响分析结果,在针对各分析模块采用排除的方法。

3.2 异常值处理

#年龄
bin2000_10 = np.arange(0,2000,10)
df_cut_10 = pd.cut(df.age,bin2000_10).value_counts()
df_cut_10.head()
(30, 40]        44212
(20, 30]        41633
(40, 50]        18831
(50, 60]         9868
(60, 70]         4656
(10, 20]         2412
(100, 110]       1544
(70, 80]         1021
(80, 90]          228
(90, 100]         198
(0, 10]            57
(110, 120]         20
(1930, 1940]       11
(1920, 1930]        9
(1940, 1950]        6
(1950, 1960]        2
(130, 140]          1
(140, 150]          1
(560, 570]          0
(750, 760]          0

可以看到年龄出现了很多异常值,推测注册年龄是可以随意填写的,所以会出现这些异常数据。处理时仅选取10-100岁的数据。

四、各维度分析

数据可视化使用pyecharts,在此,对于常用的可视化脚本就不在贴出了,如果需要可以参考博主之前的几篇文章。

1 用户画像

1.1 年龄分布

df_age = df[(df.age>10)&(df.age<100)].age.value_counts()
df_age_sort = df_age.sort_index()
df_age_sort
bar.render_notebook()


airbnb的用户主要为“中青年群体”,其中用户数量最多的是29岁~33岁,30岁之后随着年龄的增大,用户逐渐减少。

1.2 性别分布

print(df.gender.value_counts())
df_sax = df[(df.gender=='FEMALE')|(df.gender=='MALE')].gender.value_counts()
-unknown-    95688
FEMALE       63041
MALE         54440
OTHER          282
Name: gender, dtype: int64


男性用户较女性用户仅多出7%左右,差别不大。

1.3 地区分布

地区分布使用的是数据中的语言来进行判断的,en代表英语地区,zh为汉语地区等

'''[{'value': 0.9666, 'name': 'en'},{'value': 0.0076, 'name': 'zh'}]'''
from pyecharts.charts import TreeMapdf.language.value_counts()
key = df.language.value_counts().index.tolist()
values = df.language.value_counts().values.tolist()
dict_language = dict(zip(key,values))
aa = []
sum_val = df.language.value_counts().sum()
for key,values in dict_language.items():a = {"value":round(values/sum_val,4),"name":key}aa.append(a)def pie_rosetype():c = (TreeMap(init_opts=opts.InitOpts(width="1000px", height="500px")).add(series_name="option",data=aa,
#             visual_min=300,leaf_depth=1,#标签居中为 position = "inside"label_opts=opts.LabelOpts(position="inside"),).set_global_opts(legend_opts=opts.LegendOpts(is_show=False),title_opts=opts.TitleOpts(title="语种分布", subtitle="2020/06", pos_left="leafDepth"),))return c
pie_rosetype().render_notebook()


有超过90%的用户是英语国家,airbnb是2013年开始进入中国市场的(此数据集止于2014年),所以此时中文用户数量虽然排名第二,但是占比却非常小。

1.4 国人常去的国家

df_chn = df[(df.language=='zh')&(df.country_destination!='NDF')]
df_chn.country_destination.value_counts()


中国用户去国外预定,占比最多的是美国。其余国家占比很小,总和不到20%。

2 流量渠道

2.1 每月新增用户

df['date_account_created'] = pd.to_datetime(df['date_account_created'], format='%Y-%m-%d')
df['month'] = df['date_account_created'].dt.strftime('%Y-%m')
df_month = df['month'].value_counts().sort_index()


airbnb的用户增长曲线健康,前期(2011年之前)平缓,2012年2月之后开始快速增长,2012年之后的增长速度很快。此产品新用户的增加存在季节性规律:每年的7~10月,产品都会迎来用户增长的高峰,推测为夏季(北半球)是旅行的旺季,而短租产品本身就是旅行消费的一种。

2.2 不同用户端的注册量

df_device = df[df.first_device_type!="Other/Unknown"]
df_device.first_device_type.value_counts()


此数据为2014年之前的数据,当时智能手机还没有像现在一样普及,用户的注册设备PC大于移动设备。苹果设备数量大于其他设备数量,其次是windows设备。

2.3 不同推广渠道转化

df["channel-provider"] = df["affiliate_channel"].str.cat(df["affiliate_provider"],sep ="-")
#把渠道和推广方式用“-”连接起来。
visit = df.groupby(["channel-provider"])["id"].count()
#访问统计
booking = df.groupby(["channel-provider"])["date_first_booking"].count()
#注册统计
rate = booking/visit
visit= visit.sort_values(ascending=False).reset_index()
booking=booking.sort_values(ascending=False).reset_index()
rate=rate.sort_values(ascending=False).reset_index()
vbr = pd.merge(visit,rate,on='channel-provider',how='left')
vbr = pd.merge(vbr,booking,on='channel-provider',how='left')
vbr.columns = ['channel-provider','visit','rate','booking']
vbr = vbr.sort_values(by='visit',ascending=False)[:10]


airbnb的整体渠道转化率表现很好,多数渠道的转化率都在30%以上。渠道注册量符合二八定律,及前7个渠道(总共有38个渠道推广)的注册量已经占据了产品总的渠道来源的90%以上。
content_google的转化率异常,明显低于转化率的均值。api_other(其他产品的API对接)渠道的转化率虽然大于30%,单数相较于其他渠道,转化率偏低。
seo_google的注册量和转化率表现都很好,sem_brand_google的注册量可转化率表现优异。

2.4 各用户来源转化

visit = df.groupby(["first_affiliate_tracked"])["id"].count()
#注册量
booking = df.groupby(["first_affiliate_tracked"])["date_first_booking"].count()visit = visit.to_frame(name='count(visit)')
booking = booking.to_frame(name='count(booking)')
df_vb = pd.merge(visit,booking,on='first_affiliate_tracked')
df_vb['Proportion']=df_vb["count(booking)"]/df_vb["count(visit)"]
df_vb = df_vb.sort_values('count(visit)',ascending=False)


从统计到的数据来看,linked注册量位居第一。转化率方面,linked和omg两个营销内容的的转化率好,在43%以上。local ops的转化率非常低。

2.5 用户设备类别占比

gp_device_browser = df.groupby(['first_device_type','first_browser'])['id'].count()
gp_device_browser=gp_device_browser.sort_values(ascending=False).reset_index()
# gp_device_browser
gp_device_browser["device_browser"] = df["first_device_type"].str.cat(df["first_browser"],sep ="_")df_device_browser=gp_device_browser[['device_browser','id']][:11]


用户通过chrome浏览器访问的次数最多

3 转化漏斗分析

3.1 转化漏斗

users_sum = df_user.groupby(["user_id"])["user_id"].count()
all_user = users_sum.count()
active_user = users_sum[users_sum>=10].count()
df_merge = pd.merge(df,df_user,left_on="id",right_on="user_id")
signup_user = df_merge.groupby(["user_id"])["user_id"].count().count()
pay_user=df_user[df_user['action_detail']=='payment_instruments'].groupby('user_id').count().shape[0]
pays_user = df_user[df_user['action_detail']=='payment_instruments'].groupby('user_id')['user_id'].count()
pays_user = pays_user[pays_user>=2].count()


注册用户到下单用户是airbnb转化漏斗中流失率最高的一个环节。活跃和复购环节表现的好,其中有60%的下单用户复购,说明airbnb的产品和服务做的非常好。下单用户中有大约13%的用户没有最终支付,需要进一步排查原因。

五、结论

1 用户画像

  1. 用户性别中,男性用户多于女性用户,但是差别不大(7.3%的差距量)
  2. 用户年龄以中青年为主,其中用户数量最多的是29岁~33岁,30岁之后随着年龄的增大,用户逐渐减少
  3. 用户分布地区最多的为欧美地区,其次是中国,但欧美占比达到了90%以上。
  4. 中国用户预订的最多的其他国家是美国,占比高达90%以上。
  5. 根据年龄分布特征,建议SEO或者付费广告投放时,投放对象细化至年龄在29~39岁的男性。

2 流量渠道

  1. 前期(2011年之前)平缓,之后(2012年1月之后)开始快速增长,并且速度很快。
  2. 7~10月是旅行旺季、此时也是airbnb用户增长的旺季。
  3. 苹果设备用户居多。
  4. drict(直接应用市场下载注册)的注册量最多,占总注册量的64.38%。
  5. 注册量排名7的渠道,占据了产品全部渠道注册来源数量的90%以上。
  6. 主要渠道中,content_google的转化率异常,明显低于转化率的均值。
  7. api_other(其他产品的API对接)渠道的转化率也比较低。
  8. content(内容推广)这一种推广方式下各渠道的转化率都很低,其中content_gsp的转化率只有8.2%。
  9. sem中sem-non-brand_bing、sem-non-brand_vast两种SEM渠道的转化率都偏低

3 转化漏斗

  1. airbnb转化漏斗中流失率最高的一个环节是“用户下单”,仅有14%的注册用户下单。
  2. 下单用户中有大约13%的用户最终没有支付成功。
  3. 注册率有待提高。
  4. 活跃和复购环节表现的好,说明airbnb的产品和服务做的非常好。

4 建议

  1. 7~10月是业务的旺季,建议运营部门在每年的7~10月加大活动营销的力度,同时加大渠道广告的投放力度。
  2. 在主要渠道(注册量在前7名的渠道)中content_google转化率非常低(只有15%),建议运营部门计算此渠道的*ROI和ARPU(每客户平均收入),如果ROI过低,建议停止此渠道的投放。
  3. SEO推广下各渠道的拉新和转化都好,SEO作为一种较低成本的获客方式(主要为人力成本),建议企业管理层日常要更加支持SEO相关的资源投入,甚至考虑扩大SEO的团队。

爱彼迎产品分析(Python)相关推荐

  1. Airbnb(爱彼迎)产品分析报告

    Airbnb(爱彼迎)产品分析报告 一.Airbnb背景 Airbnb成立于2008年,一家联系旅游人士和家有空房出租的房主的服务型网站,它可以为用户提供多样的住宿信息.用户可通过网络或手机应用程序发 ...

  2. python requests+json爬取ajax加载 爱彼迎深圳所有房源

    目的: 爬取爱彼迎深圳所有房源的房主,价格,房源介绍等信息 步骤如下: step1:获取房源页面url 登陆爱彼迎网站,搜索深圳房源 https://zh.airbnb.com/s/homes?ref ...

  3. airbnb爱彼迎python爬虫与简单分析

    目的 作为一个挂了几套公寓在airbnb上的小房东,又作为一个喜欢分析数据的小孩子,当学习爬虫的过程中当然要选择爱彼迎这个网站来试手:在网上看到一个大神po的一长串的代码,用了之后的确可以马上爬取,但 ...

  4. 五十三、爱彼迎数据集分析建模

    爱彼迎数据集分析建模为本专栏的Python数据分析案例. 因为文件比较大,所以保存了百度云 链接:https://pan.baidu.com/s/1geUgsLejvpTKgBmcSMSIdQ 提取码 ...

  5. 罗永浩回应被叫行业冥灯:完全不能同意;联想一员工侵占公司工时费近1000万;爱彼迎CEO:办公室时代已过去 | EA周报...

    EA周报 2022年5月13日 每个星期7分钟,元宝带你喝一杯IT人的浓缩咖啡,了解天下事.掌握IT核心技术. 周报看点 1.联想一员工内外勾结,侵占公司工时费近1000万 2.钉钉被曝裁员30%,相 ...

  6. 与谷歌、Facebook 抢夺 AI 人才和公司资源,爱彼迎加入 AI 战场

    爱彼迎是一家C2C的旅游住宿共享平台,但是它最近也开始与Facebook这样的科技公司抢夺AI领域的人才了.爱彼迎作为旅游住宿平台的业务不断扩大,自然需要再技术层面,尤其是AI技术层面上"招 ...

  7. 爱彼迎数据采集与预处理-图片色彩分析

    1 数据收集 爱彼迎的数据主要通过数据集和爬虫采集. 方法一:登录Inside Airbnb: Get the Data网站,下载需要的城市数据. 注:这个网址更新速度与周期不定,且更新后,上次的数据 ...

  8. Airbnb(爱彼迎)用户数据分析——tableau可视化和MySQL分析

    本文利用Airbnb用户的注册.订单和日志行为等数据,从用户画像.营销渠道转化率.订单漏斗分析三方面进行分析.我们需要考虑以下3个问题: 爱彼迎的目标用户是什么样的人群?有什么特点? 这些人群接受信息 ...

  9. 爱彼迎数据分析报告(修改)

    效果展示 (修改:使用pyecharts重新画图,并生成html进行展示) 代码链接:https://github.com/guotianyi960531/Airbnb- 1.简介 1.1 原始数据来 ...

最新文章

  1. 《3D数学基础》1.8 混合积
  2. 怎么同步github上的原项目和fork
  3. Spring使用总结
  4. ACM入门之【高精度】
  5. windows mklink创建软连接命令使用示例
  6. maven中snapshot快照库与maven-metadata.xml
  7. jpa加密_使用JPA侦听器的数据库加密
  8. Postman接口压力测试
  9. 2016HUAS暑假集训训练题 F - 简单计算器
  10. nyoj244 16进制的简单运算
  11. uni-app 基于 Promise 的 request 请求封装
  12. 数据结构期末考试【含答案】
  13. aforge java_java(一些java API)或C#(emgucv,dshownet,Aforge.NET)中的实时对象跟踪
  14. 计算机重装操作系统的软件,重装系统后的装机必备软件电脑推荐
  15. 材料科学需要用计算机吗,计算机在材料科学中的运用分析
  16. Kubernetes核心概念总结
  17. 相对开音节java_相对开音节是什么
  18. [Java基础]-- Jsp 介绍
  19. 中国电子商务网经的盈利策略
  20. List和IList的区别

热门文章

  1. mysql存储过程与函数、触发器、游标、变量等知识点详解
  2. 用Qt编写简单的浏览器 (一)
  3. iphone x php兼容吗,iPhone X/8/8P 都支持什么网络?别买错了
  4. (swing读书笔记)JTable简介(中)
  5. java tika 解析pdf_Tika解析word文件
  6. JavaScript在HTML中使用
  7. 别告诉我你连线程池都不会用~ 一文搞懂线程池
  8. 阿里巴巴前端工程师一面二面三面终面面经总结
  9. WEB阶段3:Response响应组成常见状态码ServletContexturl编码文件下载案例
  10. IDEA下,Ctrl+Alt+方向键快捷键冲突,导致屏幕翻转