精华内容
下载资源
问答
  • Airbnb 数据分析

    2020-11-18 21:31:16
    一、背景 Airbnb(爱彼迎)是一个旅游房屋租赁平台,被称为是住房中的ebay或者...二、分析目的 提出问题: 1、airbnb的用户具有怎样的特征 2、Airbnb推广渠道的差别,占比和转化率的不同,是否有调整空间 3、...

    一、背景

      Airbnb(爱彼迎)是一个旅游房屋租赁平台,被称为是住房中的ebay或者说是闲鱼。

      它整体的商业逻辑其实共享经济的一部分,同样是将个人闲置的资源进行出租,提高闲置资源的利用率,达到利益最大化。

      目前,airbnb已经在全球191个国家,65000多个城市中提供住房服务,是一个世界级的品牌。但是是否还有改善的空间呢。

    二、分析目的

     

    提出问题:

    1、  airbnb的用户具有怎样的特征

    2、  Airbnb推广渠道的差别,占比和转化率的不同,是否有调整空间

    3、  转化率该如何得到改善,减少用户的流失。

     

    三、数据集概览

      数据来源地址: https://link.zhihu.com/?target=https%3A//www.kaggle.com/

    c/airbnb-recruiting-new-user-bookings/data

     

      数据集名称: airbnb-recruiting-new-user-bookings(airbnb新用户预订数据)

     

      数据集大小:session.csv(14W*6),train_user.csv(21W*16)

     

    字段理解:

    train_user_2

    id

    id编号

    date_account_created

    账号创建日期

    timestamp_first_active

    逗留时间

    date_first_booking

    首次预订时间

    gender

    性别

    age

    年龄

    signup_method

    注册方式

    signup_flow

    用户注册页面

    language

    语言偏好

    affiliate_channel

    营销方式

    affiliate_provider

    营销来源

    first_affiliate_tracked

    注册之前,用户交互的第一个营销广告

    signup_app

    注册APP来源

    first_device_type

    设备类型

    first_browser

    浏览器类型

    country_destination

    目标国家

    seesions

    user_id

    用户id

    action

    用户行为埋点

    action_type

    用户行为类型

    action_detail

    用户行为描述

    device_type

    此次对话的设备类型

     

    四、数据清洗

    缺失值

    Train_user表

    1、首次预订时间(date_first_booking)缺失值数量:124543

    2、年龄(age)缺失值数量:87990

    3、注册前用户交互的第一个营销广告(first_affiliate_tracked)缺失值数量:6065

    Session表:

    1、用户id(user_id)缺失值数量:3563

    2、用户行为埋点(action)缺失值数量:10834

    3、用户行为类型(action_type)缺失值数量:192193

    4、用户行为描述(action_detail)缺失值数量:192193

    MySQL的缺失值统计查询程序:

    SELECT

    SUM(case when id IS NULL then 1 ELSE 0 ENDAS "id",

    SUM(case when date_account_created IS NULL then 1 ELSE 0 ENDAS"date_account_created",

    SUM(case when timestamp_first_active IS NULL then 1 ELSE 0 ENDAS"timestamp_first_active",

    SUM(case when date_first_booking IS NULL then 1 ELSE 0 ENDAS "date_first_bookingd",

    SUM(case when gender IS NULL then 1 ELSE 0 ENDAS "gender",

    SUM(case when age IS NULL then 1 ELSE 0 ENDAS "age",

    SUM(case when signup_method IS NULL then 1 ELSE 0 ENDAS "signup_method",

    SUM(case when signup_flow IS NULL then 1 ELSE 0 ENDAS "signup_flow",

    SUM(case when `language` IS NULL then 1 ELSE 0 ENDAS "language",

    SUM(case when affiliate_channel IS NULL then 1 ELSE 0 ENDAS "affiliate_channel",

    SUM(case when affiliate_provider IS NULL then 1 ELSE 0 ENDAS "affiliate_provider",

    SUM(case when first_affiliate_tracked IS NULL then 1 ELSE 0 ENDAS"first_affiliate_tracked",

    SUM(case when signup_app IS NULL then 1 ELSE 0 ENDAS "signup_app",

    SUM(case when first_device_type IS NULL then 1 ELSE 0 ENDAS "first_device_type",

    SUM(case when first_browser IS NULL then 1 ELSE 0 ENDAS "first_browser",

    SUM(case when country_destination IS NULL then 1 ELSE 0 ENDAS "country_destination"

    FROM train

    SELECT

    SUM(case when user_id="" then 1 ELSE 0 ENDAS "user_id",

    SUM(case when `action`="" then 1 ELSE 0 ENDAS "action",

    SUM(case when action_type="" then 1 ELSE 0 ENDAS "action_type",

    SUM(case when action_detail="" then 1 ELSE 0 ENDAS "action_detail",

    SUM(case when device_type="" then 1 ELSE 0 ENDAS "device_type",

    SUM(case when secs_elapsed="" then 1 ELSE 0 ENDAS "secs_elapsed"

    FROM session

     

    处理:

    1、 年龄的缺失值填充为平均年龄

    2、 删除Session表中的用户id(user_id)缺失值所在行

     

    异常值

    1、年龄(age)有70273条记录年龄大于80小于 10岁

    2、有26条账号创建日期(date_account_created)大于首次预订时间(date_first_booking)的记录

     

    处理:

    1、 将70273条年龄异常值更改为年龄平均值37岁

    2、删除26条记录账号创建日期(date_account_created)大于首次预订时间(date_first_booking)的记录

     

    重复值

    没有重复值

    四、用户画像

    1、性别分布

     

    从图中可以看出,女性用户占比53.17%,男性用户占比46.83%,两者相差不明显。

    2、 年龄占比

     

    可以看出,用户大多集中在25到39岁之间,但分布情况并不极端,在更高的年龄上呈现一个比较平缓的分布曲线,20到69岁之间的人群都是比较显著存在的。

     

    3、 终端分析

    在PC端,mac系列终端的用户和window终端的用户都比较多,mac的用户相对多一些;在手机端方面,苹果移动终端的用户显著比安卓移动终端的用户更多。

    4、浏览器分布

    在浏览器用户占比方面,Chrome、Safari、Firefox、IE、Mobile Safari这五种浏览器占到的90%以上。

    5、目的地分布

    从图上可以看出,airbnb用户的目的地国家大多选择美国,然后是欧洲和北美其他国家,极少选择非西方世界的发展中国家。

    五、推广渠道分析

    1、  渠道分析

    从图中可以看出,direct(直接Airbnb app注册)渠道的注册量是超过半数的,绝对领先。前5个渠道的注册量占整体注册量的90%以上。但是,这部分分析是分析各渠道的数据,所以在接下来的分析中将提出direct渠道。

    2、渠道质量分析

    从渠道的转化率柱状图中可以看出,airbnb整体的转化率都比较高。在0.38左右,转化率排名前3的渠道是:sem-non-brand-dumn、sem-brand-baidu、sem-brand-other  都是平拍竞价注册。

     

    3、渠道结构分析

    从图看出,活跃率较高的前3个渠道分别是:sem-non-brand-yandex、sem_brand-naver、sem-brand-yandex ,也都是平拍竞价的注册方式。

     

    4、渠道趋势分析--新增注册用户数

    从趋势图中可以看出,新增的用户数在2010年第一季度到2012年第一季度之间都是比较平缓的上升,到了2012年第二季度开始,新增用户的增长率就提高了不少,强势抬升。而且且可以看出,在每年的第四季度,都会迎来一次小低谷,预计是冬季是旅游淡季的缘由。

     

    5、渠道趋势分析--转化率

    相对于新增用户的高歌猛进,用户转化率的趋势却随着时间逐渐向下波动,尤其是2011年7到9月份之间,有一段比较剧烈的转化率的下坠。一方面可能受营销的影响:新增用户增多,但是刚需客户相对增长的较少;一方面可能受竞争对手的影响,夺走了一部分的优质客源。

    6、渠道对比分析

    从图中可以看出,sem-brand-google的增长是最高的,而api-other这个渠道却在2014年第一季度出现的滑坡。

    六、用户行为转化率

    MySQL的各种类用户数统计查询程序:

    #总访问数

    SELECT COUNT(DISTINCT user_id) AS 访问用户 FROM session

    UNION

    #注册用户

    SELECT COUNT(*) AS 注册用户 FROM train_user t1

    INNER JOIN(SELECT user_id FROM session GROUP BY user_id) t2 ON t1.id=t2.user_id

    UNION

    #总预定用户

    select COUNT(t3.user_id) AS 预定用户 FROM

    (SELECT user_id FROM session where action_detail="reservations" GROUP BY user_id)t3

    UNION

    #总支付用户

    select COUNT(t4.user_id) FROM

    (SELECT user_id FROM session where action_detail="payment_instruments" GROUP BYuser_id)t4

    UNION

    #总复购客户

    select COUNT(t5.user_id) FROM

    (SELECT user_id FROM session where action_detail="reservations" GROUP BY user_idHAVING

    COUNT(user_id)>=2)t5

     

    从图中可以看出,用户的整体转化率只有1.7%。在注册用户到预定用户的环节转化率最低,只有10.25%。访问到注册次之,也只有31.73%,用户流失严重。复购环节最为良好,环节转化率达到了81.07%。

    总结

    1、女性用户占比53.17%,男性用户占比46.83%

    2、用户大多集中在25到39岁之间,但分布情况并不极端,在更高的年龄上呈现一个比较平缓的分布曲线,20到69岁之间的人群都是比较显著存在的。

    3、在PC端,mac系列终端的用户和window终端的用户都比较多,mac的用户相对多一些;在手机端方面,苹果移动终端的用户显著比安卓移动终端的用户更多。

    4

    、在浏览器用户占比方面,Chrome、Safari、Firefox、IE、Mobile Safari这五种浏览器占到的90%以上

    5、从图上可以看出,airbnb用户的目的地国家大多选择美国,然后是欧洲和北美其他国家,极少选择非西方世界的发展中国家。

    6、direct(直接Airbnb app注册)渠道的注册量是超过半数的,绝对领先。前5个渠道的注册量占整体注册量的90%以上。

    7、从渠道的转化率柱状图中可以看出,airbnb整体的转化率都比较高。在0.38左右,转化率排名前3的渠道是:sem-non-brand-dumn、sem-brand-baidu、sem-brand-other  都是平拍竞价注册。

    8、从图看出,活跃率较高的前3个渠道分别是:sem-non-brand-yandex、sem_brand-naver、sem-brand-yandex 。也都是平拍竞价的注册方式

    9、从图中可以看出,用户的整体转化率只有1.7%。在注册用户到预定用户的环节转化率最低,只有10.25%。访问到注册次之,也只有31.73%,用户流失严重。复购环节最为良好,环节转化率达到了81.07%。

     

    建议

    1、加大女性细分市场的投入,给予更合理的营销预算。65-69岁之间的转化率与投入量不匹配,应加大这部分年龄市场的投入。

    2、第三季度通常为旺季,第四季度为淡季,一二季度则平平,要按照客户的淡旺季的规律合理分配渠道的分配预算。

    3、转化率前十的渠道 吗,主要都是sem的渠道转化率比较高,需要加大投入。而content-google,content-other这些渠道的转化率都很低,需要鉴别是否与该渠道的用途目的相匹配,只是吸引新客户还是为了转化客户。从而进行预算的合理安排。

    4、注册用户到预定用户的环节流失率最高,可能是产品的介绍没有切中用户的痛点,需要进一步分析寻求产品符合客户的需求点,改变产品策略。

     

     

     

    展开全文
  • airbnb 数据分析报告

    2021-07-19 21:08:17
    airbnb数据分析报告 数据集来源:https://www.kaggle.com/c/airbnb-recruiting-new-user-bookings/data 一、airbnb背景与分析 1.1 airbnb背景介绍 Airbnb(AirBed and Breakfast),爱彼迎,是一家联系旅游人士和家有...

    airbnb数据分析报告

    数据集来源:https://www.kaggle.com/c/airbnb-recruiting-new-user-bookings/data

    一、airbnb背景与分析

    1.1 airbnb背景介绍

    Airbnb(AirBed and Breakfast),爱彼迎,是一家联系旅游人士和家有空房出租房主的服务性网站,它可以为用户提供多样的住宿信息.Airbnb成立于2008年8月,总部在美国加州旧金山市,airbnb是一个旅行房屋租赁社区,用户可以通过网络或手机应用程序发布、搜索度假房屋租赁信息并完成在线预定程序。

    1.2 提出分析问题

    听起来爱彼迎是对酒店业务的颠覆,能将空闲的资源利用起来,但是人们对于这种资源利用是否赞同并愿意参与,在这个人与人之间逐渐缺乏信任的时代,如何让两个陌生人完成配对或者让两个群体建立信任关系,是推进爱彼迎产品的关键,对应到用户周期模型AARRR就是第一个A(用户获取Acquisition),提高新用户获取的数量和质量是不断监测并优化的工作,哪些渠道获取用户的效果更好,企业就要及时调整和增加此渠道的投入,对于较差的渠道方案,就要查找原因并改正解决。
    另外转化漏斗分析也是数据分析环节的重要指标,可以从宏观角度了解整个产品业务转换情况,企业针对流失率较高的漏斗环节进行改进,可以有效促进业务发展。
    通过分析的目的,提出以下三个问题:
    1.airbnb的目标用户群体具有什么样的特征?
    2.air当前的推广渠道有哪些是优质的,有哪些是做的不够好的且需要改进的?
    3.当前转化率和流失率中哪里哪一个环节存在问题,或者有较大的改进空间?

    二、分析维度

    2.1 根据问题设立分析思维和分析指标

    数据分析指标: 用户画像分析、推广渠道分析、转化漏斗分析

    1、用户画像分析

    什么是用户画像?简单地说就是了解用户,比如三大电商品牌:淘宝、京东、拼多多他们最主要的用户群体是不一样的,他们的年龄、性别、城市、收入、购物类型等等都是不一样的,那么怎么针对这些不同用户去营销产品生产产品?一句经典的话说:你要生产能卖得出去的产品,而不是卖能生产的产品,只有了解了用户需求,才能有的放矢。
    在真正的工作中, 用户画像分析是一个重要的数据分析手段去帮助产品功能迭代, 帮助产品运营做用户增长。总的来说, 用户画像分析就是基于大量的数据, 建立用户的属性标签体系, 同时利用这种属性标签体系去描述用户。
    在这里插入图片描述

    a、用户性别的分布特征;
    b、用户年龄的分布特征;
    c、用户地区的分布分布;
    d、中国地区去国外预定的地区占比;

    2、推广渠道分析

    不同的推广渠道会产生不同的效果,好的推广渠道当然是有利于用户增长和业务增长的。
    渠道分析主要包括:每月新增用户、每月不同用户端的注册量以及注册方式、不同推广渠道的注册量、不同营销内容的注册量、不同推广渠道的转化率、不同营销内容的转化率

    3、转化漏斗分析

    漏斗分析是一套流程式数据分析,它能够反映用户行为状态以及从起点到终点各阶段用户转化率的重要分析模型。漏斗分析已经广泛应用于网站用户行为分析和APP用户行为分析的流量监控、产品目标转化等日常数据运营和数据分析的工作中。
    在这里插入图片描述

    漏斗分析最常用的是转化率和流失率两个互补型指标。
    转化漏斗分析包括:注册用户占比、活跃用户(非僵尸用户)占比、下单用户占比、实际支付用户占比、复购用户占比

    三、数据清洗

    3.1 数据表的结构

    本文主要利用的是train_users_2.csv和sessions.csv两个表,首先看看这两个表的结构:
    train_users_2.csv
    在这里插入图片描述

    id:用户id
    date_account_created:帐户创建日期
    timestamp_first_active:timestamp of the first activity, note that it can be earlier than date_account_created or date_first_booking because a user can search before signing up 第一次活动的时间戳,它可能比创建账户时间更早,因为第一次一个用户在注册之前会搜索
    date_first_booking:首次预订的日期
    gender:性别
    age:年龄
    signup_method:注册方式
    signup_flow:the page a user came to signup up from 用户注册的页面
    language:语言偏好
    affiliate_channel:what kind of paid marketing 营销方式
    affiliate_provider:where the marketing is e.g. google, craigslist, other 营销来源,例如 google,craigslist,其他
    first_affiliate_tracked:whats the first marketing the user interacted with before the signing up 在注册之前,用户与之交互的第一个营销广告是什么
    signup_app:注册来源
    first_device_type:注册时设备的类型
    first_browser:注册时使用的浏览器名称
    country_destination: this is the target variable you are to predict 目的地国家(需要预测的!)
    sessions.csv
    在这里插入图片描述

    user_id:与users表中的“id”列连接
    action:操作名称
    action_type:操作事件的类型
    action_detail:操作事件的描述
    device_type:此次会话所使用的设备
    secs_elapsed: 猜测是会话持续时间
    还有另外几张表:
    countries.csv - summary statistics of destination countries in this dataset and their locations目标城市和他们的地点
    age_gender_bkts.csv - summary statistics of users’ age group, gender, country of destination 用户的年龄组、性别、城市和目的地
    sample_submission.csv - correct format for submitting your predictions 提交预测的格式。

    3.2 数据预处理
    1. 重复值处理

    对于train_users_2表,其主键应该是用户id,需要确保其没有重复值,通过查询,确实没有重复值。

    select id,count(id) as count_id
    from train_users_2
    group by id
    having count_id>=2;
    

    对于用户会话sessions表,用户id可以有重复值,故不作处理。

    2. 缺失值处理

    对于train_users_2表,分别对每一列来查看是否存在缺失值以及缺失值的数量

    #首先是整个表的行数
    select count(*) from train_users_2;
    # 213451
    #查看第一次预定的时间存在缺失
    select count(*) from train_users_2
    where date_first_booking is null;
    # 124543
    

    除此之外,年龄存在87990项缺失、first_affiliate_tracked第一次接触的时间存在6065项缺失,其他的属性均没有缺失。
    对于sessions表:
    一共有200851行数据,
    79626项action为空值,1126204项action_type为空值,device_type没有缺失值 136031项secs_elapsed为空值。相对于这么大的数据集来说,为空值的只是很小的一部分,大概是没有检测到这些操作。
    缺失值原因推测: 在用户表中,第一次预定时间存在大量缺失,推测可能是很多用户在需要查看资源时注册了个人信息,但最终没有选择airbnb。年龄的缺失或许是用户未填写,第一次接触时间存在缺失应该是网站平台没有检测到。
    缺失值处理: 缺失值不能随意填补,只能用where筛选排除。

    3.异常值检测与处理

    对于train_users_2表,通过查看每一列的最大值、最小值等方法来确定异常值,并猜测异常值出现的原因。
    性别:除了male和female,还存在other

    select gender from train_users_2
    group by gender;
    

    年龄:存在大量100岁以上包括2014这样的数值,最大值是2014,最小值是1,猜测有些人是出于隐私的考虑随便填写的,在统计数据时应该排除这些异常年龄值。

    select age
    from train_users_2
    group by age
    order by age desc;
    

    数据中存在创建账户的时间晚于第一次预定的时间,但是从筛选的结果中可以看出第一次活跃时间date(timestamp_first_active)是早于第一次预定的时间,这个要怎么解释呢?

    select * from train_users_2
    where date_account_created > date_first_booking;
    #第一次活跃的时间早于预定时间和创建账户时间
    select *
    from train_users_2
    where date(timestamp_first_active) > date_account_created or date(timestamp_first_active)>date_first_booking;
    

    其他属性的异常值都不明显,有些填写的是other。
    对于sessions表,action有10 11 12这样的数据操作,不知道是干嘛的。
    对于数据的探测分析到此为止,后面将根据需要进行具体数值统计的分析。

    四、用户画像分析

    1、性别分析
    select gender,count(gender)
    from train_users_2
    group by gender;
    

    在这里插入图片描述

    从图上可以看出,平台上的男女比例相差不大,女性用户稍稍高于男性。

    2.年龄分布
    select age ,count(age) from train_users_2
    where age >=15 and age <=120
    group by age
    order by age;
    

    在这里插入图片描述

    统计时主要筛选出的是15-120岁的用户,从图上可以看出,用户最多的是31-40区间的,其次是21-30岁的用户,这两部分均占据了三分之一以上,这与实际是相符的,21-40这部分用户相对15-20的人群来说有更好的经济基础和时间来旅游,而相对老年人来说更能接受新型的居住方式。至于91-120区间也占比1.41%这是存在很多脏数据的,故不做分析。

    3.用户地区分布

    用户的地区特点是依靠使用语言来分析的。

    select language, count(language)
    from train_users_2
    group by language
    order by count(language);
    

    在这里插入图片描述

    从统计结果上看绝大部分用户使用的是英语,所以绝大部分用户是欧美的西方国家。

    4.用户旅游目的地分布

    下面统计不同用户旅游的目的地:

    select country_destination,count(country_destination)
    from train_users_2
    group by country_destination
    order by count(country_destination) desc;
    

    在这里插入图片描述

    目的地最多的是NDF,但是我不知道这个NDF是哪个国家啊(令人头秃!),其次是美国,大概也有很多美国本土旅游的。

    用户画像总结: 以上便是对airbnb用户的分析,从统计结果上看,女性用户略多于男性,年龄以中青年为主,用户分布更多的地区是欧美,旅游目的地较多的是NDF和美国。

    五、流量渠道分析

    5.1每月新增用户
    select date_account_created,count(date_account_created)
    from train_users_2
    group by date_account_created
    order by date_account_created;
    

    在这里插入图片描述

    从图还是那个可以看出,账户创建数在2010年5月-2012年7月是相对平稳的增长,在2012年11月之后增长相对较快,这种较快的增长除了受季节的影响,也可以说明某种推广渠道是有效的。在每年的7月或者9月之后用户增长数会下降,推测是受天气的影响。

    5.2 每月新增用户活跃数
    select date(timestamp_first_active),count(date(timestamp_first_active))
    from train_users_2
    group by date(timestamp_first_active)
    order by date(timestamp_first_active);
    

    在这里插入图片描述

    用户第一次活跃时间的增长趋势图和每月新增用户创建的趋势图是保持一致的。

    5.3 每月新增注册用户所采用的注册方式
    select date_account_created, signup_method,count(signup_method)
    from train_users_2
    group by date_account_created,signup_method
    order by date_account_created;
    

    在这里插入图片描述

    basic方式一直占主导地位,后期随着互联网的发展,facebook和google的账户注册方式逐渐增多。

    5.4 用户注册使用设备

    在这里插入图片描述

    网页一直是主要注册来源。

    5.5 第一次使用的设备

    在这里插入图片描述

    在2013年以及以前,第一次使用设备为windows desktop和mac是较多的,而到了2014年iPhone的使用是在逐渐增多的,整体上来说桌面的使用是一直占比较大,这说明很多用户都是在电脑上浏览到相关页面。

    5.6不同推广渠道的注册量
    select affiliate_channel,affiliate_provider,count(id)
    from train_users_2
    group by affiliate_channel,affiliate_provider
    order by count(affiliate_channel) desc;
    

    在这里插入图片描述

    先按照营销渠道进行了分类和排序,每一类中又包含了不同的提供途径如不同的浏览器。其中占比最多的是direct,难道是没有看到广告自行选择的吗?不太明白呢

    5.7 用户在注册前第一次交互的营销内容
    select first_affiliate_tracked,count(id)
    from train_users_2
    group by first_affiliate_tracked
    order by count(id);
    

    在这里插入图片描述

    占比最多的确是没有追踪到的,这显示出产品的追踪异常。

    5.8 不同营销内容的转化率
    select first_affiliate_tracked,count(date_first_booking)/count(id) as cha_ratio
    from train_users_2
    group by first_affiliate_tracked
    order by cha_ratio desc;
    

    在这里插入图片描述

    这个展示的是用户在第一次通过不同渠道接触到airbnb的营销内容之后,预定了airbnb的比例,转化率最高的是marketing,其次是没有检测到的untracked。整体上来说转化率都正常,转化率最低的是local ops。
    可以根据转化率调整不同营销方式的投入。

    流量渠道总结: 1、每年的用户新增呈现季节性,在11月-2月会出现较大的增长
    2、在2012年11月之后增长相对较快,在不同的注册方式等统计中可以发现,有很多是通过basic注册的,注册的app大多是web,第一次使用的设备也多是desktop,这说明可以加大电脑网页这些方面的推广投入。
    3、推广渠道的注册量上,有极大部分是通过direct直接注册的,其次是通过sem-band的不同浏览器注册。注册量最低的是remarketing。
    4、从营销内容上看,用户注册前第一次交互的营销内容以及有较好的转化率的营销内容没有追踪到,这反映了数据追踪的问题。marketing和linked的营销内容转化率表现较好,而local ops的转化率较低。

    六、转化漏斗分析

    根据用户周期模型,一个用户从新用户到注册到下单到再次下单,这个过程中用户是会不断流失的,那就需要找出用户流失的原因,用户在哪一个环节流失的最大。
    sessions中的不同用户数量(总人数)135484。
    1、活跃用户占比(从action的统计上看,很多用户的action次数为 0 1 2,最大的数量为2721,将action次数大于5的定义为活跃用户,活跃人数为122903),活跃用户占比 = 活跃用户总数/用户总人数 = 90.71%
    2、注册用户占比

    select count(*)
    from (select distinct user_id
    from sessions) as new_sessions
    inner join train_users_2 as train on train.id = new_sessions.user_id;
    

    注册用户数73815
    注册用户占比 = 注册用户总人数/用户总数量 = 54.48%
    3、下单用户占比

    select count(*) from (
    select user_id, count(*)
    from sessions
    where action_detail = 'reservations'
    group by user_id) as t1;
    

    有10367人在airbnb上完成下单,有人是多次下单。
    下单用户占比 = 下单用户数量/用户总人数 = 7.65%
    4、实际支付用户占比

    select count(*) from (
    select user_id, count(*)
    from sessions
    where action_detail = 'payment_instruments'
    group by user_id) as t1;
    

    有9019人完成实际支付
    付款用户占比 = 实际支付用户总人数/用户总人数量 = 6.66%
    5、复购用户占比

    select count(*) from (
    select user_id, count(*) as t
    from sessions
    where action_detail = 'payment_instruments'
    group by user_id
    having t>1) as t1;
    

    复购用户人数:4154
    复购用户占比 = 复购用户总人数/用户总人数 = 3.066%
    根据以上的数据得到下图:
    在这里插入图片描述

    从图上可以看出,从注册用户到下单用户数量出现了骤减,是用户流失率最高的环节,其他部分均表现正常可接受。

    七、业务和产品的建议

    1、用户画像
    建议以20-40的中青年为新用户发展对象
    2、推广渠道
    11月-2月是每年旅游的旺季,可以考虑在前期加大营销力度
    大多数获取到airbnb是通过网页,可加大网页上的广告投放与营销,另外对于追踪数据需要改进加强,这有利于进一步分析用户。
    3、转化漏斗分析
    注册用户到下单用户是用户流失率最高的环节,可根据注册用户情况精准推送优质房源,提高下单率。
    还有很多需要进一步分析,没有业务经验没有构建分析思维,分析的很随便且口语化。

    展开全文
  • Airbnb数据分析:这是我的Coursera项目之一
  • 纽约市Airbnb开放数据-实践 内容来源:Aurelien Geron(O'Reilly)的Scikit-Learn,Keras和TensorFlow的动手机器学习,第二版。 版权所有2019 Kiwisoft SAS,978-1-492-03264-9 机器学习实践。 在O'REILLY的动手...
  • 数据源:https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data/code 导入模块并读取数据: import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns ...

     爱彼迎官网: 

    1、业务背景与分析目的

    Airbnb是一款短租产品,作为旅行者和房东之间的媒介颠覆了酒店行业。目前,Aribnb作为短租产品的头部品牌,业务涉及到190+个国家的34,000+ 个城市。

    在Airbnb发展如此迅速的同时,是否可以从数据中发现业务存在的问题?

    目的:探索数据集,发现数据规律和异常数据,提出改进建议指导业务发展。

    定义问题: 1、价格区间是否合理

                        2、Airbnb的用户画像

                        3、通过评论数据集查看Airbnb流量渠道情况

                        4、数据的分析与预测

    数据源:https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data​​​​​​​

    2、calendar数据集分析(价格情况等)

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    calendar = read_csv("./data/calendar.csv")
    calendar.head()

    去掉数据中的&和,符号,并将日期从字符串类型转化为日期类型:

    calendar['Price'] = calendar['Price'].str.replace(r"[$,]","",regex=True).astype(np.float32)
    calendar['adjusted_price'] = calendar['adjusted_price'].str.replace(r"[$,]","",regex = True).astype(np.float32)
    calendar['date'] = pd.to_datetime(['date'])
    calendar['date'].head()

    添加星期和月的列:

    calendar['weekday'] = calendar['date'].dt.weekday
    calendar['month'] = calendar['date'].dt.month

     根据月份将价格进行分组并求出平均值,绘出柱状图:

    month_price = calendar.groupby('month')['price'].mean()
    sns.barplot(month_price.index,month_price.values)

     

     绘制价格小于300的直方图:

    sns.barplot(calendar[calendar['price']<300]['price'])

     

    3、listings数据集分析(房子情况)

    将列转化成列表来查看所有数据情况:

    listings = read_csv("./data/listings.csv")
    listings.columns.values。tolist()

     

     去掉数据中的&和,符号,并将小费中的空值替换为0:

    listings['Price'] = listings['Price'].str.replace(r"[$,]","",regex=True).astype(np.float32)
    listings['cleaning_fee'] = listings['cleaning_fee'].str.replace(r"[$,]","",regex=True).astype(np.float32)
    listings['cleaning_fee'].fillna(0,inplace = True)

    添加新字段,最低消费:

    listings['minimum_cost'] = (listings['Price'] + listings['cleaning_fee'])*listings['minimum_nights']
    listings['minimum_nights'].head()

     

     设施数量:

    listings['n_amenities'] = listings['amenities'].str[-1:1].str.split(",").apply(len)
    

     根据可容纳的人数,添加一个新的列,用来表示类型:Single(1),Couple(2),Family(5),Group(100)

    listings['accommodates_type'] = pd.cut(listings['accommodates'],bins=[1,2,3,5,100],include_lowest=True,right=False,labels='Single','Couple','Family','Group')
    listings['accommodates_type']

    房子所在区域与评分:

    listings['neighbourhood_group_cleansed'].head()
    listings['review_scores_rating'].head()

     

     并先取出需要的数据:

     查看房间类型的情况,并绘制出饼图和柱状图:

    room_type_counts=listings['room_type'].value_counts()
    fig,axes=plt.subplots(1,2,figsize=(10,5))
    axes[0].pie(room_type_counts.values,autopct="%.2f%%",labels=room_type_counts.index)
    sns.barplot(room_type_counts.index,room_type_counts.values)
    plt.tight_layout()

    房子类型数量的条形图:

    neighbourhood_counts = lingtings['neighbourhood_group_cleansed'].values_counts()
    sns.barplot(y = neighbourhood_counts.index,x = neighbourhood_counts.values,orient = 'h')

     

    将数据分组并进行进一步的处理,去掉空值,并按行求出所对应的比例,并按第一列数据进行从大到小的排序:

    neighbour_room _type = listings.groupby['neighbourhood_group_cleansed','room_type'].size() \
    .unstack('room_type').fillna(0) \ 
    .apply(lambda row:row/row.sum(),axis=1) \
    .sort_values('Entire home/apt',ascending = False)
    neighbour_room _type

     

    绘制出比例条形图: 

    columns = neighbour_room _type.columns
    plt.figure(figsize=(10,5))
    index = neighbour_room _type.index
    plt.barh(index,columns=neighbour_room _type[columns[0]]) 
    left = neighbour_room _type[columns[0]].copy()
    plt.barh(index,columns=neighbour_room _type[columns[1]],left=left) 
    left += neighbour_room _type[columns[1]].copy()
    plt.barh(index,columns=neighbour_room _type[columns[2]],left=left) 
    left += neighbour_room _type[columns[2]].copy()
    plt.barh(index,columns=neighbour_room _type[columns[3]],left=left)
    plt.legend(columns) 
    

    房东房源数量分析  

     可以看出大多房东都只有一套房子,少部分有两套,超过两套的都很少

    host_number = listings.groupby('host_id')
    sns.distplot(hostnumber[host_number<10])

     

    host_number_bins = pd.cut(host_number,bins=[1,2,3,5,100],include_lowest=True,right=False, \ 
    labels=['1','2','3-4','5+']).value_counts()
    plt.pie(host_number_bins,autopct="%.2f%%",labels=host_number_bins.index)

             

     4、评论数据集分析

    reviews = pd.read_csv("./data/reviews_detals.csv",parse_dates=['date'])
    reviews.head()

     增加年和月两列,根据年和月分别进行分组,计算出每一年,每一月的评论数量,并绘制出柱状图(2019年10月-12月无数据):

    reviews['year'] = reviews['date'].dt.year
    reviews['month'] = reviews['date'].dt.month
    
    n_reviews_year = reviews.groupby('year').size()
    sns.barplot(n_reviews_year.index,n_reviews_year.values)

    n_reviews_month = reviews.groupby('month').size()
    sns.barplot(n_reviews_month.index,n_reviews_month.values)

     

    由上面价格图知道每年五六月份为销售价格增长期,也即销售增长期,所以评论数量也会随之增长,从上图中也能表现出来

    将两组数据进行汇总,并绘制出折线图:

    year_month_reviews = reviews.groupby(['year','month']).unstack('month').fillna(0)
    year_month_reviews

    fig,ax = plt.subplots(figsize=(10,5))
    for index in year_month_reviews.index:
        series=year_month_reviews.loc[index]
        sns.lineplot(x=series.index,y=series.values,ax=ax)
    ax.legend(labels=year_month_reviews.index)
    ax.grid()
    pic=ax.set_xsticks(list(range(1,13)))

     之后可根据公司业务对上述图形进行分析,如2017-2018年评论数量增幅巨大,可能公司在这两年间做出了一些业务调整或业务拓展等等。

    5、预测房间价格

    导入相关模块

    from sklearn.preprocessing import StandardScaler

    对价格有影响的字段:

     查看这些字段的详细信息:

    ml_listings = listings_detailed[listings['price']<300][['host_is_superhost','host_identity_verified','neighbour_group_cleansed','property_type','room_type','is_business_travel_ready']
    disperse_features=features[disperse_columns]]
    ml_listings.info()

     

     删除异常值,分割特征值和目标值:

    ml_listings.dropna(axis=0,inplace=True)
    
    features=ml_listings.drop(columns=['price'])
    targets=ml_listings['price']

     针对其中的离散型数据进行one-hot编码:

    disperse_columns=['host_is_superhost','host_identity_verified','neighbour_group_cleansed','property_type','room_type','is_business_travel_ready']
    disperse_features=features[disperse_columns]
    
    disperse_feature=pd.get_dummies(disperse_features)
    disperse_feature

     对连续型数据进行标准化(因为特征值之间相差不是很大,所以标准化可能对预测的结果影响不是很大):

    continuous_features=features.drop(columns=disperse_columns)
    scaler=StandardScaler()
    continuous_features=scaler.fit_transform(continuous_features)

    对处理后的特征横向进行组合:

    feature_array=np.hstack([disperse_features,continuous_features])

    构建训练模型,并进行预测:

    from sklearn.model_selection import train_test_split
    from sklearn.linear_model import LinearRegression
    from sklearn.metrics import mean_absolute_error,r2_score
    
    X_train,X_test,y_train,y_test=train_test_split(feature_array,targets,test_size=0.25)
    regressor=LinearRegression()
    regressor.fit_transform(X_train,y_train)
    y_predict=regressor.predict(X_test)
    
    print("平均误差:",mean_absolute_error(y_test,y_predict))
    print("R2评分:",r2_score(y_test,y_predict))

    模型准确度不太好,使用随机森林进行预测:

    from sklearn.ensemble import RandomForestRegressor
    
    X_train,X_test,y_train,y_test=train_test_split(feature_array,targets,test_size=0.25)
    regressor=RandomForestRegressor()
    regressor.fit_transform(X_train,y_train)
    y_predict=regressor.predict(X_test)
    
    print("平均误差:",mean_absolute_error(y_test,y_predict))
    print("R2评分:",r2_score(y_test,y_predict))

     6、评论数量预测

     

    reviews.head()

    ym_reviews=reviews.groupby(['year','month']).size().reset_index().rename(coiumns={0:'count'})
    ym_reviews

     构建模型,使用随机森林进行预测,并查看准确率:

    features=ym_reviews[['year','month']]
    targets=ym_reviews['count']
    
    X_train,X_test,y_train,y_test=train_test_split(feature_array,targets,test_size=0.25)
    regressor=RandomForestRegressor(n_estimators=100)
    regressor.fit(X_train,y_train)
    y_predict=regressor.predict(X_test)
    
    print("平均误差:",mean_absolute_error(y_test,y_predict))
    print("R2评分:",r2_score(y_test,y_predict))

     由结果可看出模型预测准确率较好,因此对2019年10月,11月和12月的数据进行预测:

    features=ym_reviews[['year','month']]
    targets=ym_reviews['count']
    
    regressor=RandomForestRegressor(n_estimators=100)
    regressor.fit(features,targets)
    
    y_predict=regressor.predict([2019,10],[2019,11],[2019,12])
    y_predict
    

    预测后结果为:

    将预测值转换为DataFrame类型,并将预测值和源数据进行堆叠拼接,然后绘制出折线图:

    predict_reviews=pd.DataFrame([[2019,10+index,x] for index,x in enumerate(y_predict)],columns=['year','month','count'])
    final_reviews=pd.concat([ym_reviews,predict_reviews]).reset_index()
    
    years=final_reviews['year'].unique()
    fig,ax = plt.subplots(figsize=(10,5))
    for year in years:
        df=final_reviews[final_reviews['year']==year]
        sns.lineplot(x='month',y='count',data=df)
    
    ax.legend(labels=year_month_reviews.index)
    ax.grid()
    pic=ax.set_xsticks(list(range(1,13)))
    

     

    展开全文
  • 一、分析背景 Airbnb,中文名为爱彼迎,成立于2008年8月,是一个旅行房屋租赁社区,用户可通过网络或手机应用程序发布、搜索度假房屋租赁信息并完成在线预定程序。2011年,Airbnb服务迅猛增长了800%。 二、分析目的...

    一、项目背景和分析总结

    在这里插入图片描述

    Airbnb,中文名为爱彼迎,成立于2008年8月,是一个旅行房屋租赁社区,用户可通过网络或手机应用程序发布、搜索度假房屋租赁信息并完成在线预定程序。2011年,Airbnb服务迅猛增长了800%。

    1.1 分析目的

    • 构建Airbnb的目标用户群体画像;
    • 观察Airbnb的用户增长趋势和付费转化率情况;
    • 评估各推广渠道的质量;
    • 考察各流程转化率情况;

    1.2 分析框架

    在这里插入图片描述

    1.3 分析总结

    用户分析总结:

    (1)用户画像

    • 性别:注册用户中女性占比53.66%,男性占比46.34%,女性占比略高于男性占比,二者差异不大。
    • 年龄:用户年龄分布广泛,主要分布在26-40岁,这区间各年龄段的转化率都超过55%。在超过50岁的用户群体中,用户数量随年龄增长逐渐下降,但转化率却呈现增长趋势,61-70岁区间的用户付费转化率在53%左右。
    • 设备和浏览器:desktop设备占主流,Mac占比高于Windows,由于移动端APP处于起步阶段,移动端仅占少数,其中的苹果设备占比高于安卓设备以及其他智能设备。浏览器以Chrome、Safari、Firefox为主,其付费转化率也较有优势。
    • 注册方式和APP:大多数用户采用基本注册方式(即电子邮件),少量用户采用Facebook注册,极少数用户采用google注册;在注册APP方面,绝大部分用户都是在网站上注册,这与前面以Desktop为主的设备分布情况一致。
    • 国家目的地和语言:Airbnb用户覆盖全球多个地区,较受欢迎的目的地集中在发达国家,美国占比最高,使用英语的用户占比高达96.66%,其余语言占比均未超过1%,中文是排名第二的用户语言。

    (2)用户行为

    • 在2014年1-6月期间,注册用户数和活跃率总体呈上升趋势,活跃率上升至75%左右的较高水平。
    • 用户增长趋势前期平缓,中后期快速增长,整体向上,趋势健康。用户增长存在季节性规律,每年1-9月都呈增长趋势,并在7-9月达到波段峰值,随后至12月则会小幅下降。
    • 付费转化率初期增长至60%左右,较为理想。随着平台注册用户数增多,度过初期红利后付费转化率逐步下降,维持在40%的水平。
    • 从用户注册、首次活跃分别与首次预定的时间间隔分布来看,用户注册后的50天内和首次活跃的10天之内是预定订单产生的关键时间段,大部分用户对Airbnb的初始信任度和认可度较高,而且越临近首次活跃日期,用户预定意愿越强烈。
    营销渠道分析总结:
    • 在拉新方面,Direct(直接营销)和sem-brand-google是最有力的拉新营销渠道,注册用户数排名前五的渠道贡献了近80%的注册用户数,符合二八定律。
    • 在付费转化率方面,注册用户数排名前十的渠道的付费转化率都不低且相差不大,唯独content-google的付费转化率为15.6%,远低于平均值32.3%,需要提升该渠道的质量。
    • 在渠道用户活跃率方面,由google渠道带来的活跃用户数远超其余渠道,活跃用户数排名前五的渠道中google端占据四个。remarketing_google、sem-brand_bing的活跃率高于40%。
    • Sem-non-brand_baidu的用户平均总停留时长最长,而google渠道吸引的用户目的性较强,用户平均总停留时长较短,基于该渠道在用户增长、转化率和活跃率方面都表现不错,说明Airbnb能较高效的满足用户的需求。
    • Direct营销是各国目的地预定订单的最主要贡献者,还可以留意sem-brand和sem-non-brand这两种效果相当的营销方式。
    • 为各国目的地带来最多预定用户的是direct渠道,其次是google渠道,其余渠道的效果与前两者相比都相差甚远。
    转化漏斗分析总结:
    • 转化漏斗中流失率最高的是从注册用户到预定用户的部分,转化率仅为14.04%。从支付到复购的转化率有60.39%,较为理想,表明用户的回购意愿较高,拥有较高的忠诚度。

    1.4 建议

    • 基于用户画像,目标对象可针对26-40岁的用户,同时考虑高转化率的61-70岁中老年用户。
    • 在注册用户数和活跃率总体呈上升趋势的情况下,转化率却下降趋势明显,应做好对市场现状的整体把握,加强竞品分析,进而找出自身产品的突破口和找准定位。可对新用户做调研,尽快找出转化率下降的关键因素。
    • 针对用户注册后的50天内和首次活跃的10天内这两个关键时间段,对新注册的用户发放优惠券,引导用户做任务获取优惠,首页推送优质房源吸引用户。
    • Direct_direct、sem-brand_google、sem-non-brand_google这三个营销渠道应重点关注,可考虑与google达成更深的战略合作,提升付费转化率。
    • 针对付费转化率低的content-google,需要核算该渠道的ROI和ARPU,若该渠道适合继续投放,再对该渠道的用户做详细的特征描述和需求调研,进而调整渠道投放量和内容。
    • 营销渠道、方式和广告内容的缺失值比较多,建议运营人员和相关技术人员考虑埋点的情况,改善当前的数据情况。
    • 针对从注册到预定过程的严重流失,需结合往期数据进一步分析流失率的变化情况,结合产品生命周期和用户行为挖掘用户流失节点,进一步提高转化率。
    • 针对从预定到支付过程中13%的流失率,根据用户反馈对支付环节流程进行ABTest,找出阻碍用户支付流程的节点,优化支付页面和支付流程。
    • 为支付成功的用户提高优惠回馈,刺激用户二次消费和适当召回。针对可能存在一次出游多次预定的复购用户,做好目的地的房源关联。

    二、数据认识

    2.1 数据集描述

    数据集名称:Airbnb New User Bookings
    数据来源:https://www.kaggle.com/c/airbnb-recruiting-new-user-bookings/data

    2.2 字段含义

    • train_users表:
      在这里插入图片描述

    • sessions表:
      在这里插入图片描述

    三、数据清洗

    3.1 缺失值

    • train_users表:
      date_first_booking缺失124543条;
      age缺失87990条;
      first_affiliate_tracked缺失6065条;

    • sessions表:
      user_id缺失34496条;
      action缺失79626条;
      action_type缺失112604条;
      action_detail缺失112604条;
      secs_elapsed缺失136031条;

    处理方式:

    • date_first_booking的缺失主要是由于用户未下单,所以没有产生行为数据,不做填补;
    • age的缺失为用户未填写年龄信息,不做填补;
    • first_affiliate_tracked的缺失可能为前端统计数据时未统计完全,不做填补;
    • sessions表中除了device_type以外的其他字段都有不同程度的缺失数据,考虑为前端统计数据时未统计完全,不做填补;

    3.2 异常值

    • age最小值为1,最大值为2014;
    • date_account_created>date_first_booking(账号创建时间>第一次 - 预定时间)的异常数据有29条;
    • secs_elapsed为0的数据有104624条;

    处理方式:

    • age的异常值推测是用户随意填写行为导致,本篇分析将筛选范围缩至10-80岁;
    • Airbnb发布过声明:从2010年到2013年,用户可以在完全创建帐户之前进行少量预订。为了数据规范性,删除date_account_created>date_first_booking的数据;
    • secs_elapsed推测为前端统计数据时未统计完全,不作修改。

    四、用户分析

    4.1 用户特征

    (1)性别分布

    注册用户中女性占比53.66%,男性占比46.34%,女性占比略高于男性占比,二者差异不大。

    在这里插入图片描述

    (2)年龄分布

    注册用户主要集中在26-40岁,占比近60%,付费转化率最高的也是在这个年龄段。而付费转化率较高的用户分布在61-70岁,转化率在53%左右。虽然46-55岁的用户占比不算低,但其转化率未超过50%。

    在这里插入图片描述

    (3)设备分布

    Desktop设备的注册用户占比远高于移动端,这是由于数据时间处于2010-2014年间,移动端app处于起步阶段,尚未普及,大部分的用户都是通过Desktop设备进行注册。其中,Mac占比高于Windows,苹果设备占比高于安卓设备以及其他智能设备。

    在这里插入图片描述

    (4)浏览器分布

    大部分用户是在Chrome、Safari、Firefox、IE四大浏览器上完成注册的,其付费转化率也较有优势,移动端浏览器则以mobile Safari优先。
    结合前面设备分布情况,Chrome、Safari、Firefox、IE四大浏览器终端皆为Desktop,Mobile Safari终端为苹果移动设备,均有较高的转化率。

    在这里插入图片描述

    (5)注册方式和APP分布

    大部分用户是采用基本注册方式(即电子邮件),少量用户采用Facebook注册,极少数用户采用google注册;在注册APP方面,绝大部分用户都是在网站上注册,这与前面以Desktop为主的设备分布情况一致。

    在这里插入图片描述

    (6)国家目的地分布

    较受欢迎的目的地主要集中在发达国家,选择以美国作为旅行国家目的地的用户占比最高,法国、意大利、德国依次随后。

    在这里插入图片描述

    (6)语言分布

    Airbnb的用户语言共有25种,表明Airbnb用户覆盖全球多个地区,但使用英语(en)的用户占比高达96.66%,其余语言占比均未超过1%,一方面因为英语是多国通用语言,另一方面是Airbnb创立于美国,前期主要集中在欧美市场。
    在排除英语后,中文(zh)是最多用户的使用语言,使用中文的用户可能是国外华裔,也可能是有出国旅游需求的国人。考虑到中文使用者的用户比例和中国市场的巨大潜力,这也可能成为推动Airbnb公司选择入华发展的因素之一。

    在这里插入图片描述

    4.2 用户行为评估指标分析

    (1)月活

    由于sessions表中的user_id字段缺失部分数据,只能考察2014年1-6月的月活。本篇分析将行为数大于15的用户定义为活跃用户。
    由图可见,注册用户数和活跃率总体呈上升趋势,活跃率仅在2014年3月有小幅度下降,于次月又在注册用户数变化不大的情况下出现反弹式增长,随后维持在75%左右的较高水平。

    在这里插入图片描述

    (2)用户增长趋势和付费转化率趋势

    Airbnb在2010年仍处于萌芽阶段,用户增长都较为平缓,此时的转换率在50%-65%之间。2011年开始逐步发展,2013年-2014年的注册用户数飞跃增长,但付费用户的增长跟不上步伐,转化率下降趋势明显。

    由于Airbnb是一款旅游相关产品,新用户增长存在季节性规律,每年1-9月都呈增长趋势,并在7-9月达到波段峰值,随后至12月则会小幅下降,用户转化率则是每年的3月附近会出现小高峰。

    值得注意的是,在2012年7月以后,转化率降至42%后没有得到很好的恢复,之后的转化率都不超过45%,可以考虑是以下原因导致的:

    1. 市场开始出现相似的竞品,比如中国就出现了蚂蚁短租、爱日租、自如友家等O2O模式的公寓民宿预定平台,各平台都塑造了自身特色,满足了用户们的不同需求;
    2. Airbnb产品在面临其余竞争者时未能及时作出应变,对自身产品的定位和扩张缺乏更细致的规划和有力的执行,无法让用户感受到Airbnb是一款最适合自己的产品;
    3. 新增长的用户不是优质用户,渠道和运营需要作出调整。

    在这里插入图片描述
    在这里插入图片描述

    (3)用户注册与首次预定的时间间隔

    有24.1%的用户在注册当天就进行了首次预定,78.7%用户在注册50天以内便完成了首次预定,表明大部分用户对Airbnb的初始信任度和认可度较高。但仍有15.9%的用户在注册100天以后才首次预定,这些用户可能是因为:

    1. 用户未在Airbnb找到合适满意的房源;
    2. 用户短期内没有出行计划,注册只是为了初步认识Airbnb;
    3. 用户原本有出行计划,但后来取消计划了;
    4. 用户在Airbnb找到合适的房源,但是支付方式对其不适用;
    5. 受旅游业季节性影响,用户需要等待合适的时期才出行。

    在这里插入图片描述

    在这里插入图片描述

    (4)用户首次活跃与首次预定的时间间隔

    有24.1%的用户在首次活跃的当天就进行了预定,65.9%的用户在首次活跃的10天之内完成了首次预定,18.1%的用户在首次活跃后的10-100天内完成预定,15.9%的用户在首次活跃后的100-400天内才首次预定,极少数用户在距离首次活跃的400天后进行预定。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    五、营销渠道分析

    5.1 各营销渠道用户规模和付费转化率

    Direct(直接营销)带来的注册用户数最多,占比64.39%。
    在排除Direct后,sem-brand-google(在Google上的搜索引擎营销)的渠道用户占比达到32.98%。注册用户数排名前五的渠道贡献了近80%的注册用户数,符合二八定律。
    在付费转化率方面,注册用户数排名前十的渠道的付费转化率都较为理想且相差不大,唯独content-google的付费转化率为15.6%,远低于平均值32.3%,需要提升该渠道的质量。

    在这里插入图片描述
    在这里插入图片描述

    5.2 各营销渠道每月增长用户数

    排除direct,选取注册用户数排名前20%的营销渠道进行分析。

    • 从2012年开始,各营销渠道的新增用户数有了明显的增长,此时增长最快的是以sem-non-brand为营销方式的google渠道。
    • 2013年后,以sem-brand为营销方式的google渠道逐渐超越同渠道的sem-non-brand。而以api营销方式的渠道拉新数量也从低峰开始逐渐回升。此前一直不见起色的content_google和seo_google终于有了起伏,但效果有限。
    • 2014年后,sem-brand_google的拉新力度呈指数增长,而其他大部分渠道都出现下滑现象,一方面可能是Airbnb察觉到sem-brand_google的营销推广质量最好,增加了其投放的同时减少了其余渠道的投放,另一方面可能是由于产品更新迭代导致其对于其他渠道的用户吸引力减少。

    在这里插入图片描述

    5.3 各营销渠道活跃用户数

    本篇分析将行为数大于15的用户定义为活跃用户。选取活跃用户数排名前十的营销渠道,sem-brand_google、sem-non-brand_google、seo_google三个营销渠道带来了绝大部分的活跃用户。由google渠道带来的活跃用户数远超其余渠道,占比排名前五的渠道中google端占据四个。

    从用户活跃率来看,remarketing_google、sem-brand_bing的活跃率高于40%,较为理想。而活跃用户数排名较前的sem-non-brand_google和api_other的活跃率却低于平均值28.07%。

    在这里插入图片描述

    5.4 各营销渠道的用户平均总停留时长

    由于数据的时间跨度四年以上,所以各营销渠道的用户平均总停留时长较长。
    Sem-non-brand_baidu的用户平均总停留时长达到96434s,约26.7小时,远超平均值32222s,但是其注册用户数为18人,活跃用户数仅有5人,而baidu渠道是面向中国市场的推广渠道,有两种可能性,一是该渠道的数据为脏数据,可以排除;二是该渠道吸引的注册用户对Airbnb有较刚性的需求,可以适当增加投放量。

    结合前文分析,google渠道在用户增长、转化率和活跃率方面都表现不错,但渠道的用户平均总停留时长只有sem-brand-google(33824s)达到了平均值,表明google渠道吸引的用户目的性较强,另一方面也反映了Airbnb能较高效的满足用户的需求。

    在这里插入图片描述

    5.5 各营销方式对国家目的地的影响

    Airbnb采用了8种营销方式,在11个国家目的地中,各国大量有过预定行为的用户都是direct营销所带来的,尤其是在美国。
    在不考虑美国的情况下,除了direct营销,我们还可以留意sem-brand和sem-non-brand这两种效果相当的营销方式。
    而content和remarketing未能为各国目的地带来较多的预定订单。

    在这里插入图片描述
    在这里插入图片描述

    5.6 各渠道对国家目的地的影响

    Airbnb选择了17个渠道进行营销推广,为各国目的地带来最多预定用户的是direct渠道,其次是google渠道,其余渠道的效果与前两者相比都相差甚远。

    在这里插入图片描述
    在这里插入图片描述

    六、转化漏斗分析

    转化漏斗中流失率最高的是从注册用户到预定用户的部分,转化率仅为14.04%。可以考虑以下原因:

    1. 用户对平台提供的房源不感兴趣,平台房源满足不了用户需求;
    2. 平台的交互和功能界面设计得不够理想,如对房源的分类划分不够准确细致,使用户难以找到心仪房源,无法高效下单;
    3. 平台的房源展示不够美观,不足吸引力,描述不全面,可信度和说服力不强;
    4. 房东与客户的交流媒介不够便捷,减弱客户与房东的交流意愿;
    5. 房东经验不足,素养不够高,营销意识不够强;

    预定用户中有13%的用户未支付成功,可以根据用户反馈对支付环节流程进行ABTest,优化支付页面和支付流程。

    从支付到复购的转化率有60.39%,较为理想,表明付费用户对Airbnb有一定认可度。可针对支付成功的用户进行详细用户画像,分析一次消费后流失的节点,考虑刺激用户二次消费。针对可能存在一次出游多次预定的用户,做好目的地的商品关联。

    在这里插入图片描述

    七、MySQL代码

    # 数据清洗
    select count(id) from train_users_2 where age <10 and age > 80;
    set sql_safe_updates = 0;
    update train_users_2 set age = 0 where id not in (
    select id from (select id from train_users_2 where age <= 80 and age >= 10) a);
    DELETE FROM train_users_2 where date_first_booking<date_account_created;
    select count(1) from train_users_2 where date_first_booking<date_account_created;
    select count(1) from train_users_2;
    
    
    # 用户分析
    
    # 注册用户性别分布
    select concat(round((male/total)*100,2),'%') as male,
    concat(round((female/total)*100,2),'%') as female
    FROM 
    (select count(case when gender = 'male' then 1 else null end) as male,
    count(case when gender = 'female' then 1 else null end) as female,
    count(case when gender <>'-unknown-' and gender <>'other' then 1 else null end) as total 
    FROM train_users_2) t;
    
    # 注册用户年龄分布
    select age,count(id)from train_users_2 where age>0 GROUP BY age ORDER BY age;
    SELECT agegroup,c,
    concat(round((c/(select count(1) from train_users_2))*100,2),'%') as per from 
    (select case 
    		when age BETWEEN 10 and 15 then '10-15岁'
    		when age BETWEEN 16 and 20 then '16-20岁'
    		when age BETWEEN 21 and 25 then '21-25岁'
    		when age BETWEEN 26 and 30 then '26-30岁'
    		when age BETWEEN 31 and 35 then '31-35岁'
    		when age BETWEEN 36 and 40 then '36-40岁'
    		when age BETWEEN 41 and 45 then '41-45岁'
    		when age BETWEEN 46 and 50 then '46-50岁'
    		when age BETWEEN 51 and 55 then '51-55岁'
    		when age BETWEEN 56 and 60 then '56-60岁'
    		when age BETWEEN 61 and 65 then '61-65岁'
    		when age BETWEEN 66 and 70 then '66-70岁'
    		when age BETWEEN 71 and 75 then '71-75岁'
    		when age BETWEEN 76 and 80 then '76-80岁'
    		else null
    		end as agegroup,
    		count(1) as c
    from train_users_2 where age>0 GROUP BY agegroup ORDER BY agegroup) t;
    
    # 付费用户年龄分布
    SELECT pay_agegroup,c from 
    (select case 
    		when age BETWEEN 10 and 15 then '10-15岁'
    		when age BETWEEN 16 and 20 then '16-20岁'
    		when age BETWEEN 21 and 25 then '21-25岁'
    		when age BETWEEN 26 and 30 then '26-30岁'
    		when age BETWEEN 31 and 35 then '31-35岁'
    		when age BETWEEN 36 and 40 then '36-40岁'
    		when age BETWEEN 41 and 45 then '41-45岁'
    		when age BETWEEN 46 and 50 then '46-50岁'
    		when age BETWEEN 51 and 55 then '51-55岁'
    		when age BETWEEN 56 and 60 then '56-60岁'
    		when age BETWEEN 61 and 65 then '61-65岁'
    		when age BETWEEN 66 and 70 then '66-70岁'
    		when age BETWEEN 71 and 75 then '71-75岁'
    		when age BETWEEN 76 and 80 then '76-80岁'
    		else null
    		end as pay_agegroup,
    		count(1) as c
    from train_users_2 where age>0 and date_first_booking<>'' GROUP BY pay_agegroup ORDER BY pay_agegroup) t;
    
    # 设备情况
    SELECT first_device_type,c,
    concat(round((c/(select count(1) from train_users_2))*100,2),'%') as per
    FROM
    (select first_device_type,count(1) as c FROM train_users_2 GROUP BY first_device_type ORDER BY count(1) DESC) t;
    
    # 浏览器
    select first_browser,c,
    concat(round((c/(select count(1) from train_users_2))*100,2),'%') as per
    from
    (SELECT first_browser,count(1) as c from train_users_2 GROUP BY first_browser ORDER BY count(1) DESC) t;
    
    # 浏览器转化率
    SELECT first_browser,count(1) as '新增用户',
    count(case when date_first_booking<>'' then 1 else null end) as '付费用户',
    concat(round((count(case when date_first_booking<>'' then 1 else null end)/count(1))*100,2),'%') as per
    FROM train_users_2 GROUP BY first_browser HAVING count(1)>500;
    
    # 注册方式和应用
    select signup_method,count(id) as c from train_users_2 GROUP BY signup_method;
    select signup_app,count(id) as c from train_users_2 GROUP BY signup_app;
    
    # 国家目的地
    SELECT country_destination,c,
    concat(round((c/(SELECT count(1) from train_users_2 where country_destination <> 'NDF'))*100,2),'%') as per
    from
    (SELECT country_destination,count(1) as c FROM train_users_2 where country_destination <> 'NDF' GROUP BY country_destination ORDER BY count(1) DESC)t;
    
    # 语言分布
    select `language`,c,concat(round((c/(select count(1) from train_users_2 where `language`<> ''))*100,2),'%') as per from (select `language`,count(id) as c from train_users_2 GROUP BY `language` ORDER BY c desc) t; 
    
    # 每月新增注册用户数和每月转化率
    select left(date_account_created,7) as YM,count(1) as '新增用户数',
    count(case when date_first_booking <>'' then 1 else null end) as '付费用户数',
    concat(round((count(case when date_first_booking <>'' then 1 else null end)/count(1))*100,2),'%') as '每月转化率'
    from train_users_2
    GROUP BY left(date_account_created,7) 
    ORDER BY date_account_created ASC;
    
    # 注册用户中活跃用户比例
    SELECT d,count(id),count(user_id),count(user_id)/count(id) from
    (select id,user_id,left(date_account_created,7) as d from train_users_2 as t 
    LEFT JOIN 
    (select user_id,count(user_id) from sessions where user_id<>'' GROUP BY user_id HAVING count(user_id)>15) as s 
    on t.id=s.user_id) as b
    GROUP BY d HAVING count(user_id)<>0 ORDER BY d;
    
    # 首次注册与首次预定的时间间隔
    ALTER table train_users_2 add column ctb VARCHAR(255);
    update train_users_2 set ctb = DATEDIFF(date_first_booking,date_account_created);
    select ctb,count(ctb) as c FROM train_users_2 where ctb<>'' GROUP BY ctb ORDER BY c;
    
    # 首次活跃与首次预定的时间间隔
    ALTER table train_users_2 add column atb VARCHAR(255);
    update train_users_2 set atb = DATEDIFF(date_first_booking,timestamp_first_active);
    select atb,count(atb) as c FROM train_users_2 where atb<>'' GROUP BY atb ORDER BY c;
    
    
    # 营销渠道分析
    
    # 各营销渠道用户规模和付费转化率
    alter table train_users_2 add column acp VARCHAR(255) not null;
    update train_users_2 set acp=concat(affiliate_channel,'_',affiliate_provider);
    SELECT acp,count(1) as '渠道用户数',
    count(case when date_first_booking<>'' then 1 else null end)as '付费用户数',
    concat(round((count(case when date_first_booking<>'' then 1 else null end)/count(1))*100,2),'%') as '渠道转化率'
    from train_users_2 GROUP BY acp ORDER BY count(1) DESC;
    
    SELECT affiliate_channel,affiliate_provider,count(id) as '渠道用户数',
    count(case when date_first_booking<>'' then 1 else null end)as '付费用户数'
    from train_users_2 where count(id)>100 GROUP BY affiliate_channel ORDER BY count(id) DESC;
    
    
    # 各营销渠道每月增长用户数
    select d,acp,count(1) from 
    (select id,left(date_account_created,7) as d,acp from train_users_2) t 
    GROUP BY d,acp ORDER BY d ASC;
    
    # 各营销渠道活跃用户数和活跃率
    select b1.acp,c1,c2,
    concat(round((c2/c1)*100,2),'%') as per 
    from
    	(select acp,count(1) as c1 from train_users_2 GROUP BY acp) b1
    left join
    	(select acp,count(distinct id) as c2 from
    			(select id,acp from train_users_2 as t 
    			join
    			(select user_id,count(user_id) from sessions where user_id<>'' GROUP BY user_id having count(user_id)>15) as u 
    			on t.id=u.user_id) as o 
    		GROUP BY acp ORDER BY count(distinct id) DESC) as b2 on b1.acp=b2.acp;
    
    # 各渠道的用户平均停留时长
    select acp,round(avg(avg_s),2) as avg from (select id,acp,avg_s from (select id,acp from train_users_2) as t join (select user_id,avg(secs_elapsed)as avg_s from sessions where secs_elapsed<>'' and secs_elapsed<>0 GROUP BY user_id) as s on t.id=s.user_id) as b GROUP BY acp;
    
    # 营销方式与渠道与国家目的地的关系(在PowerBI里对id列作计数)
    select id,affiliate_channel,country_destination from train_users_2 where date_first_booking<>'';
    select id,affiliate_provider,country_destination from train_users_2 where date_first_booking<>'';
    
    
    # 漏斗模型
    
    # 用户总数
    select count(distinct user_id) from sessions;
    
    # 活跃用户数
    SELECT count(1) from (select user_id from sessions GROUP BY user_id having count(user_id)>15) t;
    
    # 注册用户
    select count(1) from train_users_2 as t
    join 
    (select distinct user_id from sessions) as s
    on t.id=s.user_id;
    
    # 预定用户
    select count(1) from 
    (select distinct user_id from sessions where action_detail='reservations') as s;
    
    # 支付用户
    select count(1) from 
    (select distinct user_id from sessions where action_detail='payment_instruments') as s;
    
    # 复购用户
    select count(1) from 
    (select user_id,count(1) as c from sessions where action_detail='reservations' GROUP BY user_id) as s where c>=2;
    
    
    展开全文
  • 数据分析精华案例-Airbnb产品数据分析
  • 数据集文件夹-包含Seattle AirBnb数据集 analysis.ipynb-这是数据分析的代码 分析结果摘要 总而言之,有几个因素决定了房源的价格,例如月份,便利设施,取消政策等。 分析和解释这些都是在笔记本降价中做出的 您...
  • Airbnb产品数据分析

    千次阅读 2020-05-13 20:59:26
    目前Airbnb作为一款社区平台类产品,其业务遍布了191个国家,并且经常出现在商业分析的优秀案例中。Airbnb在做好了产品体验、房源美感、民宿共享服务之后,这款产品和背后的业务是否存在可以改进的地方? 1.2、提出...
  • 纽约市Airbnb数据数据分析,可视化和预测 描述 该项目分析了2019年从纽约市地区收集的Airbnb数据,该数据的列表范围从私人住宅到房间,邻里,邻里群体,价格等。该项目的目标是创建一个可以预测的模型未来的AirBnb...
  • airbnb数据by Akshaj Verma 由Akshaj Verma Airbnb的数据驱动故事 (A Data-Driven Story of Airbnb) Users on AirBnB can book a place to stay in over 34,000 cities across more than 190 countries. The goal ...
  • **香港地区Airbnb数据可视化分析** 一、背景 Airbnb作为一个新兴的短租平台,颠覆了大众对于传统酒店住宿的认知,随着社区平台的不断发展壮大,为世界各国的诸多旅行者们提供了数以百万计的独特入住选择,其中包含...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,232
精华内容 2,092
关键字:

airbnb数据分析