Airbnb(爱彼迎)用户数据分析——tableau可视化和MySQL分析
本文利用Airbnb用户的注册、订单和日志行为等数据,从用户画像、营销渠道转化率、订单漏斗分析三方面进行分析。我们需要考虑以下3个问题:
- 爱彼迎的目标用户是什么样的人群?有什么特点?
- 这些人群接受信息的渠道有哪些?或者说需求对应出现的场景在什么时候什么地方?
- 以什么样的方式给他们传递爱彼迎的产品价值是有效的,印象深刻的?
这三个问题分别定义了传播的对象、渠道、效率。
有了要解决的问题,我们就可以据此来定义相应的分析指标。
用户画像描述了Airbnb客户的整体特征,如性别比例、年龄分层、所属地比例、目的地等几个方面进行刻画。同时刻画了注册用户的设备、账号类别等基本信息,掌握用户渠道来源。
营销方面针对不同营销渠道和营销内容(例如网站的不同推广计划)的注册量和下单转化率进行分析,了解更有效的营销渠道和效果,从而有针对性的投放广告,节约成本。
订单漏斗分析根据客户的行为日志数据对用户的活跃程度、下单率、付款率、复购率进行了可视化,可以观察整体流程中的薄弱点,从而有针对性的提高某一方面的转化率。
本文参考了文章Airbnb(爱彼迎)产品分析报告里的一些指标观点。
数据描述
数据来源于Kaggle竞赛,主要包含以下信息:
- train_users.csv - 用户训练集
- id: 用户ID
- date_account_created: 账户创建日期
- timestamp_first_active: 第一次浏览的时间戳,注意由于用户注册前就可以浏览,因此可能早于注册日期和第一次预定日期。
- date_first_booking: 第一次预定日期
- gender:性别
- age :年龄
- signup_method :注册方式
- signup_flow: 注册来源网页
- language: 语言偏好
- affiliate_channel: 营销渠道
- affiliate_provider: 营销来源,例如google等
- first_affiliate_tracked: 在注册之前,用户与之交互的第一个营销内容
- signup_app :注册使用的app
- first_device_type :第一次使用时的设备类型
- first_browser :第一次使用时的浏览器
- country_destination:旅行目的地
- sessions.csv - 用户行为日志
- user_id: to 与用户表的ID 对应
- action :用户行为
- action_type :用户行为类型
- action_detail :用户行为具体细节
- device_type:设备类型
- countries.csv - 数据集中目的地国家的总结统计和地点
- age_gender_bkts.csv 用户年龄分组、性别、目的地的总结统计
数据预处理
在开始分析之前,首先对数据进行预处理,包括重复值、缺失值、异常值等的处理。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
sns.set(style="darkgrid")
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号data = pd.read_csv('train_users_2.csv')
sum(data['id'].value_counts() == 1) #观察是否有重复id
data.info()
对比ID数量为1 的ID个数和总数据量,发现并没有重复ID ,说明数据中是没有重复ID 的,ID 可以用作主键。
查看16个变量的缺失值情况如下:
id 213451 non-null object
date_account_created 213451 non-null object
timestamp_first_active 213451 non-null float64
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
可以观察到缺失值情况如下,并分别对其制定相应的缺失值补充:
变量 | 意义 | 缺失个数 | 可能原因 | 缺失填充 |
---|---|---|---|---|
date_first_booking | 第一次预定日期 | 124543 | 没有发生预定 | 0 |
age | 年龄 | 87990 | 注册页面不是必填项 | 0 |
first_affiliate_tracked | 第一次预定推销内容 | 6065 | 未经过推销 | untracked |
#缺失值处理
data['age'] = data['age'].fillna(0)
data['first_affiliate_tracked'] = data['first_affiliate_tracked'].fillna('untracked')
data['date_first_booking'] = data['date_first_booking'].fillna(0)
data.info()
处理后不再具有缺失值。
下面对数据进行简单的描述性统计,以便观察数据形态。
data.columns
#'id'标识变量 ;'date_account_created', 账户创建日期;'timestamp_first_active', 第一次活动的时间戳;'date_first_booking', 第一次预定日期
#离散变量:'gender', 'signup_method','signup_flow','language', 'affiliate_channel','affiliate_provider','first_affiliate_tracked', 'signup_app','first_device_type', 'first_browser', 'country_destination'
#连续变量'age'
class_column = ['gender', 'signup_method','signup_flow','language', 'affiliate_channel','affiliate_provider','first_affiliate_tracked', 'signup_app','first_device_type', 'first_browser', 'country_destination']
continuous_column = ['age']
for column in class_column:plt.hist(data[column])plt.title(column)plt.show()print('统计值:',data[column].value_counts())
由于变量较多,这里不再一一列举,用gender这一变量进行举例说明。
取值 | 个数 |
---|---|
-unknown- | 95688 |
FEMALE | 63041 |
MALE | 54440 |
OTHER | 282 |
同理可以观察到连续变量age的直方图分布如下:
可以很明显的看到其中有一些年龄非常大,这是不合实际的,因此需要进行异常值处理,这里将年龄大于100岁的都当做异常值处理成0
#异常值处理
data["age"][data.age>100]=0
#可视化
plt.hist(data.loc[data['age'] != 0 ,'age'])
plt.show()data.to_csv('train_users.csv')
此时年龄的分布就比较正常了,虽然有效的年龄数据并不多,但我们仍然可以看做是整体数据的一个随机抽样,是可以代表整体年龄水平的。
用户画像
首先是用户特点的刻画,根据所有的数据,可以从目标旅行地点、客户性别、客户年龄、客户来源地几个方面获取用户的特点。
上面的动态可视化展示了目标旅行地点、客户性别、客户年龄三个方面的特性,从以上结果中我们大致可以发现几点:
- 除了NDF表示的不明确地点外,目标旅行地点以美国为主,有6万以上的游客,其次是意大利、法国等一些欧洲国家,但需要注意的是以上数据截止到2014年,当时Airbnb还没进入中国市场。
- 性别上排除未采集到的信息和无效信息,整体男女比例FAMALE:MALE=63041:54440,基本持平,说明在Airbnb上的旅行受众没有明显的男女区分。
- 年龄上各个国家的均值及四分位数基本都保持在20-60的范围内,说明用户基本为中青年人群。
以受众最多的美国为例,单独观察其性别和年龄分布:
可以看到在62374的美国旅行地用户中,有22679的女性和19457的男性,男女比例基本持平,男性用户略低,在年龄分布中大部分用户的年龄分布在30-60岁,也符合中青年的受众群体特点。
下面介绍一下客户来源地。
可以看到用户几乎都来自说英语的国家,可以狭义的认为是美国或英国,这是由于当时处于Airbnb发展初期,业务范围主要在西方一些国家。
上面只是简单介绍了用户的来源地,但实际上更有用的分析是获客渠道的分析,即人群接受信息的渠道。
观察上面的图表,可以得到以下信息:
- 用户在注册Airbnb账号时大多数会选择通用的注册方式,但同时使用Facebook账号进行注册的用户也不少,而使用Google账号注册的用户则较少,这可以说明旅行产品和社交网络平台的联合可能是一个潜在的功能,可以开发注册,识别好友,一键分享等功能。
- 在注册方式中,大部分人会选择使用网页注册,那么在网页中投放Airbnb广告可能会获得比较高的获客量,由于数据中没有提供网页注册的转化率情况,这方面暂时没有数据可以支持。
- 在注册设备一方面,注册量比较高的是ipad、iphone、mac三种,这可能是由于本身这三种设备的使用率较高,而且也可以发现的一点是,无论在哪种设备上,注册使用的浏览器前三名分别是Safari、Google、Firefox。
根据以上信息及分析,在Airbnb的广告投放上更好的渠道方案可能是在Safari等常用浏览器的网页投放,可以增加获客量。
营销渠道分析
下面考虑用户的留存效率问题,最直观的指标就是客户的订单转化率,这里我们把客户第一次订单日期为空的用户认为是没有进行下单,从而计算转化率。
先来简单看一下Airbnb2010年-2014年以来用户注册数和订单数变化情况。
可以很清晰的看到:
- 2010-2014无论是用户注册数还是订单数都逐年增加。
- 每年的7、8月份都会有注册数和订单数的小高峰,处于旅行旺季。
- 自2012年以来,注册数和订单数有明显的快速增长是Airbnb的高速发展期。
- 2014年夏天之后,订单数有断崖式下降。
我们可以通过分析不同营销方式和营销内容的转化率来确定之后的营销投放重点:
可以看到:
- 注册量最多的是direct(直接从应用商店下载),用户可能是从网络上获取到相关信息后自行前往应用商店下载,从这里我们无法明显看到营销的效果。
- 还有获客比较高的是Google的sem-brand和sam-non-brand,且相较于sam-non-brand来说sem-brand更高一点。
- 如果从转化率的角度分析,baidu、Yahoo、Google、yandex等几个网站的sem系列推广都比较高,其中Google的转化率和获客都比较高
- 相对而言获客和转化率不太好的有Facebook的content,baidu的转化率虽然比较高,但获客量却不太多。
漏斗分析
session数据表中关于action_detail这一列中,查看具体有哪些项:
SELECT DISTINCTaction_detail
FROMsessions
由于有很多,这里不再一一列出,其中比较重要的几列有:
名称 | 意义 |
---|---|
reservations | 下单操作 |
payment_instruments | 支付操作 |
根据这些变量和数据,我们可以制作转化率漏斗
step1 产生活动的用户数
SELECTCOUNT( DISTINCT user_id )
FROMsessions
共有用户135483。
step2 活跃用户数
规定产生10次以上活动的用户为活跃用户。
SELECTCOUNT( DISTINCT user_id )
FROMsessions
WHEREuser_id IN ( SELECT user_id FROM sessions GROUP BY user_id HAVING COUNT( user_id ) > 10 )
共有活跃用户111977
step3 下单用户数
SELECTCOUNT( DISTINCT user_id )
FROMsessions
WHEREaction_detail = 'reservations'
共有10366用户下单。
step4 支付用户数
SELECTCOUNT( DISTINCT user_id )
FROMsessions
WHEREaction_detail = 'payment_instruments'
实际共有9018用户支付过。
step5 复购用户数
SELECTCOUNT( DISTINCT user_id )
FROMsessions
WHEREuser_id IN (SELECTuser_id FROMsessions WHEREaction_detail = 'payment_instruments'GROUP BYuser_id HAVINGCOUNT( user_id ) >= 2)
有4153用户多次在Airbnb支付。
将以上数据计算比例转化为图形可以得到:
总结分析
同样的,按照文章架构,从用户特点、营销渠道、漏斗分析三个方面稍作总结。
- Airbnb的用户特点为大多数为中青年,男女比例均衡,用户多为美国人,采用网页注册的用户居多(如Google、Firefox等),往往会关联Facebook等社交账号。据此可以给出建议:营销重点为中青年人士,且有巨大的海外市场可以继续挖掘,如一些亚洲、东欧国家,广告更适合在搜索引擎投放,可以与社交平台产生联动。
- 在营销上,Airbnb自2012年起有大幅度的用户增长,但2015年左右有下滑,需进一步分析原因,这就需要优化拉新的措施,例如邀请新用户获得抽奖机会或‘锦鲤’营销等。营销内容中效果比较好的是Google的sem-brand,当然其他营销也有潜力。
- 在漏斗分析中,从活跃用户到下单用户有大幅度下降,转化率仅有9.26%,这是整个链条中需要重点加强的部分,在这方面可以完善推荐系统,例如根据用户的搜索记录,推荐相应的目的地团购、优惠、火爆旅行线路等,增加下单率。
Airbnb(爱彼迎)用户数据分析——tableau可视化和MySQL分析相关推荐
- Airbnb(爱彼迎)产品分析报告
Airbnb(爱彼迎)产品分析报告 一.Airbnb背景 Airbnb成立于2008年,一家联系旅游人士和家有空房出租的房主的服务型网站,它可以为用户提供多样的住宿信息.用户可通过网络或手机应用程序发 ...
- 爱彼迎的数据分析与建模
Airbnb是AirBed and Breakfast("Air-b-n-b")的缩写,爱彼迎是一家联系旅游人士和家有空房出租的房主的服务型网站,它可以为用户提供多样的住宿信息.我 ...
- 淘宝双十二活动复盘——Mysql数据分析+Tableau可视化
项目目录 一.项目介绍 1.1 项目背景 1.2 分析思路 二.数据预处理 2.1 数据来源与认识 2.2 观察数据 2.3 添加字段 2.4 检查空值 2.5 检查重复值 2.6 检查异常值 三.数 ...
- Airbnb 爱彼迎房源详情页中的 React 性能优化
Airbnb 爱彼迎工程师和数据科学家将定期和大家分享移动开发.系统架构.数据科学及人工智能等领域的技术探索和经验心得. 正文从这开始-- 在一些容易被忽视但又非常重要的场景,可能会有许多严重影响性能 ...
- Airbnb爱彼迎2021年第一季度营收同比增长5%
北京时间2021年5月14日,Airbnb爱彼迎发布了2021年第一季度财报."我对我们的强劲业绩感到非常自豪.尽管我们的传统优势领域,即城市旅行和跨境旅行尚未完全恢复,我们的营收水平已经超 ...
- airbnb 爱彼迎开源 Epoxy 优化使用 RecyclerView
airbnb 爱彼迎开源 Epoxy 优化使用 RecyclerView 一.为什么要使用Epoxy RecyclerView 众所周知是在listview和gridview基础上优化缺点,提炼出的一 ...
- Airbnb爱彼迎推出看得见“春色”的房源
春分将至,人们对春暖花开.拾翠踏青的渴望从未如此强烈.打开窗户,温柔的春风令人心生无限遐思,虽然身未动,但心已远行.Airbnb爱彼迎推出八个看得见"春色"的房源,大家可以一同感受 ...
- airbnb爱彼迎python爬虫与简单分析
目的 作为一个挂了几套公寓在airbnb上的小房东,又作为一个喜欢分析数据的小孩子,当学习爬虫的过程中当然要选择爱彼迎这个网站来试手:在网上看到一个大神po的一长串的代码,用了之后的确可以马上爬取,但 ...
- 淘宝电商用户行为数据分析及可视化—基于MySQL/Tableau/PPT(含分析报告及代码)
本项目以阿里巴巴移动电商平台-淘宝APP的真实用户-商品行为数据 User Behavior Data on Taobao App 为基础,使用MySQL进行数据清洗,使用AARRR模型.RFM模型. ...
最新文章
- nanodet onnx踩坑记录
- 脚本启动Tomcat
- How is syntax error in Vue detected
- JAVA入门级教学之(数据转换规则)
- notempty注解属于哪个依赖_Spring框架 之@Valid注解的使用(嵌套类型的效验)
- Ubuntu 中的编程语言(中)
- [原]ASP.Net常用功能整理--生成图片的缩略图
- sqlite 检索的字段结果前加空格_MySQL5.7分词全文检索思路
- ARC官方文档翻译! - iPhone App开发外包专区 - 威锋论坛 - 威锋网
- cmmi实践访谈测试ppt_CMMI3级访谈问题--REQM
- Jquery WeUI 复选框
- MMA-关于mathematica中添加注释的一些方法(包括排版技巧)
- Python3,一行代码实现文件夹共享,看到结果我酸了~
- 焱融科技加入多家行业协会与产业联盟,加速产业互联生态跃迁
- axure9总是崩_axure老是崩怎么办
- 京东探索研究院NLP水平超越微软 织女Vega v1模型位居GLUE榜首
- 《众妙之门——自由网站设计师成功之道》一1.1 迈向成功的几个必要习惯
- Chrome 浏览器书签功能很强大
- 今晚7:30 | CVPR专场五来了!
- Flutter第一部分(UI)第六篇:一文搞懂Flutter中的资源引用机制
热门文章
- ButterKnife使用方法详解
- k8s之configmap
- 最佳解决浏览器中文不兼容或中文乱码转UTF-8的方案
- Echart常见渐变和圆角用法(曲线、柱状图)
- 京东商城欲实现2%利润率 B2C盈利在前行
- 2019Android面试总结(附相关架构及资料),阿里快手拼多多等7家大厂Android面试真题
- LVT | ViT轻量化的曙光,完美超越MobileNet和ResNet系列
- 安全狗服务器自动重启,关于解决安全狗“您的请求过于频繁,已被管理员设置拦截”方法...
- Python 微博奔驰事件爬虫
- 理解操作系统的进程的概念就如吃饭一样简单