一、实现目标
(1)借助航空公司客户数据航空数据分析,对客户进行分类
(2)对不同的客户进行特征分析,比较不同类客户的客户价值
(3)对不同价值的客户类别提供个性化服务,指定相应的营销策略
二、分析方法
LRFMC模型指标含义:
(1) L:会员入会时间距观测窗口结束的月数。
(2) R:客户最近一次乘坐公司飞机距离观测窗口结束的月数。
(3) F:客户在观测窗口内乘坐公司飞机的次数。
(4) M:客户在观测窗口内累计的飞行里程碑。
(5) C:客户在观测窗口内乘坐仓位所对应的折扣系数的平均值。
方法:本案例采用聚类的方法,通过对航空公司客户价值的LRFMC模型的五个指标进行K-Means聚类,识别客户价值。
总体流程:数据抽取->数据预处理(数据清洗(缺失值填补舍弃等),属性规约(提取需要特征数据),数据变换(转换适当格式))->建模->结果
分析过程数据抽取
# -*- coding:utf-8 -*-
#对数据进行基本的探索,返回缺失值个数,最大值,最小值
import pandas as pd
#数据文件路径初始化
datafile = 'air_data.csv' #第一行为标签属性
#定义数据探索结果文件名
resultfile = 'data_explore.xls'
#使用pandas模块内置函数对文件内容进行读取
data = pd.read_csv(datafile,encoding = 'utf-8') #设置文件读取编码格式
#获取数据的相应属性内容
explore = data.describe(percentiles=[], include='all').T #对探索结果矩阵进行转置
#计算数据结果中的空值个数,describe()函数只返回有值数据个数
explore['null'] = len(data) - explore['count']
#提取数据探索结果中的null、min、max三列,并且对数据表表头进行重命名
explore = explore[['null','max','min']]
print('explore:',explore)
print('explore.columns:',explore.columns)
explore.columns = [u'空值数',u'最大值',u'最小值']
print('u-explore:',explore)
#将数据探索的最后结果写入文件中
explore.to_excel(resultfile)
数据预处理
内容:数据清洗、属性规约、数据变换
# -*- coding:utf-8 -*-
#清洗丢弃掉不符合规则的数据
import pandas as pd
datafile = 'air_data.csv'
cleanfile = 'data_clean.csv'
#读取文件内容,并设置读取的编码格式
data = pd.read_csv(datafile,encoding = 'utf-8')
#去掉票价为0的记录
data = data[data['SUM_YR_1'].notnull()]
data = data[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]
#将数据整合至data变量中
data = data[index1|index2|index3]
data.to_csv(cleanfile)
# 属性规约:去掉不相管的属性,只留下与LRFMC模型相关的属性
# FFP_DATE 入会时间
# LOAD_TIME 观测窗口结束时间
# FLIGHT_COUNT 飞行频率
# avg_discount 平均折扣
# SEG_KM_SUM 观测窗口总飞行公里数
# LAST_TO_END 最后一次乘机时间至观察窗口末端时长
data = data[['FFP_DATE','LOAD_TIME', 'FLIGHT_COUNT', 'avg_discount', 'SEG_KM_SUM','LAST_TO_END']]
cleanfile = 'D:/my_project/Airline_customer_value/cleanfile.csv'
data.to_csv(cleanfile)
#数据变化的LRFMC数据:
#L = LOAD_TIME - FFP_DATE (观测窗口时间 - 入会时间)
#R = LOAD_TIME - LAST_TO_END (观测窗口时间 - 最后一次乘机时间)
#F = FLIGHT_COUNT
#M = SEG_KM_SUM
#C = avg_discount
from datetime import datetime
import time
def normal_time(date):
return datetime.strptime(date, '%Y/%m/%d')
def interval_time(dd):
#计算时间间隔,以月为单位
return dd.days / 30
# data_LRFMC数据
data_LRFMC = pd.DataFrame()
# data_LRFMC.columns = ['L', 'R', 'F','M', 'C']
data_LRFMC['L'] = (data['LOAD_TIME'].apply(normal_time) -data['FFP_DATE'].apply(normal_time)).apply(interval_time)
data_LRFMC['R'] = data['LAST_TO_END']
data_LRFMC['F'] = data['FLIGHT_COUNT']
data_LRFMC['M'] = data['SEG_KM_SUM']
data_LRFMC['C'] = data['avg_discount']
# 显示数据的描述,最大值和最小值
data_LRFMC_describe = data_LRFMC.describe().T
data_LRFMC_describe = data_LRFMC_describe[['max','min']].T
data_LRFMC.to_csv('D:/my_project/Airline_customer_value/LRFMC.csv') #数据写入文件
#注意到所有的数据值,最大值和最小值间隔较大,需要对数据进行标准化
# 标准化、重命名、写入文件
data_normal = (data_LRFMC-d
试看结束,如继续查看请付费↓↓↓↓
打赏0.5元才能查看本内容,立即打赏
来源【首席数据官】,更多内容/合作请关注「辉声辉语」公众号,送10G营销资料!
版权声明:本文内容来源互联网整理,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 jkhui22@126.com举报,一经查实,本站将立刻删除。