精华内容
下载资源
问答
  • 航空公司客户价值分析
    2022-05-09 00:44:22
    	面对激烈的市场竞争,各航空公司相继推出更优惠的营销模式来吸引客户,并通过建立合理的客户价值评估模型对客户进行分类,分析比较不同客户群体的价值,并制定相应的营销策略,对不同客户群体提供个性化的服务。现某航空公司预实现以下目标:
      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
    
    
    更多相关内容
  • 利用K-means算法对历年航空公司数据进行分析
  • 航空公司客户价值分析完整代码 项目背景:为某航空公司需要以客户为中心,按照客户的需求,在对客户的特点了解上使用不同的营销手段,目的是争取更多新客户,降低客户流失率,降低服务成本,提高业务收入,增加ARPU...
  • 大数据分析技术-航空公司客户价值分析(一)
  • 建立合理的客户价值评估模型,对客户进行分群
  • air_data.csv
  • 航空公司客户价值分析》数据源(第7章).zip 详细文章教程如下:https://blog.csdn.net/Gabrielle_OyO/article/details/111406756 免费开源,欢迎补充
  • 该数据为某航空公司一段时间内有乘机记录的所有客户的形成的历史数据,44个特征,总共62988条记录。
  • 经过整理的航空公司客户价值分析代码与数据集,编程语言为Python。代码涉及到数据预处理与建模的各阶段。建模算法采用的是KMeans算法。
  • python之航空公司客户价值分析 (二)-附件资源
  • 二八定律: 20%的客户,为企业带来约80%的利益。 在竞争激烈的航空市场里,很多航空公司都推出了优惠的 营销方式来吸引更多的客户。...如果分析航空公司客户价值 ,此模型不再适用,存在一些缺陷和不足:
  • ⑴借助航空公司客户数据,对客户进行分类;⑵对不同类的客户类别进行特征分析,比较不同类客户客户价值;⑶从营销角度讲,客户价值分析实际上是一个市场细分问题,解决市场细分问题比较常用的方法是聚类分析;⑷...
  • 1.[航空公司部分数据特征说明及LRFMC模型介绍及K-Means聚类算法介绍](#1) <span id="top"></span> - 2.[开始数据分析](#2) - [数据探索](#2) - [Part Ⅰ:数据预处理](#2.0) - [数据清洗](#2.1) - ...
  • 文档,数据,以及代码应有尽有!解压即可使用,code直接丢到spyder里面,如果不想改路径就想使用,直接解压到桌面上面运行。文档和代码以及数据均是网络上的综合之后,根据本人经验进行修改。
  • 与本人博客https://blog.csdn.net/sinat_38068807/article/details/90703685配套使用,这个压缩包里面有数据分析所用数据源,分析需求文档以及本人编写的代码
  • 基于K-means聚类方法的航空公司客户价值分析.pdf
  • 基于数据挖掘的航空公司客户价值分析.pdf
  • 通过客户分群,区分无价值客户和高价值客户。企业针对不同价值客户制订优化的个性化服务方案,采取不同营销策略,将有限营销资源集中于高价值客户,实现企业利润最大化目标。 一、相关知识点 1.RFM模型: RFM模型...

    前言

    客户关系管理是企业的核心问题。客户关系管理的关键问题是客户分群。通过客户分群,区分无价值客户和高价值客户。企业针对不同价值的客户制订优化的个性化服务方案,采取不同营销策略,将有限营销资源集中于高价值客户,实现企业利润最大化目标。

    一、相关知识点

    1.RFM模型:
    RFM模型是识别客户价值应用最广泛的模型.
    (1) R
    R(Recency)指的是最近一次消费时间与械止时间的间隔。通常情况下,最近一次消费时间与截止时间的间隔越短,客户对即时提供的商品或是服务也最有可能感兴趣。这也是为什么消费时间间隔为 0~6个月的顾客收到的沟通信息多于一年以上的顾客。最近一次消费时间与截止时间的间隔不仅能够为确定促销客户群体提供依据,还能够从中得出企业发展的趋势。如果分析报告显示距离最近一次消费时间很近的客户在增加,则表示该公司是个稳步 上升的公司。反之,距离最近一次消费时问很近的客户越来越少,则说明该公司需要找到问题所在,及时调整营销策略。
    (2) F
    F(Frequency)指顾客在某段时问内所消费的次数。消费频率越高的顾客,也是满意度越高的顾客,其忠诚度越高,顾客价值也就越大。增加顾客购买的次数意味着从竞争对手处抢得市场占有率,赚取营业额。商家需要做的,是通过各种营销方式去不断地刺激顾客消费,提高他们的消费频率,提升店铺的复购率。
    (3) M
    M(Monetarv)指顾客在某段时问内所消费的金额。消费金额越大的顾客,他们的消费能力自然也就越大,这就是所谓 “20%的顾客贡献了 80%的销售额” 的二八法则。而这批顾客也必然是商家在进行营销活动时蛋要特别照顾的群体,尤其是在商家前期资源不足的时候。不过需要注意一点,不论采用哪种营销方式,以不对顾客造成骚扰为大前提,否则营销只会产生负面效果。

    在RFM 模型理论中,最近一次消费时间与截止时间的间隔、消费频率、消费金额是测算容户价值最重要的特征。这了个特征对营销活动具有十分重要的意义。其中,最近次消费时间与截止时间的间隔是最有力的特征。

    2.对于航空客户价值分析的 LRFMC 模型
    在RFM 模型中,消费金额表示在一段时间内客户购买该企业产品金额的总和。由于航空票价受到运输距离、舱位等级等多种因素影响,同样消费金额的不同旅客对航空公司的价值是不同的,比如一位购买长航线、低等级舱位票的旅客与一位购买短航线、高等级舱位票的旅客相比,后者对于航空公司而言价值可能更高。因此这个特征并不适合用于航空公司的客户价值分析。选择客户在一定时间内累积的飞行里程 M 和客户在一定时间内乘坐舱位所对应的折扣系数的平均值 C 两个特征代替消费金额。此外,航空公司会员人会时间的长短在一定程度上能够影响容户价值,所以在模型中增加容户关系长度 L,作为区分客户的另一特征。

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

    二、完整代码

    ##1.预处理航空客户数据
    import numpy as np
    import pandas as pd
    airline_data = pd.read_csv("./data/air_data.csv",
        encoding="gb18030") #导入航空数据
    print('原始数据的形状为:',airline_data.shape)
    ## 去除票价为空的记录
    exp1 = airline_data["SUM_YR_1"].notnull()
    exp2 = airline_data["SUM_YR_2"].notnull()
    exp = exp1 & exp2
    airline_notnull = airline_data.loc[exp,:]
    print('删除缺失记录后数据的形状为:',airline_notnull.shape)
    #只保留票价非零的,或者平均折扣率不为0且总飞行公里数大于0的记录。
    index1 = airline_notnull['SUM_YR_1'] != 0
    index2 = airline_notnull['SUM_YR_2'] != 0
    index3 = (airline_notnull['SEG_KM_SUM']> 0) & \
        (airline_notnull['avg_discount'] != 0)  
    airline = airline_notnull[(index1 | index2) & index3]
    print('删除异常记录后数据的形状为:',airline.shape)
    
    ##2.选取需求特征
    airline_selection = airline[["FFP_DATE","LOAD_TIME",
        "FLIGHT_COUNT","LAST_TO_END",
        "avg_discount","SEG_KM_SUM"]]
    ## 构建L特征
    L = pd.to_datetime(airline_selection["LOAD_TIME"]) - pd.to_datetime(airline_selection["FFP_DATE"]) #计算结果为:数字+空格+days的形式
    L = L.astype("str").str.split().str[0] #要想取出其中的数字可进行操作:先将类型转换为str,然后在进行分割,最后才进行取数
    L = L.astype("int")/30
    ## 合并特征
    airline_features = pd.concat([L,
        airline_selection.iloc[:,2:]],axis = 1) #行合并
    print('构建的LRFMC特征前5行为:\n',airline_features.head())
    #标准化
    from sklearn.preprocessing import StandardScaler
    data = StandardScaler().fit_transform(airline_features)
    np.savez('./tmp/airline_scale.npz',data)
    print('标准化后LRFMC五个特征为:\n',data[:5,:])
    
    ##3.使用K-Means算法进行客户分群
    import numpy as np
    import pandas as pd
    from sklearn.cluster import KMeans #导入kmeans算法
    airline_scale = np.load('./tmp/airline_scale.npz')['arr_0']
    k = 5 ## 确定聚类中心数
    #构建模型
    kmeans_model = KMeans(n_clusters = k,n_jobs=4,random_state=123)
    fit_kmeans = kmeans_model.fit(airline_scale)   #模型训练
    c1=kmeans_model.cluster_centers_ #查看聚类中心
    print('查看聚类中心:\n',c1)
    l1=kmeans_model.labels_ #查看样本的类别标签
    print('查看样本的类别标签:\n',l1)
    #统计不同类别样本的数目
    r1 = pd.Series(kmeans_model.labels_).value_counts()
    print('最终每个类别的数目为:\n',r1)
    # 输出聚类分群的结果
    cluster_center = pd.DataFrame(c1,columns = ['ZL','ZR','ZF','ZM','ZC'])   # 将聚类中心放在数据框中
    cluster_center.index = pd.DataFrame(l1).drop_duplicates().iloc[:,0]  # 将样本类别作为数据框索引
    print(cluster_center)
    
    ##4.客户分群雷达图
    labels = ['ZL','ZR','ZF','ZM','ZC']
    legen = [' customers' + str(i + 1) for i in cluster_center.index]  # 客户群命名,作为雷达图的图例
    lstype = ['-',':','-.','--','-.']
    kinds = list(cluster_center.iloc[:, 0])
    # 由于雷达图要保证数据闭合,因此再添加L列,并转换为 np.ndarray
    cluster_center = pd.concat([cluster_center, cluster_center[['ZR']]], axis=1)
    centers = np.array(cluster_center.iloc[:, 0:])
    # 分割圆周长,并让其闭合
    n = len(labels)
    angle = np.linspace(0, 2 * np.pi, n, endpoint=False)
    angle = np.concatenate((angle, [angle[0]]))
    import matplotlib.pyplot as plt
    # 绘图
    fig = plt.figure(figsize = (8,6))
    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(angle, centers[i], linestyle=lstype[i], linewidth=3, label=kinds[i])
    # 添加属性标签
    ax.set_thetagrids(angle * 180 / np.pi, labels)
    plt.title('Customer Profile Analysis')
    plt.legend(legen)
    plt.show()
    

    在这里插入图片描述
    结合业务分析,通过比较各个特征在群间的大小对某一个群的特征进行评价分析。其中客户群3在特征C处的值最大,在特征F、M处的值较小,说明客户群是偏好乘坐高级舱位的客户群;客户群2在特征F和M上的值最大,且在特征R上的值最小,说明客户群2的会员频繁乘机且近期都有乘机记录;客户群3在特征R处的值最大,在特征L、F、M和C处的值都较小,说明客户群3已经很久没有乘机,是入会时间较短的低价值的客户群;客户群4在所有特征上的值都很小,且在特征L处的值最小,说明客户群4属于新入会会员较多的客户群;客户群5在特征L处的值最大,在特征R处的值较小,其他特征值都比较适中,说明客户群5入会时间较长,飞行频率也较高,是有较高的价值的客户群。

    展开全文
  • 数据分析与挖掘实验报告 内含实验过程,源码,截图和实验小结
  • 数据分析与挖掘实验报告 内含实验过程,源码,截图和实验小结
  • 我的这个项目放在百度网盘了,你可以提取。...datafile = './air_data.csv' # 航空原始数据路径 data = pd.read_csv(datafile, encoding = 'utf-8') #读取原始数据,指定UTF-8编码 二、数据探索分析 #2、数...

    我的这个项目放在百度网盘了,你可以提取。数据表都有。

    链接:https://pan.baidu.com/s/1il9Uzs7xlcEkssIzeiZpfA 
    提取码:ys9e

    一、对于数据的抽取

    #1、数据抽取
    import pandas as pd
    
    datafile = './air_data.csv'  # 航空原始数据路径
    data = pd.read_csv(datafile, encoding = 'utf-8') #读取原始数据,指定UTF-8编码

    二、数据探索分析

    #2、数据探索分析
    import pandas as pd
    
    datafile= './air_data.csv' #航空原始数据,第一行为属性标签
    resultfile = './explore.xls' #数据探索结果表
    data = pd.read_csv(datafile, encoding = 'utf-8') #读取原始数据,指定UTF-8编码
    explore = data.describe(percentiles = [], include = 'all').T #包括对数据的基本描述,percentiles参数是指定计算多少的分位数表(如1/4分位数、中位数等);T是转置,转置后更方便查阅
    explore['null'] = len(data)-explore['count'] #describe()函数自动计算非空值数,需要手动计算空值数
    explore = explore[['null', 'max', 'min']]
    explore.columns = [u'空值数', u'最大值', u'最小值'] #表头重命名
    explore.to_excel(resultfile) #导出结果
    

    三、对于数据的清洗

    import pandas as pd
    datafile = './air_data.csv'  # 航空原始数据路径
    cleanedfile = './data_cleaned.csv'  # 数据清洗后保存的文件路径
    #对数据的清洗
    def data_cleansing(datafile,cleanedfile):
        # 读取数据
        airline_data = pd.read_csv(datafile,encoding = 'utf-8')
        print('原始数据的形状为:',airline_data.shape)
        # 去除票价为空的记录
        airline_notnull = airline_data.loc[airline_data['SUM_YR_1'].notnull() &
                                           airline_data['SUM_YR_2'].notnull(),:]
        print('删除缺失记录后数据的形状为:',airline_notnull.shape)
    
        # 只保留票价非零的,或者平均折扣率不为0且总飞行公里数大于0的记录。
        index1 = airline_notnull['SUM_YR_1'] != 0
        index2 = airline_notnull['SUM_YR_2'] != 0
        # 保留平均折扣率不为0且总飞行公里数大于0的记录。
        index3 = (airline_notnull['SEG_KM_SUM']> 0) & (airline_notnull['avg_discount'] != 0)
        index4 = airline_notnull['AGE'] > 100  # 去除年龄大于100的记录
        airline = airline_notnull[(index1 | index2) & index3 & ~index4]
        print('数据清洗后数据的形状为:',airline.shape)
        airline.to_csv(cleanedfile,index=False, encoding='utf_8_sig')  # 保存清洗后的数据
    if __name__=='__main__':
        data_cleansing(datafile,cleanedfile)
    

     运行结果:

    四、标准化后LRFMC

    import pandas as pd
    from sklearn.preprocessing import StandardScaler
    datafile = './air_data.csv'  # 航空原始数据路径
    cleanedfile = './data_cleaned.csv'  # 数据清洗后保存的文件路径
    inputfile = '../tmp/zscoreddata.xls' #待聚类的数据文件
    
    def data_extraction(cleanedfile, inputfile):
        data = pd.read_csv(cleanedfile, encoding='utf-8')
        # 入会时间 、观察窗口结束时间  最后一次飞行至结束的时长  飞行次数  飞行里程  折扣系数
        data = data[['FFP_DATE', 'LOAD_TIME', 'LAST_TO_END', 'FLIGHT_COUNT', 'SEG_KM_SUM', 'avg_discount']]
        # print(data)
        # print("data 的shape:", data.shape)
        # print("data columns:", data.columns)
        # L、R、F、M和C五个特征的数据
        # 求取L 会员人会时间距观测窗口结束的月数=观测窗口的结束时间一人会时间[单位:月]
        # 计算结束时间和入会时间的差值
        # L= LOAD_TIME—FFP_DATE/30
        # 转换为时间格式
        date = pd.to_datetime(data['LOAD_TIME']) - pd.to_datetime(data['FFP_DATE'])
        # 取出其天数
        date_list = [tmp.days for tmp in date]
        data["date_list"] = date_list
        data["L"] = data["date_list"] / 30
        ## 求 R 客户最近一次乘坐公司飞机距观测窗口结束的月数=最后一次乘机时间至观察窗口末端时长[单位:月]
        # R= LAST_TO_END/30
        data['R'] = data['LAST_TO_END'] / 30
        # F  客户在观测窗口内乘坐公司飞机的次数=观测窗口的飞行次数[单位:次]
        # F = FLIGHT_COUNT
        data['F'] = data['FLIGHT_COUNT']
        # M 客户在观测时间内在公司累计的飞行里程=观测窗口的总飞行公里数[单位:公里]
        # M= SEG_KM_SUM
        data['M'] = data['SEG_KM_SUM']
        # C 客户在观测时间内乘坐舱位所对应的折扣系数的平均值=平均折扣率[单位:无]
        # C= AVG_DISCOUNT
        data['C'] = data['avg_discount']
        # 只提取5个指标的数据
        data = data.iloc[:, -5:]
        # print(data)
        # 标准化数据
        # 调用标准差标准化
        # def stand_sca(data):
        #     """
        #         标准差标准化    x-u/a
        #         :param data: 数据
        #         :return: 标准化后的数据
        #         """
        #     data=(data-data.mean()/data.std())
        #     return data
        # data = stand_sca(data)
        # print("标准化之后的数据", data)
        # 数据标准化
        # 计算出数据的均值和方差
        data = StandardScaler().fit_transform(data)
        # np.savez('../tmp/airline_scale.npz', data)
        print('标准化后LRFMC五个属性为:\n', data[:5, :])
        # 数据写入
        da = pd.DataFrame(data, columns=['L', 'R', 'F', 'M', 'C'])
        print(da)
        da.to_excel(inputfile, index=False, encoding='utf_8_sig')
    
    
    if __name__=='__main__':
        data_extraction(cleanedfile, inputfile)
    

     运行结果:

     五、客户特征分析雷达图

    def show_res(cluster_center):
        '''
        :param center: 聚类中心
        :param data: 5列航空数据
        :return:
        '''
        # 客户分群雷达图
        labels = ['L', 'R', 'F', 'M', 'C']
        legen = ['客户群' + str(i + 1) for i in cluster_center.index]  # 客户群命名,作为雷达图的图例
        lstype = ['-', '--', (0, (3, 5, 1, 5, 1, 5)), ':', '-.']
        kinds = list(cluster_center.iloc[:, 0])
        # 由于雷达图要保证数据闭合,因此再添加L列,并转换为 np.ndarray
        cluster_center = pd.concat([cluster_center, cluster_center[['L']]], axis=1)
        centers = np.array(cluster_center.iloc[:, 0:])
    
        # 分割圆周长,并让其闭合
        n = len(labels)
        angle = np.linspace(0, 2 * np.pi, n, endpoint=False)
        angle = np.concatenate((angle, [angle[0]]))
    
        # 绘图
        fig = plt.figure(figsize=(8, 6))
        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(angle, centers[i], linestyle=lstype[i], linewidth=2, label=kinds[i])
        # 添加属性标签
        ax.set_thetagrids(angle * 180 / np.pi, labels)
        plt.title('客户特征分析雷达图')
        plt.legend(legen)
        plt.show()
        plt.close

    完整代码:

    # 处理缺失值与异常值
    import numpy as np
    import pandas as pd
    from sklearn.cluster import KMeans
    import matplotlib.pyplot as plt
    from sklearn.preprocessing import StandardScaler
    datafile = './air_data.csv'  # 航空原始数据路径
    cleanedfile = './data_cleaned.csv'  # 数据清洗后保存的文件路径
    inputfile = './zscoreddata.xls' #待聚类的数据文件
    outfile = './zscoreddata_1.xls' #聚类后的数据文件
    def data_cleansing(datafile,cleanedfile):
        # 读取数据
        airline_data = pd.read_csv(datafile,encoding = 'utf-8')
        print('原始数据的形状为:',airline_data.shape)
    
        # 去除票价为空的记录
        airline_notnull = airline_data.loc[airline_data['SUM_YR_1'].notnull() &
                                           airline_data['SUM_YR_2'].notnull(),:]
        print('删除缺失记录后数据的形状为:',airline_notnull.shape)
    
        # 只保留票价非零的,或者平均折扣率不为0且总飞行公里数大于0的记录。
        index1 = airline_notnull['SUM_YR_1'] != 0
        index2 = airline_notnull['SUM_YR_2'] != 0
        # 保留平均折扣率不为0且总飞行公里数大于0的记录。
        index3 = (airline_notnull['SEG_KM_SUM']> 0) & (airline_notnull['avg_discount'] != 0)
        index4 = airline_notnull['AGE'] > 100  # 去除年龄大于100的记录
        airline = airline_notnull[(index1 | index2) & index3 & ~index4]
        print('数据清洗后数据的形状为:',airline.shape)
    
        airline.to_csv(cleanedfile,index=False, encoding='utf_8_sig')  # 保存清洗后的数据
    def data_extraction(cleanedfile,inputfile):
        data=pd.read_csv(cleanedfile,encoding='utf-8')
        # 入会时间 、观察窗口结束时间  最后一次飞行至结束的时长  飞行次数  飞行里程  折扣系数
        data = data[['FFP_DATE', 'LOAD_TIME', 'LAST_TO_END', 'FLIGHT_COUNT', 'SEG_KM_SUM', 'avg_discount']]
        # print(data)
        # print("data 的shape:", data.shape)
        # print("data columns:", data.columns)
        # L、R、F、M和C五个特征的数据
        # 求取L 会员人会时间距观测窗口结束的月数=观测窗口的结束时间一人会时间[单位:月]
        # 计算结束时间和入会时间的差值
        # L= LOAD_TIME—FFP_DATE/30
        #转换为时间格式
        date=pd.to_datetime(data['LOAD_TIME'])-pd.to_datetime(data['FFP_DATE'])
        # 取出其天数
        date_list = [tmp.days for tmp in date]
        data["date_list"] = date_list
        data["L"] = data["date_list"] / 30
        ## 求 R 客户最近一次乘坐公司飞机距观测窗口结束的月数=最后一次乘机时间至观察窗口末端时长[单位:月]
        # R= LAST_TO_END/30
        data['R']=data['LAST_TO_END']/30
        # F  客户在观测窗口内乘坐公司飞机的次数=观测窗口的飞行次数[单位:次]
        # F = FLIGHT_COUNT
        data['F']=data['FLIGHT_COUNT']
        # M 客户在观测时间内在公司累计的飞行里程=观测窗口的总飞行公里数[单位:公里]
        # M= SEG_KM_SUM
        data['M']=data['SEG_KM_SUM']
        # C 客户在观测时间内乘坐舱位所对应的折扣系数的平均值=平均折扣率[单位:无]
        # C= AVG_DISCOUNT
        data['C']=data['avg_discount']
        # 只提取5个指标的数据
        data=data.iloc[:,-5:]
        # print(data)
        # 标准化数据
        # 调用标准差标准化
        # def stand_sca(data):
        #     """
        #         标准差标准化    x-u/a
        #         :param data: 数据
        #         :return: 标准化后的数据
        #         """
        #     data=(data-data.mean()/data.std())
        #     return data
        # data = stand_sca(data)
        # print("标准化之后的数据", data)
        # 数据标准化
        # 计算出数据的均值和方差
        data = StandardScaler().fit_transform(data)
        # np.savez('../tmp/airline_scale.npz', data)
        print('标准化后LRFMC五个属性为:\n', data[:5, :])
        #数据写入
        da=pd.DataFrame(data,columns=['L', 'R', 'F', 'M', 'C'])
        print(da)
        da.to_excel(inputfile,index=False, encoding='utf_8_sig')
    
    def show_res(cluster_center):
        '''
        :param center: 聚类中心
        :param data: 5列航空数据
        :return:
        '''
        # 客户分群雷达图
        labels = ['L', 'R', 'F', 'M', 'C']
        legen = ['客户群' + str(i + 1) for i in cluster_center.index]  # 客户群命名,作为雷达图的图例
        lstype = ['-', '--', (0, (3, 5, 1, 5, 1, 5)), ':', '-.']
        kinds = list(cluster_center.iloc[:, 0])
        # 由于雷达图要保证数据闭合,因此再添加L列,并转换为 np.ndarray
        cluster_center = pd.concat([cluster_center, cluster_center[['L']]], axis=1)
        centers = np.array(cluster_center.iloc[:, 0:])
    
        # 分割圆周长,并让其闭合
        n = len(labels)
        angle = np.linspace(0, 2 * np.pi, n, endpoint=False)
        angle = np.concatenate((angle, [angle[0]]))
    
        # 绘图
        fig = plt.figure(figsize=(8, 6))
        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(angle, centers[i], linestyle=lstype[i], linewidth=2, label=kinds[i])
        # 添加属性标签
        ax.set_thetagrids(angle * 180 / np.pi, labels)
        plt.title('客户特征分析雷达图')
        plt.legend(legen)
        plt.show()
        plt.close
    
    if __name__=='__main__':
        data_extraction(cleanedfile,inputfile)
        K=5 #需要聚类的级别数
        #进行K-means聚类
        #确认聚类的类别
        data=pd.read_excel(inputfile,encoding='utf-8',)
        print(data.head())
        # 构建模型,随机种子设为123
        km=KMeans(n_clusters = K,n_jobs=4,random_state=123)
        km.fit(data)    #训练数据
        y_predict = km.predict(data)    #进行预测
        # # #获取聚类中心
        center=km.cluster_centers_
        print('聚类中心为:',center)
        print('预测值:',y_predict)
        kmeans_labels=km.labels_    #样本的类别标签
        print('各个样本的类别标签为:\n',kmeans_labels)
        r1=pd.Series(km.labels_).value_counts() #统计不同类别样本的数目
        print('最终每个类别的数目为:\n',r1)    #输出聚类分群的结果
        # 将聚类中心放在数据框中
        cluster_center=pd.DataFrame(km.cluster_centers_,
                                    columns=['L','R','F','M','C'])
        # 将聚类中心放在数据框中
        cluster_center.index=pd.DataFrame(km.labels_).drop_duplicates().iloc[:,0]
        # 将样本类别作为数据框索引
        # print('111111111111111111111111111111111')
        # print(cluster_center)
        # cluster_center.to_excel(outfile,index=False,encoding='utf_8_sig')
        show_res(cluster_center)
    

    运行结果:

     

    展开全文
  • 航空公司客户价值分析Python源码
  • R语言数据分析与挖掘实战 案例1-航空公司客户价值分析 全部资料 含数据分析软件工具、程序源代码、数据、PPT课件
  • ;1;分析航空公司现状;分析航空公司现状;目前航空公司已积累了大量的会员档案信息和其乘坐航班记录 以2014-03-31为结束时间选取宽度为两年的时间段作为分析观测窗口抽取观测窗口内有乘机记录的...借助航空公司客户数据
  • 大数据分析技术-航空公司客户价值分析(二) 1.复习如何使用python选取构建LRFMC模型需要的特征 2.使用sklearn相关功能模块标准化LRFMC模型的特征 3.使用sklearn的cluster模块提供的kmeans函数对不同客户群体LRMFC...
  • 在竞争激烈的航空市场里,很多航空公司都推出了优惠的营销方式来吸引更多的客户。在此种环境下,如何将公司有限的资源充分利用,提示企业竞争力,为企业带来更多的利益。 广泛用于分析客户价值的是RFM模型,它是...

    目录

    项目背景

    原始数据情况

     挖掘目标

    分析方法与过程

    加载数据

    数据预处理

    构建模型 


    项目背景

    在企业的客户关系管理中,对客户分类,区分不同价值的客户。针对不同价值的客户提供个性化服务方案,采取不同营销策略,将有限营销资源集中于高价值客户,实现企业利润最大化目标。在竞争激烈的航空市场里,很多航空公司都推出了优惠的营销方式来吸引更多的客户。在此种环境下,如何将公司有限的资源充分利用,提示企业竞争力,为企业带来更多的利益。

    广泛用于分析客户价值的是RFM模型,它是通过三个指标(最近消费时间间隔(Recency)、消费频率(Frequency)、消费金额(Monetary))来进行客户细分,识别出高价值的客户。如果分析航空公司客户价值,此模型不再适用,存在一些缺陷和不足:

    一:在模型中,消费金额表示在一段时间内,客业产品金额的总和。因航空票价受到运输距离、舱位等级等多种因素影响,同样消费金额的不同旅客对航空公司的价值是不同的。因此这个指标并不适合用于航空公司的客户价值分析。

    二:传统模型分析是利用属性分箱方法进行分析如图,但是此方法细分的客户群太多,需要一一识别客户特征和行为,提高了针对性营销的成本。

     

    原始数据情况

     挖掘目标

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

    分析方法与过程

    初步分析:提出适用航空公司的LRFMC模型

            因消费金额指标在航空公司中不适用,故选择客户在一定时间内累积的飞行里程M 和客户乘坐舱位折扣系数的平均值 C 两个指标代替消费金额。此外,考虑航空公司会员加入时间在一定程度上能够影响客户价值,所以在模型中增加客户关系长度 L ,作为区分客户的另一指标,因此构建出 LRFMC 模型。
            采用聚类的方法对客户进行细分,并分析每个客户群的特征,识别其客户价值
    总体流程:

     

    加载数据

    # 导包
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from sklearn.cluster import KMeans
    from sklearn import preprocessing
    import warnings
    warnings.filterwarnings('ignore') # 忽略警告
    plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示
    plt.rcParams['axes.unicode_minus'] = False   #解决符号无法显示
    
    data = pd.read_csv('air_data.csv', sep=',')
    data.shape
    (62988, 44)

     

    数据预处理

    1. 数据清洗:从业务以及建模的相关需要方面考虑,筛选出需要的数据
    a) 丢弃票价为空的数据。
    b) 丢弃票价为 0 、平均折扣率不为 0 、总飞行公里数大于 0 的数据。

    # 删除缺失值
    data = data.dropna().reset_index(drop=True)
    data.shape
    (58255, 44)
    
    # 删除票价为0、平均折扣率不为0、总飞行公里数大于0的数据
    t1 = data['SUM_YR_1']==0
    t2 = data['SUM_YR_2']==0
    t3 = data['avg_discount']>0
    t4 = data['SEG_KM_SUM']>0
    tt = []
    for f in range(len(t1)):
        if t1[f] & t2[f] & t3[f] & t4[f]==True :
           tt.append(f) 
    data = data.drop(tt,axis=0) 
    data = data.reset_index(drop = True)
    data.shape
    (58022, 44)
    2. 属性规约:原始数据中属性太多,根据 LRFMC 模型,选择与其相关的六个属性,删除不相关、弱相关或冗余的属性。
    # 取出我们要分析的列数据
    data1 = data[['LOAD_TIME','FFP_DATE','LAST_TO_END','FLIGHT_COUNT','SEG_KM_SUM','avg_discount']]
    data1

     

    3. 数据变换
    a) 属性构造
    b) 数据标准化

    L = LOAD_TIME - FFP_DATE

    会员入会时间距观测窗口结束的月数 = 观测窗口的结束时间 - 入会时间[单位:月

    R = LAST_TO_END

    客户最近一次乘坐公司飞机距观测窗口结束的月数 = 最后一次乘机时间至观察窗口末端时长[单位:月]

    F = FLIGHT_COUNT

    客户在观测窗口内乘坐公司飞机的次数 = 观测窗口的飞行次数[单位:次]

    M = SEG_KM_SUM

    客户在观测时间内在公司累计的飞行里程 = 观测窗口总飞行公里数[单位:公里]

    C = AVG_DISCOUNT

    客户在观测时间内乘坐舱位所对应的折扣系数的平均值 = 平均折扣率[单位:无]

     

    # 会员入会时间距观测窗口结束的月数 = 观测窗口的结束时间 - 入会时间
    m = (pd.to_datetime(data1['LOAD_TIME'])-pd.to_datetime(data1['FFP_DATE']))//30
    data1['L']=m.dt.days
    # 再取出我们最终模型需要的列数据
    data2 = data1[['L','LAST_TO_END','FLIGHT_COUNT','SEG_KM_SUM','avg_discount']]
    # 更换列名
    data2 = data2.rename(columns={'L': 'ZL', 'LAST_TO_END': 'ZR','FLIGHT_COUNT':'ZF','SEG_KM_SUM':'ZM','avg_discount':'ZC'})

    标准化处理

    # 标准化处理
    std_scale = preprocessing.StandardScaler().fit(data2[["ZL","ZR","ZF","ZM","ZC"]])
    df_std = std_scale.transform(data2[["ZL","ZR","ZF","ZM","ZC"]])
    df_data=pd.DataFrame(df_std)
    df_data.columns=list(data2.columns)
    df_data

    构建模型 

    1. 构建航空客户价值分析模型
    a) 客户 K-Means 聚类
    b) 客户价值分析
    c) 模型应用

    类别 

    ZL

    ZR

    ZF

    ZM

    ZC

    类别数目

    0

    -0.082462

    0.009038

    -0.268082

    -0.289714

    1.903063

    5032

    1

    0.514653

    -0.796162

    2.48131

    2.42854

    0.3318

    5023

    2

    -0.690163

    -0.418629

    -0.158749

    -0.155184

    -0.298378

    22570

    3

    1.186869

    -0.374691

    -0.080945

    -0.086677

    -0.14956

    14373

    4

    -0.330789

    1.704202

    -0.577257

    -0.543217

    -0.210726

    11024

     

    1. 客户 K-Means 聚类

    采用K-Means聚类算法对客户数据进行分群,将其聚成五类(需要结合业务的理解与分析来确定客户的类别数量)

    # 聚类
    model = KMeans(n_clusters=5) # 构造聚类器
    model.fit(df_std) # 聚类
    label_pred = model.labels_ # 获取聚类标签
    r1 = pd.Series(model.labels_).value_counts() # 统计各类的个数
    r2 = pd.DataFrame(model.cluster_centers_)  # 获取聚类中心
    r = pd.concat([r2,r1],axis=1) # 合并
    r.columns = list(data2.columns) + ['类别数目']  # 加上列名
    r

     

    r3 = pd.concat([df_data,pd.Series(model.labels_,index=df_data.index)],axis=1) # 给df_data加上一列按照df_data索引,标签为值值的列
    r3.columns = list(data2.columns) + ['聚类类别'] # 加列名
    r3

     

    2. 客户价值分析
    # 根据r2绘制雷达图
    labels = np.array(['ZL','ZR','ZF','ZM','ZC'])
    labels = np.concatenate((labels,[labels[0]]))
    
    N = len(r2)
    angles = np.linspace(0, 2 * np.pi, N, endpoint=False)
    data = pd.concat([r2,r2.loc[:,0]],axis=1)
    angles = np.concatenate((angles, [angles[0]]))
    fig = plt.figure(figsize=(8,8)) 
    ax = fig.add_subplot(111, polar=True)    # 参数polar, 以极坐标的形式绘制图形
    # 画线
    j=0
    for i in range(0,5):
        j=i+1
        ax.plot(angles,data.loc[i,:],'o-',label="客户群"+str(j))
    # 添加属性标签
    ax.set_thetagrids(angles*180/np.pi,labels) 
    plt.title(u'客户特征雷达图')
    plt.legend(loc='lower right')
    plt.show()

     对聚类结果进行特征分析,其中客户群3FM属性最大,在R属性最小;客户群5L属性上最大;客户群4R属性上最大,在FM属性最小;客户群1LC属性上最小;客户群2C属性上最大。

    根据业务定义五个等级的客户类别:重要保持客户、重要发展客户、重要挽留客户、一般客户、低价值客户。

     客户群价值排名:根据每种客户类型的特征,对各类客户群行客户价值排名,获取高价值客户信息。

    客户群

    排名

    排名意义

    客户群3

    1

    重要保持客户

    客户群5

    2

    重要发展客户

    客户群2

    3

    重要挽留客户

    客户群1

    4

    一般客户

    客户群4

    5

    低价值客户

    3. 模型应用:根据各个客户群的特征,可采取一些营销手段和策略。
    a) 会员的升级与保级。
    b) 首次兑换。
    c) 交叉销售。

     

    展开全文
  • 航空公司客户价值分析完整版

    千次阅读 2021-07-15 19:15:02
    航空公司客户价值分析 +++ 1、了解航空公司现状与客户价值分析 1、行业内竞争 民航的竞争除了三大航空公司之间的竞争之外,还将加入新崛起的各类小型航空公司、民营航空公司,甚至国外航空巨头。航空产品生产过剩...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,603
精华内容 3,841
关键字:

航空公司客户价值分析