开启了第一个数据分析的项目,针对于航空公司价值的分析。客户关系管理的关键问题是客户分类,通过客户分类,区别无价值客户,高价值客户,企业针对不同价值的客户制定优化的个性化服务方案,采取不同的营销策略,将有限营销资源集中于高价值客户,实现企业利润最大化目标。
1)借助航空公司客户数据,对客户分类。
2)对不同的客户类别进行特征分析,比较不同客户的客户价值。
3)对不同价值的客户类别提供个性化的服务,制定相应的营销策略。
目标是客户价值识别,通过航空公司客户数据识别不同价值的客户,识别客户价值应用最广泛的模型是通过三个指标(最近消费时间间隔(Recency),消费频率(Frequency)和消费金额(Monetary))来进行客户细分,识别出高价值客户,简称RFM模型。
本案例将客户关系长度L,消费时间间隔R,消费频率F,飞行里程M和折扣系数的平均值C五个指标作为航空公司识别客户价值目标,记为LRFMC模型。
航空公司客运信息挖掘主要包括以下步骤。
1)从航空公司的数据源中进行选择性抽取与新增数据抽取分别形成历史数据和增量数据。
2)对步骤1)中形成的两个数据集进行数据探索分析与预处理,包括数据缺失值与异常值的分析探索,数据的属性规约,清洗与变换。
3)利用步骤2)中形成的已完成数据预处理的建模数据,基于旅客价值的LRFMC模型进行客户分群,对各个客户群进行特征分析,识别出有价值的客户。
4)针对模型得到不同的价值的客户,采用不同的营销手段,提供定制化的服务。
本案例的探索分析是对数据进行缺失值分析与异常值分析,分析出数据的规律以及异常值。通过对数据观察发现原始数据中存在票价为价值,价值最小值为0,折扣率最小值为0,总飞行公里数大于0的记录。票价为空值的数据可能是客户不存在乘机记录造成,其他的数据可能是客户乘坐0折扣机票或者积分兑换产生的。
查找每列熟悉观测值中空值的个数,最大值,最小值的python代码。
# 对数据进行基本的探索
# 返回缺失值个数以及最大最小值
import pandas as pd
datafile = '../Data/air_data.csv' # 航空原始数据
resultfile = '../Tmp/explore.xls' # 数据探索结果
data = pd.read_csv(datafile, encoding= 'utf-8') # 指定为UTF-8编码格式
print(data)
explore = data.describe(percentiles= [], include= 'all').T
# 对数据的基本描述,percenttiles参数是指定计算多少的分位数表(1/4分位数,中位数)
explore['null'] = len(data) - explore['count'] # describe()函数自动计算非空数值,需要手动计算空值数
explore = explore[['null', 'max', 'min']] # 只选取部分探索结果
explore.colums = ['空值数', '最大值', '最小值'] # 表头重命名
# describe()函数自动计算的字段有count(非空值数),unique(唯一值数),top(最高频者)
# freq(最高频数),mean(平均值),std(方差),min(最小值),50%(中位数),max(最大值)
print(explore)
explore.to_excel(resultfile) # 导出结果
#result
null max min
MEMBER_NO 0 62988 1
FFP_DATE 0 NaN NaN
FIRST_FLIGHT_DATE 0 NaN NaN
GENDER 3 NaN NaN
FFP_TIER 0 6 4
WORK_CITY 2269 NaN NaN
WORK_PROVINCE 3248 NaN NaN
WORK_COUNTRY 26 NaN NaN
AGE 420 110 6
LOAD_TIME 0 NaN NaN
FLIGHT_COUNT 0 213 2
BP_SUM 0 505308 0
EP_SUM_YR_1 0 0 0
EP_SUM_YR_2 0 74460 0
SUM_YR_1 551 239560 0
SUM_YR_2 138 234188 0
SEG_KM_SUM 0 580717 368
WEIGHTED_SEG_KM 0 558440 0
LAST_FLIGHT_DATE 0 NaN NaN
AVG_FLIGHT_COUNT 0 26.625 0.25
AVG_BP_SUM 0 63163.5 0
BEGIN_TO_FIRST 0 729 0
LAST_TO_END 0 731 1
AVG_INTERVAL 0 728 0
MAX_INTERVAL 0 728 0
ADD_POINTS_SUM_YR_1 0 600000 0
ADD_POINTS_SUM_YR_2 0 728282 0
EXCHANGE_COUNT 0 46 0
avg_discount 0 1.5 0
P1Y_Flight_Count 0 118 0
L1Y_Flight_Count 0 111 0
P1Y_BP_SUM 0 246197 0
L1Y_BP_SUM 0 259111 0
EP_SUM 0 74460 0
ADD_Point_SUM 0 984938 0
Eli_Add_Point_Sum 0 984938 0
L1Y_ELi_Add_Points 0 728282 0
Points_Sum 0 985572 0
L1Y_Points_Sum 0 728282 0
Ration_L1Y_Flight_Count 0 1 0
Ration_P1Y_Flight_Count 0 1 0
Ration_P1Y_BPS 0 0.999989 0
Ration_L1Y_BPS 0 0.999993 0
Point_NotFlight 0 140 0
本案例中采用数据清洗,属性规约与数据变换的预处理方法。
通过数据探索分析,发现数据中存在缺失值,票价最小值为0,折扣率最小值为0,总飞行公里数大于0的记录。由于袁术数据量大,这类数据所占比例较小,对于问题影响不大,因此对其进行丢弃处理。
丢弃票价为空的记录。
丢弃票价为0,平均折扣率不为0,总飞行公里数大于0的记录。
使用pandas对满足清洗条件的数据进行丢弃,处理方法:满足清洗条件的一行数据全部丢弃。
# 数据清洗,过滤掉不和规则的数据
import pandas as pd
datafile = '../Data/air_data.csv' # 原始数据
cleanfile = '../Tmp/data_cleaned.csv' # 清洗后的数据
data = pd.read_csv(datafile, encoding='utf-8') # 采用UTF-8格式
# 只保留票价非零的,或者平均折扣率与总飞行公里数同时为0的记录
index1 = data['SUM_YR_1'] != 0
index2 = data['SUM_YR_2'] != 0
index3 = (data['SEG_KM_SUM'] == 0 ) & (data['avg_discount'] == 0) # 该规则是“与”
data = data[index1 | index2 | index3] # 该规则是或
print(data)
data = data[['LOAD_TIME', 'FFP_DATE', 'LAST_TO_END', 'FLIGHT_COUNT', 'SEG_KM_SUM', 'avg_discount']] # 选取这六个属性
data.columns = ['LOAD_TIME', 'FFP_DATE', 'LAST_TO_END', 'FLIGHT_COUNT', 'SEG_KM_SUM', 'AVG_DISCOUNT'] # 重命名列名
print(data)
data.to_csv(cleanfile)
# 属性选择后的数据集
数据变换是将数据转换成“适当的”格式,以适应挖掘任务及其算法的需要。,本案例中主要采取的数据变换方式为属性构造和数据标准化。
由于原始数据中并没有直接给出LRFMC五个指标,需要通过原始数据提取这五个指标,具体的计算方式如下。
1)L = LOAD_TIME - FFP_DATE
会员入会时间距观测窗口结束的月数 = 观测窗口结束时间 - 入会时间
2) R = LAST_TO_END
客户最近一次乘坐公司飞机距观测窗口结束的月数 = 最后一次乘机时间至观察窗口末端时长。
3) F = FLIGHT_COUNT
客户在观测窗口内乘坐公司飞机的次数 = 观测窗口的飞行次数
4) M = SEG_KM_SUM
客户在观测时间内在公司累计的飞行里程= 观测窗口的总飞行公里数
5) C = AVG_DISCOUNT
客户在观测时间内乘坐舱位所对应的折扣系数的平均值 = 平均折扣率
五个指标的数据提取后,对每个指标数据分布进行分析,其数据的取值范围进行处理,需要进行标准化。标准差标准化处理的python代码为
# 标准差标准化
import pandas as pd
datafile = '../Data/zscoredata.xls' # 需要进行标准化的数据文件
zscorefile = '../Tmp/zscoreddata.xls' # 标准差化后的数据存储路径文件
# 标准差化处理
data = pd.read_excel(datafile)
data = ((data - data.mean(axis = 0)) / (data.std(axis = 0))) # 实现了所有数据的标准差化 (axis = 0)为按列标准差化
data.columns = ['Z'+i for i in data.columns] # 表头重命名
print(data)
data.to_excel(zscorefile, index= False) # 数据写入
# result
ZL ZR ZF ZM ZC
0 1.689882 0.140299 -0.635788 0.068794 -0.337186
1 1.689882 -0.322442 0.852453 0.843848 -0.553613
2 1.681743 -0.487707 -0.210576 0.158569 -1.094680
3 1.534185 -0.785184 0.002030 0.273091 -1.148787
4 0.890167 -0.426559 -0.635788 -0.685170 1.231909
... ... ... ... ... ...
62039 0.590805 -0.938881 1.986351 2.694820 -0.499506
62040 0.578774 -0.086114 0.072898 0.163414 0.366201
62041 0.592928 -0.796753 0.710716 1.607265 -0.932360
62042 0.575235 -0.211715 -0.423182 -0.187230 -0.661826
62043 0.529234 -0.376980 0.143767 0.616752 0.041561
客户价值分析模型构建主要是有两个部分组成,第一个部分根据航空公司客户五个指标的数据,对客户进行聚类分群。第二部分结合业务对每个客户进行特征分析,分析器客户价值,对每个客户群排名。
采用K-Means聚类算法对客户数据进行客户分群,聚成五类
# K-Means 聚类算法
import pandas as pd
from sklearn.cluster import KMeans # 导入K均值聚类算法
inputfile = '../Tmp/zscoreddata.xls' # 待聚类的数据文件
k = 5 # 聚类的个数
# 读取数据进行聚类分析
data = pd.read_excel(inputfile)
# 调用K-Mean算法
kmodel = KMeans(n_clusters= k, n_jobs= 4) # n_jobs 是并行数
kmodel.fit(data) # 训练模型
center = kmodel.cluster_centers_ # 查看聚类中心
label = kmodel.labels_ # 查看各样本对应的类别
print(center)
print(label)
根据对每个客户群进行特征分析,采取以下的一些营销手段和策略,为航空公司的价值客户群管理提供参考。
(1)会员升级与保级
航空公司的会员分为很多类,其中非普通卡会员可以统称为航空公司的精英会员。成为精英会员一般都是要求在一定时间内内积累一定的飞行里程,达到这种要求后就会在有效期内成为精英会员,并享受相应的高级别服务。有效期快结束时,根据相关评价方法确定客户是否有资格继续作为精英会员,然后对该客户进行相应的升级或降级。
然而,航空公司可以在对会员升级评价的时间点之前,对那些接近但尚未到要求的比较高消费客户进行适当提醒升值采取一些促销活动,刺激他们消费达到相应指标。这样既可以获得收益,同时也可以提高客户的满意度,增加了公司的精英会员。
(2)首次兑换
航空公司常用首次兑换或者免费升舱来吸引客户。也就是客户端里程或者航段积累到一定程度时才可以实现第一次兑换,这个标准会高于正常的里程兑换标准。但是很多公司的里程积累随着时间会进行一定的消减,这样会导致许多不了解情况的会员白白损失自己的里程,甚至总是难以实现首次兑换。同样,这样会引起客户的不满,可以采取的措施时从数据库中提取出接近但是尚未达到首次兑换标准的会员,对他们进行提醒或者促销,是他们通过消费达到标准。这样会提高客户的满意度。
(3)交叉销售
通过与银行发行联名卡等措施来提高客户的粘性,时客户在其他企业的消费过程中获得本公司的积分,增强与公司的联系,提高他们的忠诚度。
客户识别和发展期为客户关系打下基石,但是这两个时期带来的客户关系时短暂的,不稳定的。企业要获取长期的利润,必须具有稳定的,高质量的客户。保持客户对于企业时至关重要的,不仅是因为争取一个新的客户的成本远远高于维持老客户的成本,更重要的时客户流失会造成公司收益的直接损失,因此,在这一时期,航空公司应该努力维护客户关系,使之处于较高的水准,最大化生命周期内公司与客户的互动价值。
这个项目主要是分析了航空公司如何维持客户的关系,最大化客户关系,获取更高的收益。同时提升公司的业务水平,并进一步优化公司的管理模式。为成功上市做好前期工作。