【2023BI数据分析大赛】Lisboa City Hotel 经营分析

楼主
我是社区第2163558位番薯,欢迎点我头像关注我哦~

一、选手简介

1、选手介绍

· 个人介绍:帆软社区用户名lucaluca坐标广州,是数据工程师对数据分析、数据可视化很感兴趣,最近想学数据挖掘相关的内容,有点无从下手哈哈哈。

2、参赛初衷

· 之前没有用过FineBI,觉得以赛促学效率更高,所以报名了。想验证下自己的数据分析能力,也想和FineBI大神们交流学习,希望能有所收获。

二、作品介绍

1、业务背景

1.1 背景介绍

数字化时代,数据已经成为企业决策的关键一环。酒店业作为面向市场的服务业的重要组成部分,数据已存在于酒店业服务的方方面面。通过数据分析,能更好地为酒店经营助力。

City Hotel 位于葡萄牙里斯本,经营状况良好,但决策不能仅凭直觉,管理者们希望借助数据分析,以数据为依托,更直观、更客观地了解酒店的经营情况,并梳理接下来的经营思路。

1.2 需求痛点

     酒店每天都在和数据打交道,但光看一条条预订明细,又无法直接得出业务洞察。

     历史经营数据的统计维度较少,也缺少来自客户方面的评论数据,如何在相对有限的数据中,提取出可能对经营决策有价值的信息,是本次分析的难点。

2、数据来源

· 自选数据:来自Kaggle公开数据集,原始数据为1张表,通过Python清洗整合,得到两张表,还有一张是按网上信息整理的国家名称对照表,共计三张表。

· 链接:https://www.kaggle.com/datasets/jessemostipak/hotel-booking-demand

 

数据源①  Kaggle数据源,清洗后,名称 hotel_bookingsV2

由Kaggle整理,备注由个人补充。清洗时,新增了Order ID用于区分,其实也增加了其他字段,但后续分析没有用上,省略不写。

字段

含义

备注

Order_ID

通过Python添加的索引字段

默认一条数据是一个订单

hotel

Hotel (H1 = Resort Hotel or H2 = City Hotel)

酒店名称,本次只分析 City Hotel 部分

is_canceled

Value indicating if the booking was canceled (1) or not (0)

预约已取消=1,未取消=0

lead_time

Number of days that elapsed between the entering date of the booking into the PMS and the arrival date

预约进入PMS系统之日起,到客户实际抵达之间的天数

arrival_date_year

Year of arrival date

 

arrival_date_month

Month of arrival date

 

arrival_date_week_number

Week number of year for arrival date

 

arrival_date_day_of_month

Day of arrival date

 

stays_in_weekend_nights

Number of weekend nights (Saturday or Sunday) the guest stayed or booked to stay at the hotel

入住或预约入住的夜数(仅统计周末)

stays_in_week_nights

Number of week nights (Monday to Friday) the guest stayed or booked to stay at the hotel

入住或预约入住的夜数(仅统计工作日)

adults

Number of adults

 

children

Number of children

 

babies

Number of babies

 

meal

Type of meal booked. Categories are presented in standard hospitality meal packages: Undefined/SC – no meal package; BB – Bed & Breakfast; HB – Half board (breakfast and one other meal – usually dinner); FB – Full board (breakfast, lunch and dinner)

Undefined/SC – 无餐包; BB – 住宿加早餐; HB – 半食宿(两餐); FB – 全膳

country

Country of origin. Categories are represented in the ISO 3155–3:2013 format

客户来自哪些国家

market_segment

Market segment designation. In categories, the term “TA” means “Travel Agents” and “TO” means “Tour Operators”

细分市场

distribution_channel

Booking distribution channel. The term “TA” means “Travel Agents” and “TO” means “Tour Operators”

分销渠道,Direct--直销、Corporate--协议客户、TO/TA --旅社、GDS--分销系统

is_repeated_guest

Value indicating if the booking name was from a repeated guest (1) or not (0)

老客=1,新客=0,有预订但后面取消了也是老客。

previous_cancellations

Number of previous bookings that were cancelled by the customer prior to the current booking

 

previous_bookings_not_canceled

Number of previous bookings not cancelled by the customer prior to the current booking

 

reserved_room_type

Code of room type reserved. Code is presented instead of designation for anonymity reasons.

预约的房型

assigned_room_type

Code for the type of room assigned to the booking. Sometimes the assigned room type differs from the reserved room type due to hotel operation reasons (e.g. overbooking) or by customer request. Code is presented instead of designation for anonymity reasons.

实际分配的房型

booking_changes

Number of changes/amendments made to the booking from the moment the booking was entered on the PMS until the moment of check-in or cancellation

 

deposit_type

Indication on if the customer made a deposit to guarantee the booking. This variable can assume three categories: No Deposit – no deposit was made; Non Refund – a deposit was made in the value of the total stay cost; Refundable – a deposit was made with a value under the total cost of stay.

押金类型: No Deposit – 无押金; Non Refund – 不退款; Refundable – 可退款

agent

ID of the travel agency that made the booking

 

company

ID of the company/entity that made the booking or responsible for paying the booking. ID is presented instead of designation for anonymity reasons

 

days_in_waiting_list

Number of days the booking was in the waiting list before it was confirmed to the customer

 

customer_type

Type of booking, assuming one of four categories: Contract - when the booking has an allotment or other type of contract associated to it; Group – when the booking is associated to a group; Transient – when the booking is not part of a group or contract, and is not associated to other transient booking; Transient-party – when the booking is transient, but is associated to at least other transient booking

 

adr

Average Daily Rate as defined by dividing the sum of all lodging transactions by the total number of staying nights

已售客房的平均房价,也称平均每日房价,ADR = 订单交易额/停留夜数,默认单位:欧元€

required_car_parking_spaces

Number of car parking spaces required by the customer

所需停车位数

total_of_special_requests

Number of special requests made by the customer (e.g. twin bed or high floor)

数值,仅统计要求的数量,不含具体内容

reservation_status

Reservation last status, assuming one of three categories: Canceled – booking was canceled by the customer; Check-Out – customer has checked in but already departed; No-Show – customer did not check-in and did inform the hotel of the reason why

预约最终状态:Canceled – 已取消; Check-Out – 已退房; No-Show – 未入住但已告知

reservation_status_date

Date at which the last status was set. This variable can be used in conjunction with the ReservationStatus to understand when was the booking canceled or when did the customer checked-out of the hotel

 

 

数据源② 由原始数据源清洗得到明细表,名称:入住日明细

原表是一个订单一条数据,为了分析客户的在店时间,通过Python整理,将数据源1按 OrderID-在店日期(date) 整合为明细。

字段

含义

Order_ID

同数据源1

date

客户实际在店日期,按arrival_datereservation_status_date 统计,一天一条数据

hotel

酒店名称

assigned_room_type

房型

stays_in_weekend_nights

停留天数,仅统计周末,用于核对不用计算

stays_in_week_nights

停留天数,仅统计工作日,用于核对不用计算

adr

平均每日房价,房收入/停留夜晚数

reservation_status_date

离店时间

 

数据源③ 国家名称对照表

字段

含义

ISO3

参考 ISO 3155

Country name

国家英文名

中文

国家中文名

 

3、分析思路

已选定数据源,确认方向:

  • 数据源未包含客户ID,仅通过标签 is_repeated_guest 表示客户是否曾下过单。若下过单又取消了,也算老客,标签不够准确 → 新老客户分析、消费频次Pass
  • total_of_special_requests 不含客户具体的需求,是数值字段 → 语料分析、用户需求分析Pass
  • 数据源未包含利润、成本等数据,房间总数只能推算,放弃用利润、利润率、入住率等指标,可转换为经营指标的字段有 adrOrder ID、是否取消等,因此确定KPI 有效订单数、收入、单均收入、取消率,入住率用已售房数替代。  经营分析OK

 

报告可分解为四个部分:

a.指标一览,通过KPI与趋势图等,判断经营情况,确认问题;

旅游业、酒店业一般有淡旺季,选用同比、同期累计。除了KPI,再加上趋势图,在“确认问题”上方向更准。

b.经营分析,了解多个关键维度情况,发现与所确认问题相关的因素;

上一部分初步定下了两个方面:取消(退订)、增速减缓 -- 在可视化报告部分详细阐述

 

关于酒店的维度,按5W2H为思路,按实际字段,拆解为:

  • why:终极问题,酒店经营情况如何?直接问题,为什么退订那么多?
  • where:客户来自哪里?
  • who:客户是谁,主要客户群是哪个?
  • when:入住时间有什么趋势?
  • what:客户多选择什么房型不同客户群选择上有什么差异
  • how:渠道、市场细分、押金模式,以上维度与如何获客,或客户行为有关
  • how many:房型部分有探讨adr,因此这部分讨论留宿时长。

 

思路:

拆解时间维度,看指标的时间趋势;

对比分析,因为海内、外客户市场在退订率、下单量都有较大区别;

围绕why问题,按w/h维度分析拆解,探究用户情况,确认与取消率的关系;

 

c.问题诊断,确认导致问题的因素、下一步的措施;

d.总结与建议

 

 

4、数据处理

数据清洗利用 Python+FineBI 

  • Python

第一个数据源,做数据预览,判断数据质量,添加Order ID标签。

注:数据源1条记录代表预订一个房间,时间颗粒度到天,且不显示客户ID,整个数据源存在重复项正常。重复项中有相当多为正常入住,因此不对数据进行去重。

 

 

第二个数据源,在第一个数据源基础上,将按订单聚合 整合为按订单-日期 的明细数据。

注:由于存在入住天数为0adr>0的数据,属于有效数据(小时房),故每条订单停留天数N+1导出,再在FineBI中按条件二次过滤。

 

第二个数据源效果如下

  • FineBI

清理逻辑 -- 过滤、缺失值填充、异常值处理、字段设置等。

 

5、可视化报告

Part1 KPI一览与趋势

5.1.1 指标定义

KPI

具体指标

定义

年有效订单

年有效订单

抵达日为节点,当年未取消的订单数之和

同期累计

从上年1月到上年同期的累计值

同期累计%

2017有效订单/2016同期累计有效订单-1

年收入

年收入

单笔收入=adr*夜晚数,按年汇总所有有效订单

同期累计%

2017收入/2016同期累计收入-1

年单均收入

年单均收入

年收入/年有效订单数

同期累计%

2017单均收入/2016同期累计单均收入-1

8月有效订单

8月有效订单

抵达日为节点,8月未取消的订单数之和

同比

当月有效订单/去年同期有效订单-1

8月收入

8月收入

单笔收入=adr*夜晚数,汇总8月有效订单

同比

当月收入/去年同期收入-1

8月单均收入

8月单均收入

当月收入/当月有效订单数

同比

当月单均收入/去年同期单均收入-1

年订单取消率

 

抵达日为节点,年取消数/年总下单数

本国订单取消数

本国订单取消数

country=PRT,年取消订单总数

本国订单取消率

2017未取消本国订单数/2017本国订单数

海外订单取消数

海外订单取消数

country !=PRT,年取消订单总数

海外订单取消率

2017未取消海外订单数/2017海外订单数

 

 5.1.2 构图

 

5.1.3 效果

观察:

  • 以抵达日为节点,8月有效订单较去年同比略降5%
  • 年取消率、年取消数指标,相对去年都是升高的,今年取消率达到42.62%,需要重视。

 

1-3按客户实际在店日期统计

观察:

  • 今年已售房数波动更小,且维持在不错的高位(图1),ADR收入较去年有提升(图3),说明整体经营良好;
  • 折线图可以看出,5-10月是市场整体活跃的时间段(图23),但今年7-8月已售房数上升变缓(图2,在店统计),8月有效订单较去年同期下降5个百分点(图4,到店统计)。

因此,从市场来看、从同期来看,Q3是可能做到更好的。

 

 

总结

截至20178CH各项指标表现良好,有效订单数、住房收入、单均收入,比去年同期累计都有所提高,经营势头整体向好。

同时,有两个问题不容忽视:

1、订单退订问题,较去年同期累计,取消率提升9.67%,本国订单退订率高达65.5%;海外订单取消数涨幅最大,增加了2181;海外市场方面,法国、德国、英国等退订数过高;意大利、巴西等退订率过高,也应予以关注。

-- 葡萄牙:历史整体退订率高;海外:由于订单的增多,相应的取消量也上升;退订率有上涨的趋势。

2、无论是按到店日统计,还是按在店日统计,8月订单增速放缓

 

 

 

Part2 经营分析(维度分析)

注:【3、分析思路】提及,按5W2H延伸,梳理酒店经营情况

客户来源(where):客户来源国主要集中在欧洲、北美、南美,以欧洲最多,除了葡萄牙,客户主要来自法国、英国、德国、西班牙。

 

订单分布:预计2017到店的订单中,

① 本国Q3 下滑明显,仅1239笔,本地市场取消率高达64%,平均每个周期退订率都很高,是亟需应对的问题;

② 外国订单表现更强劲,Q3下单数5434,取消率保持在相对稳定的23%,但退订率仍有走高的趋势,需注意。

 

-- 从外国订单表现看,当前市场仍有活力,可能需要对葡萄牙市场做市场调研,或增加宣传投放。

 

客户构成(who)以成人双人旅客、单人旅客为主,房收贡献接近80%左右,我们发现,家庭客户(父母+孩子)平均ADR要更高,而我们当前对这部分客户的开发较少,还有一定的市场潜力。

 

入住时段(when):从月趋势观察,入住呈现季节性波动,5-10月为旺季,冬季入住率一般。

 

房型(what):酒店有8种类型的房间,日均价在€100~€200 ,A房、D房是酒店主推房型,售价中等,在2017年所有到店订单中占90%。房型 E、F、G 售价偏高,但预定用户较少,售出率不理想。B、C、K房型在价格上区分度不高,且用户的订购率一般,建议对房型重新整合。家庭用户除了A、D房,最倾向预订E、F、G房型。

 

渠道(how):本土市场主要通过TA/TO渠道获客,但其退订率异常高,应关注。海外市场通过官网预订(Direct)更多,但本地推广度一般。

市场细分(how):葡萄牙-细分市场的 Offline TA/TO渠道、Groups渠道,取消率极高,应关注。Online TA 是 CH 海外获客的重要途径,目前该途径有高获客量、高取消率的特点,应关注。

 

押金模式(how):No Deposit 是最主要的模式,占订单80%以上;Non Refund模式问题也最明显,选择此模式的用户99%的概率会退单,应注意。

 

留宿时长(how many):双人旅客、家庭旅客,停留时间最长,平均3天;单人客户平均停留1天;外国客户平均的停留时间、平均每日房价,要略高于本国客户。

 

总结

(1)与客户取消有关的重要因素可能是:客户细分、押金类型。

  • 葡萄牙市场Groups,Offline TA/TO 两个渠道 ,  整体市场 押金模式 为non refund 的部分,取消率非常高,需要进一步追踪。

(2)家庭客户是潜力客群,可加强开发力度。

  • 平均房收贡献,平均数高于双人、单人等常规客户;
  • 平均留宿天数,相对较长,3天;
  • 除了A、D房型,此群客户最倾向于选择E、F、G等adr相对更高的房型。

 

 

Part3 从上述两部分得出的初步结论,定位问题点。

退订率问题

 

1、葡萄牙市场退订率异常

葡萄牙问题:虽然2017退订增量不大,但历史整体退订率高达60%,更为严峻。(排查整体)

建议追溯 市场细分 Groups, Offline  TA/TO 两个渠道、押金Non Refund 模式,同时,定位到 Agent_ID =1 的机构,在所有历史年份中,订单的取消高达4000+

若要进一步跟踪,还需要更多交易细节。

 

2、海外市场部分退订有走高风险

海外问题:随着订单增多,退订数也变高了,且整体有走高的风险 (主要排查当年)

法国、德国、英国等退订数高的地区,意大利、巴西等退订率高(Part One);海外的 Online TA 渠道有高获客量、高取消率的特点(Part Two)。

最终定位,Agent_ID =9 的机构,取消比例极高,且以上国家经过了此机构,且渠道是 Online TA

若要更进一步跟踪,还需要更多交易细节。

 

3、退订率高,还与一个因素相关:提前预约天数

提前预约天数越大,客户取消预约的概率越高。

 

 

 

Part4 总结与建议

Lisboa City Hotel 酒店 2017年度1-8月经营状况整体不错。

年有效订单数、年收入、年单均收入,较去年同期累计(20161-8月),上升5%26%19%,当月指标较去年同期,也有一定提升。

 

值得进一步关注的问题是:

订单退订问题,较去年同期累计,取消率提升9.67%,本国订单呈现高退订率的特点,高达65.5%;海外订单取消数涨幅最大,提升了2181;海外市场方面,法国、德国、英国等退订数过高;意大利、巴西等退订率过高,也应予以关注。

② 无论是按 “到店日” 统计,还是按 “在店日” 统计,8月订单增速放缓

 

总体而言,本地市场方面,2017Q3订单下滑严重,取消率高达64%;海外市场方面,订单数已远超本国,但退订率仍有走高的趋势,法国、德国、英国呈现高退订数,巴西、意大利呈现高退订率。

 

因此,本次分析的方向是查明并降低取消率、找到业务增长点

 

一、取消率

① 葡萄牙:针对取消率一直较高的问题,应追溯:市场细分 Groups, Offline TA/TO 两个渠道、押金 Non Refund 模式订单交易明细,进一步确认原因。同时,发现 Agent_ID =1 的机构,在所有历史年份中,订单的取消高达4000+

② 海外市场,Online TA 目前该途径有高获客量、高取消率的特点,发现是 Agent ID=9 也存在异常,且上述提及高退订、高退订率国家均与此渠道有关。

提前预约天数越长,取消率越高。

 

建议

a) 排查 Agent 渠道,特别是 ID=1ID=9

b) 排查葡萄牙 Groups,Offline TA/TO 两个渠道 ,  押金模式 non refund 渠道

c) 针对提前2个月以上预约的客户,试点推出押金预约制;

d针对退订客户,通过电邮、短信回访,推送酒店问卷,做好客户关怀并尽可能收集客户反馈;

 

 

二、业务增长点

在盘点中,我们发现酒店 BCK在夜均ADR上与AD区分不大,但订购比例不够理想。

双人客户、单人客户,是当前最主要的客户群,房收贡献接近80%,但 家庭客户 平均ADR要更高、停留时间长、更倾向于预订 E、F、G 房型,有一定的市场潜力。

着力方向是 推广、客户挖掘、改善

 

建议

a针对本地订单下滑的问题,应做好本地的市场调研、在线投放、推广;

b挖掘家庭客户,宣传上可突出Family Time 等概念;

c) 对于房型,规划房型比例;在预订信息中,提及各个房型的亮点,吸引客户预订;

d做好旅客到店、离店等节点的客户关怀,提高用户粘性。

 

 

 

最终结果呈现的页面布局(实际颜色更亮)

 

 

三、参赛总结

1、FineBI工具

· 点赞

布局调整非常方便;主题模型,对于多数据源分析也非常友好;有亮点,也有惊喜,希望帆软越来越好!

· 吐槽

一、FineBI计算丰富度和灵活度差一些,且不支持在字段上做临时计算(逻辑判断)。

二、整体10w+数据量,FineBI做报表用下来宕机了好多次,电脑那叫一个烫手。

三、最崩溃的在于,已经在文本组件上写好的内容,会突然消失,然后重新写一遍

第一点可以慢慢克服,第二三点希望改进下吧 _(:з」∠)_

 

2、心得体会

这次选数据源真的一波三折,出于各种原因,加上时间很赶,很多内容也没有做出来,有点遗憾。

但说到底,数据分析最重要的是分析思维,而不是工具,工具只能是锦上添花。数据分析上能学的还有太多。下次有机会还会再来参加,期待看到本次参赛的其他选手的作品~

分享扩散:
参与人数 +1 F币 +2000 理由
兔子酱 + 2000 恭喜荣获“最佳展现创意奖”

查看全部评分

沙发
发表于 2023-8-14 20:15:15
恭喜通过大赛初审!!

如果使用本地BI制作,请确保提交的附件resources.zip内容完整(附件如有更新请微信发送苏茜);组委会将在8月16日后统一进行作品资源迁移,将您的作品导入大赛公共平台,形成在线模板查看链接,方便评委查看。

截止8月16日20:00仍可继续修改完善,期待选手完善之后的作品~~
板凳
发表于 2023-9-7 14:11:59
打卡:
最近对经营分析也比较感兴趣,整个报告的分析思路还是很清晰的。在这里说几点自己的想法:
1、在列出主要KPI指标的时候,我觉得有一点可能是忽略了,那就是目标,例如年收入目标。因为有了目标之后,我们才能知道现在的运营情况是好还是坏,按照目前的时间进度,我们能否按时达成年收入的目标。有了目标我们也可以更快的定位出差距在哪里?例如是某个渠道差了还是某类客户下降了。
2、文章出现:若要更进一步跟踪,还需要更多交易细节。看到这句话我非常有感慨,不知道作者平时工作会不会有同样的感受。通过数据分析,我们似乎很容易定位到问题所在,但是一旦问你造成这一问题的深层原因是什么,我们往往会很无力。其实很多时候,数据分析师掌握的信息是非常有限的,想要做出全面的分析,确实具有挑战。
PS:作者对数据挖掘感兴趣,有时间可以交流交流
参与人数 +1 F币 +6 理由
兔子酱 + 6 打卡奖励-最走心评论

查看全部评分

地板
发表于 2023-9-7 15:32:18
酒店经营比较重要的一点应该也是满房率吧,虽然取消比较多,但是最终都是满房,那取消应该也不是影响经营的主要问题吧?
另外对于酒店经营,分析客户的来源,应该目标也是为了提高收入吧,客房入住量*客房单价才是酒店就应收入吧,那客房量一定的情况下,如何提高客单价是可以分析的一个方向吧,更何况酒店的客房价格是随行就市来进行调整的,越早被预定,也有可能价格并不一定是对酒店最有利的?
最后就是客源来源渠道,来源渠道应该需要跟渠道的投入成本做结合,这样才能综合分析渠道客源是否合适呢?
参与人数 +1 F币 +2000 理由
兔子酱 + 2000 恭喜荣获 最佳展现创意奖

查看全部评分

5楼
发表于 2023-9-8 00:16:13

python+finebi,棒棒的。
这个浏览器插入表格,的确是不太尽如人意,我也遇到表格显示不全的问题,拖拉好久结果变得有点小。
楼主的英文不错,赞。
把枯燥的订房信息,通过5W2H的思路,转化为各种KPI指标及对比,趋势图,对本土和海外市场对比,列举了退房的因素,有点意犹未尽,嘿嘿
没想到楼主选了这么多的数据,分析起来电脑肯定累啊,要买个好电脑咯,然后可以用FineReport挖出来有用的数据,以免电脑太烫了,

参与人数 +1 F币 +1 理由
兔子酱 + 1 打卡奖励

查看全部评分

6楼
发表于 2023-9-8 12:23:35
打卡:数据处理让人眼花缭乱,学好python果然厉害!整个报告也显露出一种国际范儿!学习了!
参与人数 +1 F币 +1 理由
兔子酱 + 1 打卡奖励

查看全部评分

7楼
发表于 2023-9-15 14:06:54
打卡:作品分析思路清晰,数据量大、配合使用Python进行数据处理,厉害!仪表版配色统一风格清爽,是一份优秀的作品。
参与人数 +1 F币 +1 理由
兔子酱 + 1 打卡奖励

查看全部评分

8楼
发表于 2023-9-16 17:03:41
打卡:
工具运用的很多,整体的分析思路很棒,值得实际业务的借鉴,UI设计的整机很舒服。让人觉得挺不错的,整体故事化的讲解,逻辑贯穿始终
9楼
发表于 2023-9-21 09:01:19
打卡:
报告分析思路清晰,逻辑严谨,结论有针对性。在指标一览与趋势部分,通过同比、同期累计等指标,初步判断酒店经营情况整体向好,但存在退订率、增速减缓等问题。在经营分析部分,按5W2H拆解维度,深入探究酒店经营情况,总体而言,报告客观分析了酒店经营情况,提出了切实可行的建议,对酒店经营有一定的参考价值。如果在在问题诊断部分,可以针对退订率问题,提出更具体的解决方案也许更有价值。
参与人数 +1 F币 +1 理由
兔子酱 + 1 打卡奖励

查看全部评分

10楼
发表于 2023-9-21 09:08:48
这是我看到第一份全球视角分析的案例,经营分析中5W2H用到了极致。报告结尾问题点也抓的非常精准
参与人数 +1 F币 +1 理由
兔子酱 + 1 打卡奖励

查看全部评分

11楼
发表于 2023-10-12 17:50:49
打卡:经营主题,完整的数据分析过程,从背景,数据处理,数据建模,展示,分析,结论,不愧是最佳展现创意奖,学习了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表