毕业设计之 ---基于大数据分析的航空公司客户价值分析


0 前言

今天学长给各位同学分享一个大数据分析项目,可以用作毕业设计哦~

1 数据分析背景

面对激烈的市场竞争,各个航空公司相继推出了更优惠的营销方式来吸引更多的客户,国内某航空公司面临着常旅游客流失、竞争力下降和航空公司资源未充分利用等经营危机。

结合该航空公司已积累的大量的会员档案信息和其乘坐航班记录,实现以下目标:

  • 借助航空公司客户数据,对客户进行分类
  • 对不同的客户类别进行特征分析,比较不同类客户的客户价值
  • 对不同价值的客户类别提供个性化服务,制定相应的营销策略

2 分析策略

2.1 航空公司客户价值分析的LRFMC模型

在RFM模型中,消费金额表示在一段时间内客户购买该企业产品的金额的总和。由于航空票价受到运输距离、舱位等级等多种因素的影响,同样消费金额的不同旅客对航空公司的价值是不同的,例如,一位购买长航线、低等级舱位票的旅客与一位购买短航线、高等级舱位票的旅客相比,后者对于航空公司而言更有价值。因此这个特征并不适用于航空公司的客户价值分析。

2.2 数据

本案例选择客户在一定时间内累积的飞行里程M和客户在一定时间内乘坐舱位所对应的折扣系数的平均值C两个特征代替消费金额。此外,航空公司会员入会时间的长短在一定程度上能够影响客户价值,所以在模型中增加客户关系长度L,作为区分客户的另一特征。

2.3 分析模型

本案例将客户关系长度L、消费时间间隔R、消费频率F、飞行里程M和折扣系数的平均值C这5个特征作为航空公司识别客户价值的特征,记为LRFMC模型。其特征含义如下:

L:会员入会时间距观测窗口结束的月数
R:客户最近一次乘坐公司飞机距观测窗口结束的月数
F:客户在观测窗口内乘坐公司飞机的次数
M:客户在观测窗口内累计的飞行里程
C:客户在观测窗口内乘坐舱位所对于的折扣系数的平均值

在这里插入图片描述

3 开始分析

3.1 数据预处理

3.1.1 数据预览

略(需要完整代码联系学长获取)

3.1.2 数据清洗

#剔除票价为0,平均折扣率不为0,总飞行公里大于0的记录
data = data[data['SUM_YR_1'].notnull() & data['SUM_YR_2'].notnull()] #票价非空值才保留

#只保留票价非零的,或者平均折扣率与总飞行公里数同时为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] #该规则是“或”

3.2 变量构建

需要构造LRFMC的五个指标的新数据表,并对应属性定义表,得到LRFMC模型的五项指标的计算公式:

L=LOAD_TIME-FFP_DATE(会员入会时间距观测窗口结束的月数=观测窗口的结束时间-入会时间(单位:月))
R=LAST_TO_END(客户最近一次乘坐公司距观测窗口结束的月数=最后一次。。。)
F=FLIGHT_COUNT(观测窗口内的飞行次数)
M=SEG_KM_SUM(观测窗口的总飞行里程)
C=AVG_DISCOUNT(评价折扣率)

# dataTransformed = pd.DataFrame(columns=['L','R','F','M','C'])
tmp = {
    'L':pd.to_datetime(data['LOAD_TIME']) - pd.to_datetime(data['FFP_DATE']), #需要先转化datatime格式,再进行相减
    'R':data['LAST_TO_END'],
    'F':data['FLIGHT_COUNT'],
    'M':data['SEG_KM_SUM'],
    'C':data['avg_discount'],
    }
dataTransformed = pd.DataFrame(data=tmp,columns=['L','R','F','M','C'])
#将timedelta转换成int类型
dataTransformed['L'] = (dataTransformed['L']/np.timedelta64(1,'D')).astype(int)
dataTransformed.head()

3.3 建模分析

客户价值分析模型构建主要分为二个部分:

  • 1.利用K-Means算法进行聚类分析,得到细分的客户群
  • 2.对细分的客户数进行特征分析,得到客户价值分析模型
#找到最好的聚类簇
import matplotlib.pyplot as plt
import seaborn as sns

%matplotlib inline
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

# 从sklearn导入聚类算法函数
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

random_state = 5
score = []
inertia = []
nums=range(2,10)

# 遍历多个可能的候选簇数量
for n_clusters in range(2,10):
    kmeans = KMeans(n_clusters=n_clusters, random_state=random_state)
    kmeans.fit(dataZscore)
    inertia.append(kmeans.inertia_)#衡量模型性能
    score.append(silhouette_score(dataZscore, kmeans.labels_,sample_size=128, metric='euclidean')) #衡量聚类算法的指标

plt.figure(figsize=(10, 6))
# 使用ggplot的绘图风格
plt.style.use('seaborn-darkgrid')
plt.subplot(121)
plt.plot(nums,score)
plt.grid(linestyle=':')
plt.xlabel('K')
plt.ylabel('Score')
plt.title('Performance of K-means')

plt.subplot(122)
plt.plot(nums,inertia)
plt.grid(linestyle=':')
plt.xlabel('K')
plt.ylabel('Inertia')
plt.title('Inertia of K-means')
plt.show()

在这里插入图片描述

客户价值分析

#客户价值雷达图

radar = Radar(init_opts=opts.InitOpts(theme='dark', bg_color='#161627', height='800px', width='1000px'))
radar.add_schema(shape='circle',
                 textstyle_opts=opts.TextStyleOpts(color='rgb(238, 197, 102)'),
                 axisline_opt=opts.LineStyleOpts(is_show=True, color='rgba(238, 197, 102, 1)'),
                 splitline_opt=opts.SplitLineOpts(is_show=True, linestyle_opts=split_line_style),
                 schema=[opts.RadarIndicatorItem(name='ZL',min_=min-0.1, max_=max+0.1),
                         opts.RadarIndicatorItem(name='ZR',min_=min-0.1, max_=max+0.1),
                         opts.RadarIndicatorItem(name='ZF',min_=min-0.1, max_=max+0.1),
                         opts.RadarIndicatorItem(name="ZM",min_=min-0.1, max_=max+0.1),
                         opts.RadarIndicatorItem(name="ZC",min_=min-0.1, max_=max+0.1),
                         ])

radar.add('群体一', customer1, symbol='none',
          label_opts=opts.LabelOpts(is_show=True),
          linestyle_opts=opts.LineStyleOpts(color='#9b47b0', width=1, opacity=0.6),
          areastyle_opts=opts.AreaStyleOpts(color='#9b47b0', opacity=0.1))

radar.add('群体二', customer2, symbol='none',
          label_opts=opts.LabelOpts(is_show=True),
          linestyle_opts=opts.LineStyleOpts(color='#5cb047', width=1, opacity=0.6),
          areastyle_opts=opts.AreaStyleOpts(color='#5cb047', opacity=0.05))

radar.add('群体三', customer3, symbol='none',
          label_opts=opts.LabelOpts(is_show=True),
          linestyle_opts=opts.LineStyleOpts(color='#e1306c', width=1, opacity=0.6),
          areastyle_opts=opts.AreaStyleOpts(color='#e1306c',opacity=0.05))

radar.add('群体四', customer4, symbol='none',
          label_opts=opts.LabelOpts(is_show=True),
          linestyle_opts=opts.LineStyleOpts(color='#f77737', width=1, opacity=0.6),
          areastyle_opts=opts.AreaStyleOpts(color='#f77737',opacity=0.05))

radar.add('群体五', customer5, symbol='none',
          label_opts=opts.LabelOpts(is_show=True),
          linestyle_opts=opts.LineStyleOpts(color='#4285f4', width=1, opacity=0.6),
          areastyle_opts=opts.AreaStyleOpts(color='#4285f4',opacity=0.05))

radar.set_global_opts(legend_opts=opts.LegendOpts(is_show=True, selected_mode='flase', pos_bottom=5),
                      title_opts=opts.TitleOpts(title="客户价值雷达图", pos_left='center',
                                                title_textstyle_opts=opts.TextStyleOpts(font_size=20)))


radar.render_notebook()

在这里插入图片描述

4 数据分析结论

4.1 整体结论

结合业务分析,通过比较各个特征在群间的大小来对某一个群的特征进行评价分析

客户群1在特征C处的值最大,在特征F、M处的值较小,说明客户群2是偏好乘坐高级舱位的客户群;
客户群2在所有特征上的值都较小,且特征L处的值最小,说明客户群1属于新入会员较多的客户群;
客户群3在特征R处值最大,在其他特征处的值都较小,说明客户群5已经很久没有乘坐飞机,是入会时间短的低价值的客
客户群4特征F和M上的值最大,且在特征R上的值最小,说明客户群3的会员频繁乘机且最近都有乘机记录;
客户群5在特征L处的值最大,在特征R处的值最小,其他都比较适中,说明客户群4入会时间长,飞行频率也较高,是有较高价值的客户。
基于以上特征描述,本案例定义4个等级的客户类别

4.2 重要保持客户

这类客户的平均折扣系数(C)较高(一般所乘航班的舱位等级较高),最近乘机距今的时间长度(R)低,飞行次数(F)或总飞行里程(M)较高。他们是航空公司的高价值客户,是最为理想的客户类型,对航空公司的贡献最大,所占比例却较小。航空公司应该优先将资源投放到他们身上,对他们进行差异化管理和一对一营销,提高这类客户的忠诚度与满意度,尽可能延长这类客户的高水平消费。
重要发展客户
这类客户的平均折扣系数(C)较高,最近乘机距今的时间长度(R)低,且飞行次数(F)或总飞行里程(M)较低。这类客户入会时间(L)短,他们是航空公司的潜在价值客户。虽然这类客户的当前价值并不是很高,但却有很大的发展潜力。航空公司要努力促使这类客户增加在本公司的乘机消费和合作伙伴处的消费,也就是增加客户的钱包份额。通过客户价值的提升,加强这类客户的满意度,提高他们转向竞争对手的转移成本,使他们逐渐成为公司的忠诚客户。

4.3 重要挽留客户

这类客户过去所乘航班的平均折扣系数(C)、飞行次数(F)或者总飞行里程(M)较高,但是最近乘机距今的时间长度(R)高或者说乘坐频率变小,客户价值变化的不确定性很高。由于这些客户价值衰退的原因各不相同,所以掌握客户的最新信息、维持与客户的互动就显得尤为重要。航空公司应该根据这些客户的最近消费时间以及消费次数的变化情况推测客户消费的异动状况,并列出客户名单,对其重点联系,采取一定的营销手段,延长客户的生命周期。

4.4 一般客户与低价值客户

这类客户所乘航班的平均折扣系数(C)很低,最近乘机距今的时间长度(R)高,飞行次数(F)或总飞行里程(M)较低,入会时间(L)短。他们是航空公司的一般客户与低价值客户,可能是在航空公司机票打折促销时,才会乘坐本公司航班。
根据每种客户类型的特征,对各类客户群进行客户价值排名.在这里插入图片描述

5 最后

  • 10
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
基于数据挖掘的航空公司客户价值分析主要包括以下步骤: 1. 数据抽取:抽取航空公司2012年4月1日至2014年3月31日的数据。 2. 数据探索分析(EDA):对抽取的数据进行探索分析,包括数据缺失值与异常值的探索分析、数据清洗、特征构建、标准化等操作。 3. 客户分群:基于RFM模型,使用K-means算法进行客户分群。 4. 客户价值分析:针对模型结果得到不同价值客户,采用不同的营销手段,提供定制化服务。 具体步骤如下: 1. 数据抽取:从航空公司2012年4月1日至2014年3月31日的数据中抽取所需数据,包括客户ID、飞行次数、飞行里程、平均折扣率、飞行时间间隔、总票价等信息。 2. 数据探索分析(EDA):对抽取的数据进行探索分析,包括数据缺失值与异常值的探索分析、数据清洗、特征构建、标准化等操作。其中,数据清洗包括去除重复值、填充缺失值、处理异常值等操作;特征构建包括构建RFM模型所需的三个特征:最近一次飞行时间间隔(Recency)、飞行频率(Frequency)和飞行里程(Monetary);标准化则是将数据转换为标准正态分布。 3. 客户分群:基于RFM模型,使用K-means算法进行客户分群。RFM模型是一种基于客户价值分析模型,其中R表示最近一次消费时间间隔,F表示消费频率,M表示消费金额。K-means算法是一种聚类算法,可以将客户分为不同的群体。 4. 客户价值分析:针对模型结果得到不同价值客户,采用不同的营销手段,提供定制化服务。例如,对于高价值客户,可以提供更高档次的服务,如VIP贵宾室、免费机票等;对于低价值客户,可以提供优惠券、积分兑换等服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值