一.概述
背景:某航空公司需要以客户为中心,按照客户的需求,在对客户的特点了解上使用不同的营销手段,目的是争取更多新客户,降低客户流失率,降低服务成本,提高业务收入,增加 ARPU值(average revenue per user 每个用户的平均收益,一般以月为单位),进行精准的市场营销策略制定。
目标: 对公众客户(客户分为公众客户、商业客户即公司、大客户)进行分群,根据客户信息,对客户进行分类。针对不同类型客户进行特征提取,分析不同类型客户的价值。采取个性化服务,根据客户类型,制定相应营销策略。
**方法:**识别客户价值应用最广泛的模型是RFM模型。
-
最近消费时间间隔(Recency)
-
消费频率(Frenquency)
-
消费金额(Monetary)
**模型修改:**由于航空公司票价受到飞行距离、舱位等级等多种因素影响,同样消费金额的不同旅客对航空公司的价值是不同的。因此单纯的RFM模型并不是适用航空客户价值分析。所以选择客户在一定时间内累积的飞行里程M和客户在一定时间内的平均折扣率C两个指标代替消费金额。另外再增加一个指标就是会员入会时间,这个指标在一定程度也会影响客户价值。
最终指标:L:入会时间 R:最近乘坐航班 F:飞行次数 M:累积飞行里程 C:平均折扣率 (LRFMC模型)
总体流程图如下
项目数据说明:
构造LRFMC指标:
L=LOAD_TIME - FFP_DATE(观测窗口的结束时间 - 入会时间)
R=LAST_TO_END(最后一次乘坐飞机距观测窗口结束的时长)
F=FLIGHT_COUNT(观测窗口内的飞行次数)
M=SEG_KM_SUM(观测窗口内的总飞行里程)
C=AVG_DISCOUNT(平均折扣率)
二. 数据探索分析
导包:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
datafile= 'air_data.csv'
data = pd.read_csv(datafile, encoding = 'utf-8') #读取原始数据,指定UTF-8编码。
data.shape #查看数据结构
# 对数据的描述,探索性分析
explore = data.describe().T # T是转置,转置后更方便查阅。
explore
explore['null'] = len(data)-explore['count'] # describe()函数自动计算非空值数,需要手动计算空值数
explore = explore[['null', 'max', 'min']]
explore.columns = ['空值数', '最大值', '最小值'] # 表头重命名
explore
通过观察发现原始数据中存在票价为空,票价最小值为0,折扣率最小值为0、总飞行记录大于0的记录。
票价为空可能是客户不存在乘机记录,其他数据可能是客户乘坐0折机票,可将这些数据删掉。
三. 数据预处理
过滤
a.票价为空的记录
b.票价为0、平均折扣率不为0、总飞行距离大于0的记录 (可能是积分兑换)
(1)数据清洗
data=data[data['SUM_YR_1'].notnull()*data['SUM_YR_2'].notnull()]# 保留票价非空值 【SUM_YR_1和SUM_YR_2分别表示第一年、第二年总票价】
# 只保留票价非零的,或者平均折扣率与总飞行公里数同时为0的记录。
index1 = data['SUM_YR_1'] != 0
index2 = data['SUM_YR_2'] != 0
index3 = (data['SEG_KM_SUM']