Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】

1.案例背景概述

      近几年,随着在线OTA等第三方渠道的蓬勃发展,消费者的酒店预订变得越来越便捷,另一方面,酒店退订现象逐年增长,成为了困扰酒店的一个难题,并且随着疫后游客的蜂拥而至,酒店退订呈现出急速增长的趋势。因此,深入了解预定取消及其带来的影响将有助于酒店更好地采取营销和管理措施。本小组选取了某度假型酒店2015年到2017年的预订数据,以此建立数据仓库来对酒店的预订取消率进行分析,从而针对该酒店提出绩效考核标准押金制度设置等管理问题解决方案。

2.管理问题提炼及项目研究目标

      将管理问题提炼为通过建立数据仓库和相关分析深入了解酒店退订率的影响因素通过对影响因素的控制来降低酒店预订的退订率。

本项目的研究目标主要分为四个方面:

(1)在客户类型方面,针对不同客户类型的酒店预订取消记录确定细分的营销对象;

(2)在销售渠道方面,根据不同预订渠道的取消记录来设置不同的押金门槛;

(3)在房间信息方面,根据预订记录中不同房间匹配程度的预定取消记录来判断酒店的额服务质量;

(4)在时间方面,根据不同的提前预定时间而对应的预定取消记录来设置最长提前预定时间以及判断高风险时段。

3.研究思路

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第1张图片

 3.1度量值:

本项目度量值为预定情况与取消情况,1表示行为发生,0表示行为不发生,每一条预定记录有其对应的度量值数组,有以下两种情况:

1预定且最终入住(1,0)

2预定但最终取消(1,1)

3.2分析维度

本次分析主要从客户维度、渠道维度、房间维度以及时间维度进行分析:

3.2.1客户维度:

    利用原始数据中对于客户信息的描述,将客户分为“回头客”与“非回头客”两种类型,其中“回头客”根据其历史入住记录以及取消记录分为“忠实顾客”与“波动顾客”。通过对切块数据的分析计算得出不同顾客类型以及与之对应的取消率。

目的:帮助酒店根据取消率为不同类型顾客制定营销策略

3.2.2渠道维度:

    原始数据中对每条预定的实现渠道有详细记录,主要为旅行社预定、公司预定以及个人预定三大渠道,其中旅行社预定分为线上与线下两种形式,本项目将根据不同预定渠道对信息进行切片处理,以得到各预定渠道所对应的取消率

目的:根据各渠道取消率高低以帮助酒店确立押金额度,实施层级押金制度以实现降低取消率以及最小化不良影响。

3.2.3房间维度:

    通过原始数据中对预定房型以及入住房型记录信息,根据二者是否相同分为“匹配房型”与“不匹配房型”两种情况,并且以此为依据进行数据处理,计算出两种情况各自对应取消率。

目的:通过两种类型取消率的大小对比,以说明酒店是否需要在房间管理方面进行加强。

3.2.4时间维度:

    时间维度将从两个方面进行分析:

    (1)提前预定时间:

    通过原始记录中对客户提前预定时间的记录,将预定时间分为“提前一周”、“提前一个月”、“提前半年”、“提前一年”四种情况,并以此为依据进行数据切块,以得到不同情况下取消率。

    (2)入住日期:

    通过原始数据中对顾客入住时间的记录,将入住时间进行“季”、“月”、“周”的切分,以得到各季度、各月、各周所对应的取消率。

   目的:通过时间维度的分析,帮助酒店确定可提前预定时间最大限度,并明确取消率最高的时间段,以决定该时间段是否超额发放预定资格。

4.数据仓库概念模型的构建

4.1星型模型建立

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第2张图片

4.2 各维度信息介绍:

4.2.1客户维度:

根据原有信息:

将客户分为三种类型:

    1. 非回头客:16列信息为0
    2. 忠实回头客:预定次数>=取消次数(18列与19列的差值大于等于零)
    3. 非忠实回头客:预定次数<取消次数(18列与19列的差值小于零)

  

4.2.2 渠道维度:

根据原有信息:

将客户预定渠道分为四种:

    1. 旅行社线上预定(TA/TO on)
    2. 旅行社线下预定(TA/TO off)
    3. 客户个人预定(Direct off)
    4. 团体预定(Group off)

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第3张图片      

4.2.3房间维度:

根据原有信息:

将房间分为两种类型:

    1. 预定与实际类型匹配
    2. 预定与实际类型匹配

4.2.4时间维度:

根据原有信息:

将时间切分为“年-月-周”层次:

(由于周的计数单位为年,因此以“年+周”作为TIME_ID)

4.2.5 预定时长维度:

根据原有信息:

将提前预定情况分为六类:

    1. 提前一个月
    2. 提前三个月
    3. 提前六个月
    4. 提前九个月
    5. 提前一年
    6. 提前两年

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第4张图片

4.3 事实表呈现

以(是否预定,是否取消为度量值)

每条预定信息对应:

  1. 记录编号
  2. 预定时长编号
  3. 房间情况编号
  4. 预定渠道编号
  5. 到达时间编号
  6. 客户类型编号

5.数据源处理及ETL实现

5.1 缺失值处理:

先用函数探查有无缺失值:

探查结果:

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第5张图片

处理方式:

children,country缺失值较少用众数去填充;agent 是旅行社ID,这是没有指定旅行社,通过个人预定,填充为0;company缺失值太多,无法提供有用的信息,直接删除该列

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第6张图片

处理结果:再次获取数据集信息,未发现缺失值

5.2 异常值处理:

adr为平均每日房价,其最小值显示为-6.38,最大值5400,将显示adr显示为负数和超过5000的数据进行删除

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第7张图片

将数据集中客人数量加总为0 的数据删除:

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第8张图片

5.3 数据预处理

对arrival_date_month进行编码,由object转化为数字,方便对数据进行整理

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第9张图片处理结果:

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第10张图片

6.数据仓库构建与部署

6.1 在EXCEL中建立事实表以及维度表

6.2 导入SQL并建立外键关系:

6.2.1事实表:

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第11张图片

6.2.2 维度表:

(1)渠道表:                               (2)客户表:

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第12张图片Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第13张图片 

(3)预定时长表:                         (4)房间表:

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第14张图片 

(5)时间表

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第15张图片

6.2.3 建立外键关系:

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第16张图片

6.3 导入Visual Studio 形成cube

6.3.1 维度建立

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第17张图片

6.3.2 层次设置

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第18张图片

6.4 时间智能实现:

主要实现代码:

(1)求取消率:

[Measures].[Is Canceled]/[Measures].[Is Reserved]

(2)求上年同期量:

([Measures].[Is Reserved],PARALLELPERIOD([Time Table].[年-月-周].[Arrival Date Year],1,[Time Table].[年-月-周].currentmember)

)

(3)求上期量:

([Time Table].[年-月-周].currentmember.prevmember,[Measures].[Is Reserved])

求同比:

case

when  [Measures].[上年同期预定量]<>NULL

THEN  [Measures].[Is Reserved]/[Measures].[上年同期预定量]

ELSE 'N/A'

END

(4)求环比:

case

when  [Measures].[上期预定量]<>NULL

THEN [Measures].[Is Reserved]/[Measures].[上期预定量]

ELSE 'N/A'

END

最终实现:

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第19张图片

可求出以下三类数据的同环比:

    1. 预定量
    2. 取消量
    3. 取消率

6.5 KPI设置

主要实现代码:

  1. 状态设置:衡量是否达到既定目标值

case

when  KPIVALUE( "预定量环比" )>=kpigoal("预定量环比")

then 1

when  KPIVALUE( "预定量环比" )<kpigoal("预定量环比") and   KPIVALUE( "预定量环比" )>=1

then 0

else -1

end

主要针对环比类数值进行设置:

既定目标

预定量环比

1.1

取消量环比

0.8

取消率环比

0.7

  1. 走向设置:反应与同年上期相比状态

case

when  KPIVALUE( "预定量同比" )>kpigoal("预定量同比")

then 1

when  KPIVALUE( "预定量同比" )<kpigoal("预定量同比")

then -1

else 0

end

主要针对同比类数值进行设置:

既定目标

预定量同比

1

取消量同比

1

取消量环比

1

7.OLAP实现

7.1客户维度:

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第20张图片

7.2渠道维度:

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第21张图片

7.3房间维度:

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第22张图片

7.4提前预定时间情况:

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第23张图片

7.5 入住时间情况:

Python + SQL Sever+ VB 数据分析项目【爱彼迎 酒店预定取消率建议】_第24张图片

8.应用OLAP解决管理问题

8.1客户维度:

   经过分析发现酒店2015-2017三年来都是非回头客在进行酒店预订,且三年来取消率都在逐渐上涨。

建议提出:

(1)加大针对曾经有预定记录的客户进行宣传,例如发放优惠券、发送短信等方式。

(2)针对取消率逐年上升的情况,考虑向客户征收一定的定金,一定时间内取消需要赔付定金。

8.2渠道维度:

    经分析发现客户通过旅行社预定的取消率三年始终保持最高,远高于均值且呈上升状态,团体预定取消率排名第二,客户直接预定的取消率最低。

预定渠道

押金金额

免费取消时限

TA/TO(旅行社)

最高

最短

GROUP(团体预定)

DIRECT(直接预定)

最低

最长

建议提出:

    设置梯度保证金制度

8.3房间匹配情况:

   通过分析发现客户预定房型与最终入住房型匹配的情况下取消率会远远高于不匹配的情况,说明入住与预定房型不匹配不是显著影响客户取消决定的因素。但是可明显看出2017年不匹配情况下的取消率有显著上升情况,酒店也需要在客户是否自愿更换房型方面进行信息记录,以便后期分析。

建议提出:

记录换房客人是否自愿,根据数据判断酒店是否需要在客房管理方面做出服务改善

8.4 提前预定时间情况:

    通过分析发现取消率与与预定时间基本呈正相关,提前预定时间越长,取消率越高。提前一个月预定的取消率远低于其他情况。

建议提出:

实施预定时间对标折扣与对应押金制度

(押金梯度1-4逐级递减;折扣1-4级逐级递减)

提前预定时长

押金金额(梯度)

履行入住可得折扣

提前两年

1

1

提前一年

2

2

提前半年

3

3

提前一个月

4

4

8.5入住时间情况:

    通过对2015-2017年三年各月份的取消率进行观测,发现三年来8月份的取消率都排在首位,大概可将6-9月确定为高取消率月。

2017年的同比增长幅度最大,尤其是高取消率月份大幅增长。

建议提出:

    可更多开放6-9月的预约机会,以对冲其极高的取消率,减小酒店损失。

你可能感兴趣的:(sql,big,data,数据仓库,数据结构)