面对激烈的市场竞争,各航空公司相继推出更优惠的营销模式来吸引客户,并通过建立合理的客户价值评估模型对客户进行分类,分析比较不同客户群体的价值,并制定相应的营销策略,对不同客户群体提供个性化的服务。现某航空公司预实现以下目标:1、借助航空公司客户数据,对客户进行分类。2、对不同的客户类别进行特征分析,比较不同的客户价值。3、针对不同价值的客户类别制定相应的营销策略,为其提供个性化服务。面对庞大的原始航空公司客户数据,其分析思路主要是以下几点:①数据探索:对数据分布情况进行探索,本文主要从客户基本信息,乘机信息,积分信息三个方面进行探索来查看数据的分布情况。其中包括客户入会时间分布、会员年龄、会员性别分布、会员级别分布、最后一次乘机时间及时长、飞行次数、总飞行里程、积分兑换次数、总累计积分等角度。②相关分析:对选取的关键指标进行相关分析,通过系数矩阵和热力图来展现各变量之间的相关关系。③数据清洗:选取关键指标建立数据集,并对数据集进行数据清洗。④基于RFM模型(本文将模型延伸至LRFMC模型)对分层关键指标进行选取,建立LRFMC指标数据集。⑤基于K-Means模型对客户进行分层(对于无监督学习,K均值的难点在于K的选取,需要用多个K值来进行验证,如通过SSE值得观察和实际分布情况确定合适的K值)。⑥价值分析和策略制定。

学习过程的代码如下:

import pandas as pd
path=r"D:\Z_数据\study\航空公司客户价值分析数据\air_data.csv"
data=pd.read_csv(path,encoding = 'utf-8')  # 指定UTF-8编码(需要用文本编辑器将数据装换为UTF-8编码)
data_column=[column for column in data]   # 查看所有列名
data.head()
data_describe=data.describe().T           # 查看各列数据describe信息
data_describe["null"]=len(data)-data_describe["count"]  # 计算各字段空值个数
data_describe[data_describe["null"]!=0]   # 查看缺失值不为0的列
describe_result=data_describe[["mean","min","max","null"]]  # 选取部分字段信息(列名是索引)# describe_result.columns=[u'平均值',u'最小值',u'最大值',u'空值'] # 修改列名1
describe_result.rename(columns={'mean':'平均值','min':'最小值','max':'最大值', \'null':'空值'},inplace=True) #修改列名2
describe_result=round(describe_result,2)
#describe_result.to_excel(r"D:\Z_数据\study\航空公司客户价值分析数据\describe_result.xlsx")
'''---以上为数据探索部分(描述性统计分析)'''# 提取会员入会年份
from datetime import datetime as dt
ffp=data["FFP_DATE"].apply(lambda x: dt.strptime(x,'%Y/%m/%d'))
ffp_year=ffp.map(lambda x: x.year)
# 绘制各年份会员入会人数直方图
import matplotlib.pyplot as plt
fig = plt.figure(figsize = (8 ,5))  # 设置画布大小
plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
plt.hist(ffp_year, bins='auto', color='#0504aa')
plt.xlabel('年份')
plt.ylabel('入会人数')
plt.title('各年份会员入会人数')
plt.show()
# 提取会员不同性别人数
female,male=data["GENDER"].groupby(data["GENDER"]).count()
'''或通过性别分别统计
male = pd.value_counts(data['GENDER'])['男']
female = pd.value_counts(data['GENDER'])['女']
'''
# 绘制会员性别比例饼图
fig = plt.figure(figsize = (8 ,4))  # 设置画布大小
plt.pie([ male, female], labels=['男','女'], colors=['blue', 'orange'],autopct='%1.1f%%')
plt.title('会员性别比例')
plt.show()
plt.close
# 提取不同级别会员人数
lv_4,lv_5,lv_6=data["FFP_TIER"].groupby(data["FFP_TIER"]).count()
nums=[lv_4,lv_5,lv_6]
x=range(0,len(nums))
# 绘制会员各级别人数条形图
fig = plt.figure(figsize = (8 ,5))  # 设置画布大小
plt.bar(x=['4','5','6'], height=[lv_4,lv_5,lv_6], width=0.4, alpha=0.8, color='skyblue')
# plt.text()添加数据标签
for a, b in zip(x, nums):plt.text(a, b + 2, b, ha='center', va='bottom')
plt.xlabel('会员等级')
plt.ylabel('会员人数')
plt.title('会员各级别人数')
plt.show()
plt.close()
# 提取会员年龄
age=data["AGE"].dropna().astype(int)  # 去除缺失值并修改为整数类型
# 绘制会员年龄分布箱型图
fig = plt.figure(figsize = (5 ,10))
plt.boxplot(age, patch_artist=True,labels = ['会员年龄'],  # 设置x轴标题boxprops = {'facecolor':'lightblue'})  # 设置填充颜色
plt.title('会员年龄分布箱线图')# 显示y坐标轴的底线
plt.grid(axis='y')
plt.show()
plt.close# 乘机信息类别
lte = data['LAST_TO_END']
fc = data['FLIGHT_COUNT']
sks = data['SEG_KM_SUM']
# 绘制最后乘机至结束时长箱线图
fig = plt.figure(figsize = (5 ,8))
plt.boxplot(lte, patch_artist=True,labels = ['时长'],  # 设置x轴标题boxprops = {'facecolor':'lightblue'})  # 设置填充颜色
plt.title('会员最后乘机至结束时长分布箱线图')# 显示y坐标轴的底线
plt.grid(axis='y')
plt.show()
plt.close
# 绘制客户飞行次数箱线图
fig = plt.figure(figsize = (5 ,8))
plt.boxplot(fc, patch_artist=True,labels = ['飞行次数'],  # 设置x轴标题boxprops = {'facecolor':'lightblue'})  # 设置填充颜色
plt.title('会员飞行次数分布箱线图')# 显示y坐标轴的底线
plt.grid(axis='y')
plt.show()
plt.close# 绘制客户总飞行公里数箱线图
fig = plt.figure(figsize = (5 ,10))
plt.boxplot(sks, patch_artist=True,labels = ['总飞行公里数'],  # 设置x轴标题boxprops = {'facecolor':'lightblue'})  # 设置填充颜色
plt.title('客户总飞行公里数箱线图')# 显示y坐标轴的底线
plt.grid(axis='y')
plt.show()
plt.close# 积分信息类别# 提取会员积分兑换次数
ec = data['EXCHANGE_COUNT']
ec.groupby(ec<10).count()/ec.count()# 绘制会员兑换积分次数直方图
fig = plt.figure(figsize = (8 ,5))  # 设置画布大小
plt.hist(ec, bins=5, color='#0504aa')
plt.xlabel('兑换次数')
plt.ylabel('会员人数')
plt.title('会员兑换积分次数分布直方图')
plt.show()
plt.close# 提取会员总累计积分
ps = data['Points_Sum']
ps.groupby(ps).count()# 绘制会员总累计积分箱线图
fig = plt.figure(figsize = (5 ,8))
plt.boxplot(ps, patch_artist=True,labels = ['总累计积分'],  # 设置x轴标题boxprops = {'facecolor':'lightblue'})  # 设置填充颜色
plt.title('客户总累计积分箱线图')# 显示y坐标轴的底线
plt.grid(axis='y')
plt.show()
plt.close'''相关性分析'''# 提取属性并合并为新数据集
da_corr = data[['FFP_TIER','FLIGHT_COUNT','LAST_TO_END','SEG_KM_SUM','EXCHANGE_COUNT','Points_Sum']]
age1 = data['AGE'].fillna(0)  # 用0填补年龄缺失值
da_corr['AGE'] = age1.astype(int)
da_corr['ffp_year'] = ffp_year# 计算相关性矩阵
corr = da_corr.corr(method = 'pearson')# 绘制热力图
import seaborn as sns
plt.subplots(figsize=(10, 10)) # 设置画面大小
sns.heatmap(corr, annot=True, vmax=1, square=True, cmap='Blues')
plt.show()
plt.close# 数据清洗# 剔除票价为空的数据
sum_YR_notnull=data.loc[data["SUM_YR_1"].notnull() & data["SUM_YR_2"].notnull(),:]
sum_YR_notnull.shape#保留票价为非0,或者平均折扣率不为0且总飞行公里数大于0的记录
condition1= sum_YR_notnull["SUM_YR_1"] !=0
condition2= sum_YR_notnull["SUM_YR_2"] !=0
condition3= (sum_YR_notnull["avg_discount"] !=0) & (sum_YR_notnull["SEG_KM_SUM"]>0)
condition4= sum_YR_notnull["AGE"]>100 # 要剔除年龄在100岁以上的数据
airline= sum_YR_notnull[((condition1 | condition2) | condition3) & ~condition4]
airline.shape# 保存清洗后的数据(编码格式写为utf_8_sig)
#airline.to_csv(r"D:\Z_数据\study\航空公司客户价值分析数据\air_clean.csv",encoding="utf_8_sig")# RFM模型衍生(结合实际业务问题将模型指标衍生)
# ----本文采用影响客户价值的会员入会时长(L)、最近一次时间间隔(R)、乘坐次数(F)、累计飞行里程(M)、平均折扣系数(C)
airline_select= airline[['FFP_DATE','LOAD_TIME','LAST_TO_END','FLIGHT_COUNT','SEG_KM_SUM','avg_discount']]
L_days=pd.to_datetime(airline_select["LOAD_TIME"])-pd.to_datetime(airline_select["FFP_DATE"])
L=((L_days.astype("str").str.split(" ").str[0].astype("int"))/30).round(2)#合并数据提取5个核心指标
airline_con=pd.concat([L,airline_select.iloc[:,2:]],axis=1)
airline_con.columns = ['L','R','F','M','C']#数据标准化
from sklearn.preprocessing import StandardScaler as SS
data = SS().fit_transform(airline_con)
data_frame=pd.DataFrame(data)
data_frame.columns=['ZL','ZR','ZF','ZM','ZC']
#data_frame.to_excel(r'D:\Z_数据\study\航空公司客户价值分析数据\标准化后数据数据表.xlsx')
'''或者直接以np数组导出数据
import numpy as np
np.savez(r'D:\Z_数据\study\航空公司客户价值分析数据\标准化后数据.npz',data)
'''# K-Means聚类
import numpy as np
from sklearn.cluster import KMeans  # 导入kmeans算法
airline_data = np.load('D:\Z_数据\study\航空公司客户价值分析数据\标准化后数据.npz')['arr_0']# 构建模型(设置一个随机种子)
k=5
k_model=KMeans(n_clusters = k,random_state=1) #n_clusters表示聚类中心数,具体数量应根据实际业务确定
k_fit = k_model.fit(airline_data)  # 模型训练# 查看聚类结果
k_center = k_model.cluster_centers_  # 聚类中心
k_sign = k_model.labels_  # 各样本对应的类别标签
k_count = pd.Series(k_sign).value_counts()  # 统计不同类别样本的数目# 输出分群的结果
k_result=pd.DataFrame(k_center,columns=['ZL','ZR','ZF','ZM','ZC'])
k_result.index=pd.DataFrame(k_sign).drop_duplicates().iloc[:,0]   #将样本类别作为数据框的索引
# k_result.to_excel(r"D:\Z_数据\study\航空公司客户价值分析数据\k_result.xlsx")# 画雷达图展示分类结果
import matplotlib.pyplot as plt
legen = ['客户群' + str(i + 1) for i in k_result.index]  # 客户群命名,作为雷达图的图例
k_results=pd.concat([k_result,k_result[["ZL"]]],axis=1)
results=np.array(k_results)
kinds = list(k_results.iloc[:, 0])
label=['ZL','ZR','ZF','ZM','ZC']
angles=np.linspace(0,2*np.pi,len(label),endpoint=False)
angles=np.concatenate((angles,[angles[0]]))
fig=plt.figure(figsize=(9,9))
ax=fig.add_subplot(111,polar=True)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
for i in range(len(kinds)):ax.plot(angles,results[i],linewidth=3)
# 添加属性标签
ax.set_thetagrids(angles* 180/np.pi,labels=label+[label[0]])
plt.title('客户特征分析雷达图')
plt.legend(legen)
plt.show()
plt.close

航空公司客户价值分析笔记相关推荐

  1. python客户价值分析_Python数据分析与应用航空公司客户价值分析.ppt

    Python数据分析与应用航空公司客户价值分析.ppt 大数据,成就未来 * 大数据挖掘专家 * 大数据挖掘专家 大数据,成就未来 航空公司客户价值分析 * 目录 分析航空公司现状 1. 行业内竞争 ...

  2. 数据分析与挖掘实战-航空公司客户价值分析

    航空公司客户价值分析 项目背景 信息时代的到来注定营销焦点从产品中心转到了用户中心,客户关系管理成为企业的核心问题. 客户关系管理的关键问题则是客户分类,通过分类区分客户价值的有无和高低,针对不同类别 ...

  3. python客户价值分析_航空公司客户价值分析实例

    第8章 航空公司客户价值分析 传统的识别客户价值应用最广泛的模型主要通过3个指标(最近消费时间间隔(Recency).消费频率(Frequency)和消费金额(Monetary))来进行客户细分,识别 ...

  4. Python数据挖掘:利用聚类算法进行航空公司客户价值分析

    无小意丶 个人博客地址:无小意 知乎主页:无小意丶 公众号: 数据路(shuju_lu) 刚刚开始写博客,希望能保持关注,会继续努力. 以数据相关为主,互联网为辅进行文章发布. 本文是<Pyth ...

  5. 数据分析实战:航空公司客户价值分析

    一.背景目标 通过对航空公司客户数据分析,对客户进行分类: 比较不同客户的客户价值,并制定不同的服务和营销策略 二.数据探索分析 2.1 数据概况 数据时间范围: 2012年4月1日至2014年3月3 ...

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

    文章目录 0 前言 1 数据分析背景 2 分析策略 2.1 航空公司客户价值分析的LRFMC模型 2.2 数据 2.3 分析模型 3 开始分析 3.1 数据预处理 3.1.1 数据预览 3.1.2 数 ...

  7. 【毕业设计】大数据分析的航空公司客户价值分析 - python

    文章目录 0 前言 1 数据分析背景 2 分析策略 2.1 航空公司客户价值分析的LRFMC模型 2.2 数据 2.3 分析模型 3 开始分析 3.1 数据预处理 3.1.1 数据预览 3.1.2 数 ...

  8. 基于机器学习的航空公司客户价值分析与流失预测

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目背景 面对激烈的市场竞争,各个航空公司相继推出了更优惠的营销方式来吸引更多的客户,国内某航空公司面临着常旅 ...

  9. 航空公司客户价值分析python实战

    航空公司客户价值分析(K_Means聚类分析) 最近在看黄红梅.张良均老师主编的<Python数据分析与应用>,拿书里的案例练练手. 本案例将使用航空公司客户数据,结合RFM模型,采用K_ ...

最新文章

  1. 用devc++表白_教你用C语言加图形库打造炫酷表白连连看
  2. c语言建立栈(顺序栈、双栈和链式栈)
  3. 2018年 第9届 蓝桥杯 Java B组 省赛真题详解及总结
  4. css hot loader,解决安装react-hot-loader后修改css/less文件不会热更新问题
  5. HTML DOM之标签操作方法
  6. Python获取代理IP地址
  7. java 文件crc校验_Java 对文件进行 CRC32 校验
  8. 二十六岁,博士考入团中央选调生,前途如何?
  9. Partition List,拆分链表
  10. 麒麟LINUX(飞腾ARM)更新软件源
  11. 一分钟电脑自动关机的代码
  12. 【转载】红外遥控HS0038B接法
  13. ubuntu_linux命令TX2学习总结
  14. 2019年中国计算机学会(CCF)推荐国际学术会议-计算机网络(2019.04.25)
  15. EDA实验(3)计数器设计
  16. linux根目录不足,追加空间到根目录
  17. 一个故事带你看透HTTPS(上)
  18. 【采集项目-(4)业务数据采集】
  19. 查看Linux版本,内核等信息
  20. k8s篇-Pod健康检测

热门文章

  1. 【Java后端认证答辩、面试题】
  2. sas统计分析学习笔记(九)——方差分析
  3. 仿bilibili导航条毛玻璃效果
  4. 将大量有规律txt文本数据转换成xml格式,在导入excel,生成excel文件,在导入spass中,对数据进行分析
  5. Echarts+DataV.GeoAtlas地理小工具实现地图及其注意事项
  6. 物联网时代的产品经理必修课
  7. 酷安App V2 Token(X-App-Token)逆向分析(最新版12.4.2)
  8. 连续时间单位冲激信号δ(t)的基本性质
  9. 勿忘初心,保持饥渴的心态
  10. win10计算机睡眠怎么设置密码,win10系统如何配置唤醒密码?windows10设置唤醒密码的方法...