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个变量的缺失值情况如下:
可以观察到缺失值情况如下,并分别对其制定相应的缺失值补充:
| date_first_booking | 第一次预定日期 | 124543 | 没有发生预定 | 0 |
| age | 年龄 | 87990 | 注册页面不是必填项 | 0 |
| first_affiliate_tracked | 第一次预定推销内容 | 6065 | 未经过推销 | untracked |
处理后不再具有缺失值。
下面对数据进行简单的描述性统计,以便观察数据形态。
由于变量较多,这里不再一一列举,用gender这一变量进行举例说明。
| -unknown- | 95688 |
| FEMALE | 63041 |
| MALE | 54440 |
| OTHER | 282 |
同理可以观察到连续变量age的直方图分布如下:
可以很明显的看到其中有一些年龄非常大,这是不合实际的,因此需要进行异常值处理,这里将年龄大于100岁的都当做异常值处理成0
此时年龄的分布就比较正常了,虽然有效的年龄数据并不多,但我们仍然可以看做是整体数据的一个随机抽样,是可以代表整体年龄水平的。
用户画像
首先是用户特点的刻画,根据所有的数据,可以从目标旅行地点、客户性别、客户年龄、客户来源地几个方面获取用户的特点。
上面的动态可视化展示了目标旅行地点、客户性别、客户年龄三个方面的特性,从以上结果中我们大致可以发现几点:
以受众最多的美国为例,单独观察其性别和年龄分布:
可以看到在62374的美国旅行地用户中,有22679的女性和19457的男性,男女比例基本持平,男性用户略低,在年龄分布中大部分用户的年龄分布在30-60岁,也符合中青年的受众群体特点。
下面介绍一下客户来源地。
可以看到用户几乎都来自说英语的国家,可以狭义的认为是美国或英国,这是由于当时处于Airbnb发展初期,业务范围主要在西方一些国家。
上面只是简单介绍了用户的来源地,但实际上更有用的分析是获客渠道的分析,即人群接受信息的渠道。
观察上面的图表,可以得到以下信息:
根据以上信息及分析,在Airbnb的广告投放上更好的渠道方案可能是在Safari等常用浏览器的网页投放,可以增加获客量。
营销渠道分析
下面考虑用户的留存效率问题,最直观的指标就是客户的订单转化率,这里我们把客户第一次订单日期为空的用户认为是没有进行下单,从而计算转化率。
先来简单看一下Airbnb2010年-2014年以来用户注册数和订单数变化情况。
可以很清晰的看到:
我们可以通过分析不同营销方式和营销内容的转化率来确定之后的营销投放重点:
可以看到:
漏斗分析
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(爱彼迎)用户数据分析——tableau可视化和MySQL分析的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 数据结构---与树相关的知识
- 下一篇: 在mysql中去除字符串中html标签S