爱彼迎产品分析(Python)

爱彼迎产品分析(Python)_第1张图片

一、项目背景与目的

1 背景

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

2 提出问题

一款产品的发展必然伴随着不断的迭代。在AARRRR模型中,第一个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()

爱彼迎产品分析(Python)_第2张图片
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

爱彼迎产品分析(Python)_第3张图片
男性用户较女性用户仅多出7%左右,差别不大。

1.3 地区分布

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

'''[{'value': 0.9666, 'name': 'en'},
    {'value': 0.0076, 'name': 'zh'}]'''
from pyecharts.charts import TreeMap

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

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

1.4 国人常去的国家

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

爱彼迎产品分析(Python)_第5张图片
中国用户去国外预定,占比最多的是美国。其余国家占比很小,总和不到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()

爱彼迎产品分析(Python)_第6张图片
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()

爱彼迎产品分析(Python)_第7张图片
此数据为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]

爱彼迎产品分析(Python)_第8张图片
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)

爱彼迎产品分析(Python)_第9张图片
从统计到的数据来看,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]

爱彼迎产品分析(Python)_第10张图片
用户通过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()

爱彼迎产品分析(Python)_第11张图片
注册用户到下单用户是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的团队。

你可能感兴趣的:(练习)