Airbnb(爱彼迎)⽤户数据分析——tableau可视化和MySQL分析
本⽂利⽤Airbnb⽤户的注册、订单和⽇志⾏为等数据,从⽤户画像、营销渠道转化率、订单漏⽃分析三⽅⾯进⾏分析。我们需要考虑以下3个问题:
1. 爱彼迎的⽬标⽤户是什么样的⼈?有什么特点?
2. 这些⼈接受信息的渠道有哪些?或者说需求对应出现的场景在什么时候什么地⽅?
3. 以什么样的⽅式给他们传递爱彼迎的产品价值是有效的,印象深刻的?
这三个问题分别定义了传播的对象、渠道、效率。
有了要解决的问题,我们就可以据此来定义相应的分析指标。
⽤户画像描述了Airbnb客户的整体特征,如性别⽐例、年龄分层、所属地⽐例、⽬的地等⼏个⽅⾯进⾏刻画。同时刻画了注册⽤户的设备、账号类别等基本信息,掌握⽤户渠道来源。
营销⽅⾯针对不同营销渠道和营销内容(例如⽹站的不同推⼴计划)的注册量和下单转化率进⾏分析,了解更有效的营销渠道和效果,从⽽有针对性的投放⼴告,节约成本。
订单漏⽃分析根据客户的⾏为⽇志数据对⽤户的活跃程度、下单率、付款率、复购率进⾏了可视化,可以观察整体流程中的薄弱点,从⽽有针对性的提⾼某⼀⽅⾯的转化率。
本⽂参考了⽂章⾥的⼀些指标观点。
数据描述
数据来源于,主要包含以下信息:
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()
data = pd.read_csv('train_users_2.csv')
sum(data['id'].value_counts()==1)#观察是否有重复id
data.info()
对⽐ID数量为1 的ID个数和总数据量,发现并没有重复ID ,说明数据中是没有重复ID 的,ID 可以⽤作主键。
查看16个变量的缺失值情况如下:
id213451 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
mysql下载appaffiliate_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()
处理后不再具有缺失值。
下⾯对数据进⾏简单的描述性统计,以便观察数据形态。
#'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_t ype','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
FEMALE63041
MALE54440
OTHER282
同理可以观察到连续变量age的直⽅图分布如下:
可以很明显的看到其中有⼀些年龄⾮常⼤,这是不合实际的,因此需要进⾏异常值处理,这⾥将年龄⼤于100岁的都当做异常值处理成0
#异常值处理
data["age"][data.age>100]=0
#可视化
plt.hist(data.loc[data['age']!=0,'age'])
plt.show()
<_csv('train_users.csv')
此时年龄的分布就⽐较正常了,虽然有效的年龄数据并不多,但我们仍然可以看做是整体数据的⼀个随机抽样,是可以代表整体年龄⽔平的。
⽤户画像
⾸先是⽤户特点的刻画,根据所有的数据,可以从⽬标旅⾏地点、客户性别、客户年龄、客户来源地
⼏个⽅⾯获取⽤户的特点。
上⾯的动态可视化展⽰了⽬标旅⾏地点、客户性别、客户年龄三个⽅⾯的特性,从以上结果中我们⼤致可以发现⼏点:
1. 除了NDF表⽰的不明确地点外,⽬标旅⾏地点以美国为主,有6万以上的游客,其次是意⼤利、法国等⼀些欧洲国家,但需要注意的
是以上数据截⽌到2014年,当时Airbnb还没进⼊中国市场。
2. 性别上排除未采集到的信息和⽆效信息,整体男⼥⽐例FAMALE:MALE=63041:54440,基本持平,说明在Airbnb上的旅⾏受众
没有明显的男⼥区分。
3. 年龄上各个国家的均值及四分位数基本都保持在20-60的范围内,说明⽤户基本为中青年⼈。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论